Update QUnit from v1.16.0 to v1.17.1
authorTimo Tijhof <krinklemail@gmail.com>
Tue, 10 Feb 2015 06:40:16 +0000 (06:40 +0000)
committerTimo Tijhof <krinklemail@gmail.com>
Tue, 10 Feb 2015 06:40:16 +0000 (06:40 +0000)
* Code
  https://code.jquery.com/qunit/qunit-1.17.1.js
  https://code.jquery.com/qunit/qunit-1.17.1.css

* Changes
  https://github.com/jquery/qunit/blob/1.17.1/History.md

Change-Id: I8078f88dcb92ee4626de80a8f0fe6596b76affd1

resources/lib/qunitjs/qunit.css
resources/lib/qunitjs/qunit.js

index 385a1ce..0eb0b01 100644 (file)
@@ -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 */
 
 #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 */
        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;
 }
 
index 82020d4..006ca47 100644 (file)
@@ -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";