diff options
author | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-07-09 18:45:49 -0700 |
---|---|---|
committer | Jörn Zaefferer <joern.zaefferer@gmail.com> | 2012-07-11 14:44:23 +0200 |
commit | 0a4c3344300d7a753328d5e3b9b978b35a249122 (patch) | |
tree | a23eeb63d4e46ff243dbc1791277f825f94451db /external/qunit.js | |
parent | b2b54790b2f35cfc7562343d43582e39dc57fc39 (diff) | |
download | jquery-ui-0a4c3344300d7a753328d5e3b9b978b35a249122.tar.gz jquery-ui-0a4c3344300d7a753328d5e3b9b978b35a249122.zip |
Update to QUnit 1.9.0 and use new urlConfig for custom checkboxes
Diffstat (limited to 'external/qunit.js')
-rw-r--r-- | external/qunit.js | 113 |
1 files changed, 91 insertions, 22 deletions
diff --git a/external/qunit.js b/external/qunit.js index c1570c252..9efedcb44 100644 --- a/external/qunit.js +++ b/external/qunit.js @@ -1,5 +1,5 @@ /** - * QUnit v1.8.0 - A JavaScript Unit Testing Framework + * QUnit v1.9.0 - A JavaScript Unit Testing Framework * * http://docs.jquery.com/QUnit * @@ -403,6 +403,8 @@ QUnit = { QUnit.assert = { /** * Asserts rough true-ish result. + * @name ok + * @function * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" ); */ ok: function( result, msg ) { @@ -437,36 +439,59 @@ QUnit.assert = { /** * Assert that the first two arguments are equal, with an optional message. * Prints out both actual and expected values. + * @name equal + * @function * @example equal( format( "Received {0} bytes.", 2), "Received 2 bytes.", "format() replaces {0} with next argument" ); */ equal: function( actual, expected, message ) { QUnit.push( expected == actual, actual, expected, message ); }, + /** + * @name notEqual + * @function + */ notEqual: function( actual, expected, message ) { QUnit.push( expected != actual, actual, expected, message ); }, + /** + * @name deepEqual + * @function + */ deepEqual: function( actual, expected, message ) { QUnit.push( QUnit.equiv(actual, expected), actual, expected, message ); }, + /** + * @name notDeepEqual + * @function + */ notDeepEqual: function( actual, expected, message ) { QUnit.push( !QUnit.equiv(actual, expected), actual, expected, message ); }, + /** + * @name strictEqual + * @function + */ strictEqual: function( actual, expected, message ) { QUnit.push( expected === actual, actual, expected, message ); }, + /** + * @name notStrictEqual + * @function + */ notStrictEqual: function( actual, expected, message ) { QUnit.push( expected !== actual, actual, expected, message ); }, - raises: function( block, expected, message ) { + throws: function( block, expected, message ) { var actual, ok = false; + // 'expected' is optional if ( typeof expected === "string" ) { message = expected; expected = null; @@ -494,18 +519,29 @@ QUnit.assert = { } else if ( expected.call( {}, actual ) === true ) { ok = true; } - } - QUnit.push( ok, actual, null, message ); + QUnit.push( ok, actual, null, message ); + } else { + QUnit.pushFailure( message, null, 'No exception was thrown.' ); + } } }; -// @deprecated: Kept assertion helpers in root for backwards compatibility +/** + * @deprecate since 1.8.0 + * Kept assertion helpers in root for backwards compatibility + */ extend( QUnit, QUnit.assert ); /** - * @deprecated: Kept for backwards compatibility - * next step: remove entirely + * @deprecated since 1.9.0 + * Kept global "raises()" for backwards compatibility + */ +QUnit.raises = QUnit.assert.throws; + +/** + * @deprecated since 1.0.0, replaced with error pushes since 1.3.0 + * Kept to avoid TypeErrors for undefined methods. */ QUnit.equals = function() { QUnit.push( false, false, false, "QUnit.equals has been deprecated since 2009 (e88049a0), use QUnit.equal instead" ); @@ -549,7 +585,20 @@ config = { // when enabled, all tests must call expect() requireExpects: false, - urlConfig: [ "noglobals", "notrycatch" ], + // add checkboxes that are persisted in the query-string + // when enabled, the id is set to `true` as a `QUnit.config` property + urlConfig: [ + { + id: "noglobals", + label: "Check for Globals", + tooltip: "Enabling this will test if any test introduces new properties on the `window` object. Stored as query-strings." + }, + { + id: "notrycatch", + label: "No try-catch", + tooltip: "Enabling this will run tests outside of a try-catch block. Makes debugging exceptions in IE reasonable. Stored as query-strings." + } + ], // logging callback queues begin: [], @@ -770,7 +819,7 @@ extend( QUnit, { }); }, - pushFailure: function( message, source ) { + pushFailure: function( message, source, actual ) { if ( !config.current ) { throw new Error( "pushFailure() assertion outside test context, was " + sourceFromStacktrace(2) ); } @@ -781,15 +830,23 @@ extend( QUnit, { message: message }; - message = escapeInnerText(message ) || "error"; + message = escapeInnerText( message ) || "error"; message = "<span class='test-message'>" + message + "</span>"; output = message; + output += "<table>"; + + if ( actual ) { + output += "<tr class='test-actual'><th>Result: </th><td><pre>" + escapeInnerText( actual ) + "</pre></td></tr>"; + } + if ( source ) { details.source = source; - output += "<table><tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr></table>"; + output += "<tr class='test-source'><th>Source: </th><td><pre>" + escapeInnerText( source ) + "</pre></td></tr>"; } + output += "</table>"; + runLoggingCallbacks( "log", QUnit, details ); config.current.assertions.push({ @@ -859,7 +916,7 @@ QUnit.load = function() { runLoggingCallbacks( "begin", QUnit, {} ); // Initialize the config, saving the execution queue - var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, + var banner, filter, i, label, len, main, ol, toolbar, userAgent, val, urlConfigCheckboxes, urlConfigHtml = "", oldconfig = extend( {}, config ); @@ -872,8 +929,15 @@ QUnit.load = function() { for ( i = 0; i < len; i++ ) { val = config.urlConfig[i]; - config[val] = QUnit.urlParams[val]; - urlConfigHtml += "<label><input name='" + val + "' type='checkbox'" + ( config[val] ? " checked='checked'" : "" ) + ">" + val + "</label>"; + if ( typeof val === "string" ) { + val = { + id: val, + label: val, + tooltip: "[no tooltip available]" + }; + } + config[ val.id ] = QUnit.urlParams[ val.id ]; + urlConfigHtml += "<input id='qunit-urlconfig-" + val.id + "' name='" + val.id + "' type='checkbox'" + ( config[ val.id ] ? " checked='checked'" : "" ) + " title='" + val.tooltip + "'><label for='qunit-urlconfig-" + val.id + "' title='" + val.tooltip + "'>" + val.label + "</label>"; } // `userAgent` initialized at top of scope @@ -885,12 +949,7 @@ QUnit.load = function() { // `banner` initialized at top of scope banner = id( "qunit-header" ); if ( banner ) { - banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined }) + "'>" + banner.innerHTML + "</a> " + urlConfigHtml; - addEvent( banner, "change", function( event ) { - var params = {}; - params[ event.target.name ] = event.target.checked ? true : undefined; - window.location = QUnit.url( params ); - }); + banner.innerHTML = "<a href='" + QUnit.url({ filter: undefined, module: undefined, testNumber: undefined }) + "'>" + banner.innerHTML + "</a> "; } // `toolbar` initialized at top of scope @@ -931,8 +990,18 @@ QUnit.load = function() { // `label` initialized at top of scope label = document.createElement( "label" ); label.setAttribute( "for", "qunit-filter-pass" ); + label.setAttribute( "title", "Only show tests and assertons that fail. Stored in sessionStorage." ); label.innerHTML = "Hide passed tests"; toolbar.appendChild( label ); + + urlConfigCheckboxes = document.createElement( 'span' ); + urlConfigCheckboxes.innerHTML = urlConfigHtml; + addEvent( urlConfigCheckboxes, "change", function( event ) { + var params = {}; + params[ event.target.name ] = event.target.checked ? true : undefined; + window.location = QUnit.url( params ); + }); + toolbar.appendChild( urlConfigCheckboxes ); } // `main` initialized at top of scope @@ -1051,14 +1120,14 @@ function done() { function validTest( test ) { var include, filter = config.filter && config.filter.toLowerCase(), - module = config.module, + module = config.module && config.module.toLowerCase(), fullName = (test.module + ": " + test.testName).toLowerCase(); if ( config.testNumber ) { return test.testNumber === config.testNumber; } - if ( module && test.module !== module ) { + if ( module && ( !test.module || test.module.toLowerCase() !== module ) ) { return false; } |