diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2015-01-26 19:24:59 +0100 |
---|---|---|
committer | Oleg Gaidarenko <markelog@gmail.com> | 2015-02-15 01:14:41 +0300 |
commit | 2d5c5d213f09fa0205d07a2d60a36581058cc40a (patch) | |
tree | 6e475a93cc35053d9ce947b5b65424c0d6e4c75f /external/qunit | |
parent | 0c466438d1feaec302fec13eafeeb063bbfd6a19 (diff) | |
download | jquery-2d5c5d213f09fa0205d07a2d60a36581058cc40a.tar.gz jquery-2d5c5d213f09fa0205d07a2d60a36581058cc40a.zip |
Build: Update QUnit to latest (1.17.1)
Closes gh-2038
Diffstat (limited to 'external/qunit')
-rw-r--r-- | external/qunit/LICENSE.txt | 3 | ||||
-rw-r--r-- | external/qunit/qunit.css | 26 | ||||
-rw-r--r-- | external/qunit/qunit.js | 178 |
3 files changed, 139 insertions, 68 deletions
diff --git a/external/qunit/LICENSE.txt b/external/qunit/LICENSE.txt index c22db4d8f..fb928a543 100644 --- a/external/qunit/LICENSE.txt +++ b/external/qunit/LICENSE.txt @@ -1,5 +1,4 @@ -Copyright 2006, 2014 jQuery Foundation and other contributors, -https://jquery.org/ +Copyright jQuery Foundation and other contributors, https://jquery.org/ This software consists of voluntary contributions made by many individuals. For exact contribution history, see the revision history diff --git a/external/qunit/qunit.css b/external/qunit/qunit.css index 385a1ce09..0eb0b0171 100644 --- a/external/qunit/qunit.css +++ b/external/qunit/qunit.css @@ -1,12 +1,12 @@ /*! - * QUnit 1.16.0 + * QUnit 1.17.1 * http://qunitjs.com/ * - * Copyright 2006, 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * - * Date: 2014-12-03T16:32Z + * Date: 2015-01-20T19:39Z */ /** Font Family and Sizes */ @@ -77,6 +77,18 @@ #qunit-modulefilter-container { float: right; + padding: 0.2em; +} + +.qunit-url-config { + display: inline-block; + padding: 0.1em; +} + +.qunit-filter { + display: block; + float: right; + margin-left: 1em; } /** Tests: Pass/Fail */ @@ -95,11 +107,15 @@ display: none; } -#qunit-tests li.pass, #qunit-tests li.running, #qunit-tests li.fail { +#qunit-tests li.running, +#qunit-tests li.pass, +#qunit-tests li.fail, +#qunit-tests li.skipped { display: list-item; } -#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running { +#qunit-tests.hidepass li.running, +#qunit-tests.hidepass li.pass { display: none; } diff --git a/external/qunit/qunit.js b/external/qunit/qunit.js index 82020d40d..006ca4747 100644 --- a/external/qunit/qunit.js +++ b/external/qunit/qunit.js @@ -1,12 +1,12 @@ /*! - * QUnit 1.16.0 + * QUnit 1.17.1 * http://qunitjs.com/ * - * Copyright 2006, 2014 jQuery Foundation and other contributors + * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * - * Date: 2014-12-03T16:32Z + * Date: 2015-01-20T19:39Z */ (function( window ) { @@ -103,10 +103,6 @@ config = { // block until document ready blocking: true, - // when enabled, show only failing tests - // gets persisted through sessionStorage and can be changed in UI via checkbox - hidepassed: false, - // by default, run previously failed tests first // very useful in combination with "Hide passed tests" checked reorder: true, @@ -180,6 +176,10 @@ config.modules.push( config.currentModule ); } } + if ( urlParams.filter === true ) { + delete urlParams.filter; + } + QUnit.urlParams = urlParams; // String search anywhere in moduleName+testName @@ -363,24 +363,6 @@ extend( QUnit, { return undefined; }, - url: function( params ) { - params = extend( extend( {}, QUnit.urlParams ), params ); - var key, - querystring = "?"; - - for ( key in params ) { - if ( hasOwn.call( params, key ) ) { - querystring += encodeURIComponent( key ); - if ( params[ key ] !== true ) { - querystring += "=" + encodeURIComponent( params[ key ] ); - } - querystring += "&"; - } - } - return location.protocol + "//" + location.host + - location.pathname + querystring.slice( 0, -1 ); - }, - extend: extend, load: function() { @@ -578,7 +560,7 @@ function process( last ) { process( last ); } var start = now(); - config.depth = config.depth ? config.depth + 1 : 1; + config.depth = ( config.depth || 0 ) + 1; while ( config.queue.length && !config.blocking ) { if ( !defined.setTimeout || config.updateRate <= 0 || @@ -1141,7 +1123,7 @@ Test.prototype = { valid: function() { var include, - filter = config.filter && config.filter.toLowerCase(), + filter = config.filter, module = QUnit.urlParams.module && QUnit.urlParams.module.toLowerCase(), fullName = ( this.module.name + ": " + this.testName ).toLowerCase(); @@ -1164,7 +1146,7 @@ Test.prototype = { include = filter.charAt( 0 ) !== "!"; if ( !include ) { - filter = filter.slice( 1 ); + filter = filter.toLowerCase().slice( 1 ); } // If the filter matches, we need to honour include @@ -1987,12 +1969,15 @@ if ( typeof window !== "undefined" ) { } // For nodejs -if ( typeof module !== "undefined" && module.exports ) { +if ( typeof module !== "undefined" && module && module.exports ) { module.exports = QUnit; + + // For consistency with CommonJS environments' exports + module.exports.QUnit = QUnit; } // For CommonJS with exports, but without module.exports, like Rhino -if ( typeof exports !== "undefined" ) { +if ( typeof exports !== "undefined" && exports ) { exports.QUnit = QUnit; } @@ -2340,7 +2325,10 @@ function getUrlConfigHtml() { escaped = escapeText( val.id ); escapedTooltip = escapeText( val.tooltip ); - config[ val.id ] = QUnit.urlParams[ val.id ]; + if ( config[ val.id ] === undefined ) { + config[ val.id ] = QUnit.urlParams[ val.id ]; + } + if ( !val.value || typeof val.value === "string" ) { urlConfigHtml += "<input id='qunit-urlconfig-" + escaped + "' name='" + escaped + "' type='checkbox'" + @@ -2399,7 +2387,7 @@ function toolbarChanged() { } params[ field.name ] = value; - updatedUrl = QUnit.url( params ); + updatedUrl = setUrl( params ); if ( "hidepassed" === field.name && "replaceState" in window.history ) { config[ field.name ] = value || false; @@ -2416,10 +2404,47 @@ function toolbarChanged() { } } +function setUrl( params ) { + var key, + querystring = "?"; + + params = QUnit.extend( QUnit.extend( {}, QUnit.urlParams ), params ); + + for ( key in params ) { + if ( hasOwn.call( params, key ) ) { + if ( params[ key ] === undefined ) { + continue; + } + querystring += encodeURIComponent( key ); + if ( params[ key ] !== true ) { + querystring += "=" + encodeURIComponent( params[ key ] ); + } + querystring += "&"; + } + } + return location.protocol + "//" + location.host + + location.pathname + querystring.slice( 0, -1 ); +} + +function applyUrlParams() { + var selectBox = id( "qunit-modulefilter" ), + selection = decodeURIComponent( selectBox.options[ selectBox.selectedIndex ].value ), + filter = id( "qunit-filter-input" ).value; + + window.location = setUrl({ + module: ( selection === "" ) ? undefined : selection, + filter: ( filter === "" ) ? undefined : filter, + + // Remove testId filter + testId: undefined + }); +} + function toolbarUrlConfigContainer() { var urlConfigContainer = document.createElement( "span" ); urlConfigContainer.innerHTML = getUrlConfigHtml(); + addClass( urlConfigContainer, "qunit-url-config" ); // For oldIE support: // * Add handlers to the individual elements instead of the container @@ -2430,6 +2455,40 @@ function toolbarUrlConfigContainer() { return urlConfigContainer; } +function toolbarLooseFilter() { + var filter = document.createElement( "form" ), + label = document.createElement( "label" ), + input = document.createElement( "input" ), + button = document.createElement( "button" ); + + addClass( filter, "qunit-filter" ); + + label.innerHTML = "Filter: "; + + input.type = "text"; + input.value = config.filter || ""; + input.name = "filter"; + input.id = "qunit-filter-input"; + + button.innerHTML = "Go"; + + label.appendChild( input ); + + filter.appendChild( label ); + filter.appendChild( button ); + addEvent( filter, "submit", function( ev ) { + applyUrlParams(); + + if ( ev && ev.preventDefault ) { + ev.preventDefault(); + } + + return false; + }); + + return filter; +} + function toolbarModuleFilterHtml() { var i, moduleFilterHtml = ""; @@ -2463,25 +2522,14 @@ function toolbarModuleFilter() { moduleFilter = document.createElement( "span" ), moduleFilterHtml = toolbarModuleFilterHtml(); - if ( !moduleFilterHtml ) { + if ( !toolbar || !moduleFilterHtml ) { return false; } moduleFilter.setAttribute( "id", "qunit-modulefilter-container" ); moduleFilter.innerHTML = moduleFilterHtml; - addEvent( moduleFilter.lastChild, "change", function() { - var selectBox = moduleFilter.getElementsByTagName( "select" )[ 0 ], - selection = decodeURIComponent( selectBox.options[ selectBox.selectedIndex ].value ); - - window.location = QUnit.url({ - module: ( selection === "" ) ? undefined : selection, - - // Remove any existing filters - filter: undefined, - testId: undefined - }); - }); + addEvent( moduleFilter.lastChild, "change", applyUrlParams ); toolbar.appendChild( moduleFilter ); } @@ -2491,6 +2539,17 @@ function appendToolbar() { if ( toolbar ) { toolbar.appendChild( toolbarUrlConfigContainer() ); + toolbar.appendChild( toolbarLooseFilter() ); + } +} + +function appendHeader() { + var header = id( "qunit-header" ); + + if ( header ) { + header.innerHTML = "<a href='" + + setUrl({ filter: undefined, module: undefined, testId: undefined }) + + "'>" + header.innerHTML + "</a> "; } } @@ -2499,9 +2558,6 @@ function appendBanner() { if ( banner ) { banner.className = ""; - banner.innerHTML = "<a href='" + - QUnit.url({ filter: undefined, module: undefined, testId: undefined }) + - "'>" + banner.innerHTML + "</a> "; } } @@ -2533,7 +2589,8 @@ function storeFixture() { function appendUserAgent() { var userAgent = id( "qunit-userAgent" ); if ( userAgent ) { - userAgent.innerHTML = navigator.userAgent; + userAgent.innerHTML = ""; + userAgent.appendChild( document.createTextNode( navigator.userAgent ) ); } } @@ -2568,7 +2625,7 @@ function appendTest( name, testId, moduleName ) { rerunTrigger = document.createElement( "a" ); rerunTrigger.innerHTML = "Rerun"; - rerunTrigger.href = QUnit.url({ testId: testId }); + rerunTrigger.href = setUrl({ testId: testId }); testBlock = document.createElement( "li" ); testBlock.appendChild( title ); @@ -2590,17 +2647,16 @@ QUnit.begin(function( details ) { // Fixture is the only one necessary to run without the #qunit element storeFixture(); - if ( !qunit ) { - return; + if ( qunit ) { + qunit.innerHTML = + "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" + + "<h2 id='qunit-banner'></h2>" + + "<div id='qunit-testrunner-toolbar'></div>" + + "<h2 id='qunit-userAgent'></h2>" + + "<ol id='qunit-tests'></ol>"; } - qunit.innerHTML = - "<h1 id='qunit-header'>" + escapeText( document.title ) + "</h1>" + - "<h2 id='qunit-banner'></h2>" + - "<div id='qunit-testrunner-toolbar'></div>" + - "<h2 id='qunit-userAgent'></h2>" + - "<ol id='qunit-tests'></ol>"; - + appendHeader(); appendBanner(); appendTestResults(); appendUserAgent(); @@ -2608,7 +2664,7 @@ QUnit.begin(function( details ) { appendTestsList( details.modules ); toolbarModuleFilter(); - if ( config.hidepassed ) { + if ( qunit && config.hidepassed ) { addClass( qunit.lastChild, "hidepass" ); } }); @@ -2788,7 +2844,7 @@ QUnit.testDone(function( details ) { details.assertions.length + ")</b>"; if ( details.skipped ) { - addClass( testItem, "skipped" ); + testItem.className = "skipped"; skipped = document.createElement( "em" ); skipped.className = "qunit-skipped-label"; skipped.innerHTML = "skipped"; |