From 58c6ca9822afa42d3b40cca8edb0abe90a2bcb34 Mon Sep 17 00:00:00 2001 From: Oleg Gaidarenko Date: Tue, 10 May 2016 12:12:28 +0300 Subject: [PATCH] Build: ESLint details Use eslint pragmas, fix new errors, etc Closes gh-3148 --- .eslintignore | 4 +- .eslintrc | 146 +----------------- .gitignore | 2 +- .jshintignore | 10 -- Gruntfile.js | 5 +- build/.eslintrc | 7 - build/release.js | 5 + build/tasks/build.js | 11 +- build/tasks/lib/spawn_test.js | 4 +- dist/.eslintrc | 17 ++ package.json | 1 + src/.eslintrc | 29 ++-- src/ajax.js | 1 + src/attributes/val.js | 5 + src/core.js | 14 +- src/css/adjustCSS.js | 8 +- src/data/var/acceptData.js | 1 - src/deferred.js | 2 +- src/effects.js | 16 +- src/exports/global.js | 2 +- src/manipulation.js | 6 + src/selector.js | 4 +- src/traversing/findFilter.js | 1 - src/wrapper.js | 6 +- test/.eslintrc | 106 +++++++------ test/data/testinit.js | 57 ++++--- test/node_smoke_tests/.eslintrc | 7 +- .../iterable_with_symbol_polyfill.js | 2 - .../lib/ensure_iterability_es6.js | 2 - test/promises_aplus_adapters/.eslintrc | 5 +- test/unit/ajax.js | 8 +- test/unit/attributes.js | 8 +- test/unit/core.js | 23 ++- test/unit/css.js | 32 ++-- test/unit/data.js | 6 +- test/unit/deferred.js | 10 +- test/unit/deprecated.js | 4 +- test/unit/dimensions.js | 6 +- test/unit/effects.js | 6 +- test/unit/event.js | 39 ++--- test/unit/manipulation.js | 18 +-- test/unit/offset.js | 112 +++++++------- test/unit/queue.js | 2 +- test/unit/selector.js | 30 ++-- test/unit/serialize.js | 14 +- test/unit/wrap.js | 2 +- 46 files changed, 349 insertions(+), 457 deletions(-) delete mode 100644 .jshintignore delete mode 100644 build/.eslintrc create mode 100644 dist/.eslintrc diff --git a/.eslintignore b/.eslintignore index adfbe3f4b..ce5917571 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,4 +1,6 @@ external +node_modules +dist/jquery.min.js test/data/jquery-1.9.1.js test/data/badcall.js test/data/badjson.js @@ -8,5 +10,3 @@ test/data/readywaitloader.js test/data/support/csp.js test/data/support/getComputedSupport.js test/node_smoke_tests/lib/ensure_iterability.js -node_modules -dist diff --git a/.eslintrc b/.eslintrc index 4bb05b235..6dcb6353a 100644 --- a/.eslintrc +++ b/.eslintrc @@ -1,145 +1,7 @@ { - "env": {}, - "globals": {}, - "rules": { - "no-cond-assign": [ - "error", - "except-parens" - ], - "curly": [ - "error", - "all" - ], - "object-curly-spacing": [ - "error", - "always" - ], - "computed-property-spacing": [ - "error", - "always" - ], - "array-bracket-spacing": [ - "error", - "always" - ], - "eqeqeq": [ - "error", - "smart" - ], - - // Shows errors where jshint wouldn't (see jshint "expr" rule) - // clarifing this with eslint team - // "no-unused-expressions": "error", - "wrap-iife": [ - "error", - "inside" - ], - "no-caller": "error", - "quotes": [ - "error", - "double", - "avoid-escape" - ], - "no-undef": "error", - "no-unused-vars": "error", - "operator-linebreak": [ - "error", - "after" - ], - "comma-style": [ - "error", - "last" - ], - "camelcase": [ - "error", - { - "properties": "never" - } - ], - "dot-notation": [ - "error", - { - "allowPattern": "^[a-z]+(_[a-z]+)+$" - } - ], - "max-len": [ - "error", - { - "code": 100, - "ignoreComments": true - } - ], - "no-mixed-spaces-and-tabs": "error", - "no-trailing-spaces": "error", - "no-multi-str": "error", - "comma-dangle": [ - "error", - "never" - ], - "comma-spacing": [ - "error", - { - "before": false, - "after": true - } - ], - "space-before-blocks": [ - "error", - "always" - ], - "space-in-parens": [ - "error", - "always" - ], - "keyword-spacing": [ - 2 - ], - "semi": [ - "error", - "always" - ], - "semi-spacing": [ - "error", - { - // Because of the `for ( ; ...)` requirement - // "before": true, - "after": true - } - ], - "space-infix-ops": "error", - "eol-last": "error", - "lines-around-comment": [ - "error", - { - "beforeLineComment": true - } - ], - "linebreak-style": [ - "error", - "unix" - ], - "no-with": "error", - "brace-style": "error", - "space-before-function-paren": [ - "error", - "never" - ], - "no-loop-func": "error", - "no-spaced-func": "error", - "key-spacing": [ - "error", - { - "beforeColon": false, - "afterColon": true - } - ], - "space-unary-ops": [ - "error", - { - "words": false, - "nonwords": false - } - ], - "no-multiple-empty-lines": 2 + "extends": "eslint-config-jquery", + "root": true, + "env": { + "node": true } } diff --git a/.gitignore b/.gitignore index e1e7dbfe4..676ce1739 100644 --- a/.gitignore +++ b/.gitignore @@ -10,7 +10,7 @@ npm-debug.log -/dist +/dist/jquery* /node_modules /test/node_smoke_tests/lib/ensure_iterability.js diff --git a/.jshintignore b/.jshintignore deleted file mode 100644 index bc2a1e23c..000000000 --- a/.jshintignore +++ /dev/null @@ -1,10 +0,0 @@ -external -test/data/jquery-1.9.1.js -test/data/badcall.js -test/data/badjson.js -test/data/json_obj.js -test/data/readywaitasset.js -test/data/readywaitloader.js -test/data/support/csp.js -test/data/support/getComputedSupport.js -test/node_smoke_tests/lib/ensure_iterability.js diff --git a/Gruntfile.js b/Gruntfile.js index 5f101050a..8f8408d83 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -180,7 +180,7 @@ module.exports = function( grunt ) { // Integrate jQuery specific tasks grunt.loadTasks( "build/tasks" ); - grunt.registerTask( "lint", [ "jsonlint" ] ); + grunt.registerTask( "lint", [ "jsonlint", "eslint:all" ] ); // Don't run Node-related tests in Node.js < 1.0.0 as they require an old // jsdom version that needs compiling, making it harder for people to compile @@ -194,6 +194,7 @@ module.exports = function( grunt ) { // Short list as a high frequency watch task grunt.registerTask( "dev", [ "build:*:*", + "newer:eslint:dev", "uglify", "remove_map_comment", "dist:*" @@ -202,5 +203,5 @@ module.exports = function( grunt ) { grunt.registerTask( "default", [ "dev", "test_fast", "compare_size" ] ); - grunt.registerTask( "precommit_lint", [ "newer:jsonlint" ] ); + grunt.registerTask( "precommit_lint", [ "newer:jsonlint", "newer:eslint:all" ] ); }; diff --git a/build/.eslintrc b/build/.eslintrc deleted file mode 100644 index 11368d984..000000000 --- a/build/.eslintrc +++ /dev/null @@ -1,7 +0,0 @@ -{ - "env": { - "node": true - }, - "extends": "../.eslintrc", - "root": true -} diff --git a/build/release.js b/build/release.js index 72d6ab5a3..22cd90c86 100644 --- a/build/release.js +++ b/build/release.js @@ -21,6 +21,7 @@ module.exports = function( Release ) { Release.define( { npmPublish: true, issueTracker: "github", + /** * Ensure the repo is in a proper state before release * @param {Function} callback @@ -28,6 +29,7 @@ module.exports = function( Release ) { checkRepoState: function( callback ) { ensureSizzle( Release, callback ); }, + /** * Set the version in the src folder for distributing AMD */ @@ -37,6 +39,7 @@ module.exports = function( Release ) { contents = contents.replace( /@VERSION/g, Release.newVersion ); fs.writeFileSync( corePath, contents, "utf8" ); }, + /** * Generates any release artifacts that should be included in the release. * The callback must be invoked with an array of files that should be @@ -54,6 +57,7 @@ module.exports = function( Release ) { Release._setSrcVersion(); callback( files ); }, + /** * Acts as insertion point for restoring Release.dir.repo * It was changed to reuse npm publish code in jquery-release @@ -65,6 +69,7 @@ module.exports = function( Release ) { Release.dir.repo = Release.dir.origRepo || Release.dir.repo; return npmTags(); }, + /** * Publish to distribution repo and npm * @param {Function} callback diff --git a/build/tasks/build.js b/build/tasks/build.js index ab1c993a0..d086ae8d6 100644 --- a/build/tasks/build.js +++ b/build/tasks/build.js @@ -38,7 +38,7 @@ module.exports = function( grunt ) { // Avoid breaking semicolons inserted by r.js skipSemiColonInsertion: true, wrap: { - start: wrapper[ 0 ].replace( /\/\*jshint .* \*\/\n/, "" ), + start: wrapper[ 0 ].replace( /\/\*eslint .* \*\/\n/, "" ), end: globals.replace( /\/\*\s*ExcludeStart\s*\*\/[\w\W]*?\/\*\s*ExcludeEnd\s*\*\//ig, "" @@ -64,7 +64,12 @@ module.exports = function( grunt ) { // Convert var modules if ( /.\/var\//.test( path.replace( process.cwd(), "" ) ) ) { contents = contents - .replace( /define\([\w\W]*?return/, "var " + ( /var\/([\w-]+)/.exec( name )[ 1 ] ) + " =" ) + .replace( + /define\([\w\W]*?return/, + "var " + + ( /var\/([\w-]+)/.exec( name )[ 1 ] ) + + " =" + ) .replace( rdefineEnd, "" ); // Sizzle treatment @@ -130,6 +135,7 @@ module.exports = function( grunt ) { excluded = [], included = [], version = grunt.config( "pkg.version" ), + /** * Recursively calls the excluder to remove on all modules in the list * @param {Array} list @@ -167,6 +173,7 @@ module.exports = function( grunt ) { } ); } }, + /** * Adds the specified module to the excluded or included list, depending on the flag * @param {String} flag A module path relative to diff --git a/build/tasks/lib/spawn_test.js b/build/tasks/lib/spawn_test.js index e633755ee..34353a783 100644 --- a/build/tasks/lib/spawn_test.js +++ b/build/tasks/lib/spawn_test.js @@ -1,5 +1,3 @@ -/* jshint node: true */ - "use strict"; // Run Node with provided parameters: the first one being the Grunt @@ -13,4 +11,4 @@ module.exports = function spawnTest( done ) { .on( "close", function( code ) { done( code === 0 ); } ); -} ; +}; diff --git a/dist/.eslintrc b/dist/.eslintrc new file mode 100644 index 000000000..c86665b21 --- /dev/null +++ b/dist/.eslintrc @@ -0,0 +1,17 @@ +{ + "extends": "../src/.eslintrc", + "rules": { + // That is okay for built version + "no-multiple-empty-lines": "off", + + // Because sizze is not compatible to jquery code style + "lines-around-comment": "off", + "space-in-parens": "off", + "camelcase": "off", + "computed-property-spacing": "off", + "max-len": "off", + "dot-notation": "off", + "semi-spacing": "off", + "brace-style": "off" + } +} diff --git a/package.json b/package.json index 00b7d2e65..5f099251c 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "commitplease": "2.3.1", "core-js": "2.2.2", "cross-spawn": "2.2.3", + "eslint-config-jquery": "0.1.2", "grunt": "1.0.1", "grunt-babel": "6.0.0", "grunt-cli": "1.2.0", diff --git a/src/.eslintrc b/src/.eslintrc index ef090331f..dbf16c584 100644 --- a/src/.eslintrc +++ b/src/.eslintrc @@ -1,15 +1,18 @@ { - "env": { - "browser" - }, - "extends": "../.eslintrc", - "root": true, - "globals": { - "window": true, - "JSON": false, - "jQuery": true, - "define": true, - "module": true, - "noGlobal": true - } + // Support: IE <=9 only, Android <=4.0 only + // The above browsers are failing a lot of tests in the ES5 + // test suite at http://test262.ecmascript.org. + "parserOptions": { + "ecmaVersion": 3 + }, + "globals": { + "window": true, + "jQuery": true, + "define": true, + "module": true, + "noGlobal": true + }, + "rules": { + "strict": ["error", "function"] + } } diff --git a/src/ajax.js b/src/ajax.js index 2bb03883d..85b08546f 100644 --- a/src/ajax.js +++ b/src/ajax.js @@ -306,6 +306,7 @@ jQuery.extend( { processData: true, async: true, contentType: "application/x-www-form-urlencoded; charset=UTF-8", + /* timeout: 0, data: null, diff --git a/src/attributes/val.js b/src/attributes/val.js index 757680607..1ba42a5c8 100644 --- a/src/attributes/val.js +++ b/src/attributes/val.js @@ -143,11 +143,16 @@ jQuery.extend( { while ( i-- ) { option = options[ i ]; + + /* eslint-disable no-cond-assign */ + if ( option.selected = jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 ) { optionSet = true; } + + /* eslint-enable no-cond-assign */ } // Force browsers to behave consistently when non-matching value is set diff --git a/src/core.js b/src/core.js index 9dd05294e..5bdb2169c 100644 --- a/src/core.js +++ b/src/core.js @@ -1,3 +1,7 @@ +/* global Symbol */ +// Defining this global in .eslintrc would create a danger of using the global +// unguarded in another place, it seems safer to define global only for this module + define( [ "./var/arr", "./var/document", @@ -252,7 +256,11 @@ jQuery.extend( { }, isEmptyObject: function( obj ) { + + /* eslint-disable no-unused-vars */ + // See https://github.com/eslint/eslint/issues/6125 var name; + for ( name in obj ) { return false; } @@ -442,15 +450,9 @@ jQuery.extend( { support: support } ); -// JSHint would error on this code due to the Symbol not being defined in ES5. -// Defining this global in .jshintrc would create a danger of using the global -// unguarded in another place, it seems safer to just disable JSHint for these -// three lines. -/* jshint ignore: start */ if ( typeof Symbol === "function" ) { jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; } -/* jshint ignore: end */ // Populate the class2type map jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), diff --git a/src/css/adjustCSS.js b/src/css/adjustCSS.js index f1d1f00ce..ded3a1666 100644 --- a/src/css/adjustCSS.js +++ b/src/css/adjustCSS.js @@ -10,8 +10,12 @@ function adjustCSS( elem, prop, valueParts, tween ) { scale = 1, maxIterations = 20, currentValue = tween ? - function() { return tween.cur(); } : - function() { return jQuery.css( elem, prop, "" ); }, + function() { + return tween.cur(); + } : + function() { + return jQuery.css( elem, prop, "" ); + }, initial = currentValue(), unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), diff --git a/src/data/var/acceptData.js b/src/data/var/acceptData.js index 7d0fb238e..e00f7538b 100644 --- a/src/data/var/acceptData.js +++ b/src/data/var/acceptData.js @@ -13,7 +13,6 @@ return function( owner ) { // - Node.DOCUMENT_NODE // - Object // - Any - /* jshint -W018 */ return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); }; diff --git a/src/deferred.js b/src/deferred.js index a7938025c..8139515fe 100644 --- a/src/deferred.js +++ b/src/deferred.js @@ -37,7 +37,7 @@ function adoptValue( value, resolve, reject ) { // For Promises/A+, convert exceptions into rejections // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in // Deferred#then to conditionally suppress rejection. - } catch ( /*jshint -W002 */ value ) { + } catch ( value ) { // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context diff --git a/src/effects.js b/src/effects.js index 6a1fb3a28..cc21cfcfa 100644 --- a/src/effects.js +++ b/src/effects.js @@ -51,7 +51,7 @@ function genFx( type, includeWidth ) { // If we include width, step value is 1 to do all cssExpand values, // otherwise step value is 2 to skip over Left and Right includeWidth = includeWidth ? 1 : 0; - for ( ; i < 4 ; i += 2 - includeWidth ) { + for ( ; i < 4; i += 2 - includeWidth ) { which = cssExpand[ i ]; attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; } @@ -78,7 +78,6 @@ function createTween( value, prop, animation ) { } function defaultPrefilter( elem, props, opts ) { - /* jshint validthis: true */ var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, isBox = "width" in props || "height" in props, anim = this, @@ -220,9 +219,12 @@ function defaultPrefilter( elem, props, opts ) { showHide( [ elem ], true ); } - /* jshint -W083 */ + /* eslint-disable no-loop-func */ + anim.done( function() { + /* eslint-enable no-loop-func */ + // The final step of a "hide" animation is actually hiding the element if ( !hidden ) { showHide( [ elem ] ); @@ -307,7 +309,7 @@ function Animation( elem, properties, options ) { index = 0, length = animation.tweens.length; - for ( ; index < length ; index++ ) { + for ( ; index < length; index++ ) { animation.tweens[ index ].run( percent ); } @@ -348,7 +350,7 @@ function Animation( elem, properties, options ) { return this; } stopped = true; - for ( ; index < length ; index++ ) { + for ( ; index < length; index++ ) { animation.tweens[ index ].run( 1 ); } @@ -366,7 +368,7 @@ function Animation( elem, properties, options ) { propFilter( props, animation.opts.specialEasing ); - for ( ; index < length ; index++ ) { + for ( ; index < length; index++ ) { result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); if ( result ) { if ( jQuery.isFunction( result.stop ) ) { @@ -420,7 +422,7 @@ jQuery.Animation = jQuery.extend( Animation, { index = 0, length = props.length; - for ( ; index < length ; index++ ) { + for ( ; index < length; index++ ) { prop = props[ index ]; Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; Animation.tweeners[ prop ].unshift( callback ); diff --git a/src/exports/global.js b/src/exports/global.js index a50fbb6cd..ebdb73b30 100644 --- a/src/exports/global.js +++ b/src/exports/global.js @@ -2,7 +2,7 @@ // This file is included in a different way from all the others // so the "use strict" pragma is not needed. -/* jshint strict: false */ +/* eslint strict: "off" */ /* ExcludeEnd */ diff --git a/src/manipulation.js b/src/manipulation.js index d53eaa021..9b4f5e451 100644 --- a/src/manipulation.js +++ b/src/manipulation.js @@ -29,8 +29,14 @@ define( [ "use strict"; var + + /* eslint-disable max-len */ + + // See https://github.com/eslint/eslint/issues/3229 rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi, + /* eslint-enable */ + // Support: IE <=10 - 11, Edge 12 - 13 // In IE/Edge using regex groups here causes severe slowdowns. // See https://connect.microsoft.com/IE/feedback/details/1736512/ diff --git a/src/selector.js b/src/selector.js index e13f585ae..2e0c17e15 100644 --- a/src/selector.js +++ b/src/selector.js @@ -1 +1,3 @@ -define( [ "./selector-sizzle" ], function() {} ); +define( [ "./selector-sizzle" ], function() { + "use strict"; +} ); diff --git a/src/traversing/findFilter.js b/src/traversing/findFilter.js index 542852475..c742fb5c3 100644 --- a/src/traversing/findFilter.js +++ b/src/traversing/findFilter.js @@ -13,7 +13,6 @@ var risSimple = /^.[^:#\[\.,]*$/; function winnow( elements, qualifier, not ) { if ( jQuery.isFunction( qualifier ) ) { return jQuery.grep( elements, function( elem, i ) { - /* jshint -W018 */ return !!qualifier.call( elem, i, elem ) !== not; } ); diff --git a/src/wrapper.js b/src/wrapper.js index 5f07c059a..d93d036d0 100644 --- a/src/wrapper.js +++ b/src/wrapper.js @@ -1,4 +1,4 @@ -/*jshint unused:false */ +/*eslint-disable no-unused-vars*/ /*! * jQuery JavaScript Library v@VERSION * https://jquery.com/ @@ -38,7 +38,7 @@ } // Pass this if window is not defined yet -}( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { +} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode @@ -50,4 +50,4 @@ // build.js inserts compiled jQuery here return jQuery; -} ) ); +} ); diff --git a/test/.eslintrc b/test/.eslintrc index 439a07a6c..7887ec567 100644 --- a/test/.eslintrc +++ b/test/.eslintrc @@ -1,55 +1,59 @@ { - "env": { - "browser": true - }, - "extends": "../.eslintrc", - "root": true, - "globals": { - "require": false, - "define": false, - "DOMParser": false, - "JSON": false, - "Promise": false, - "Symbol": false, - "QUnit": false, - "ajaxTest": false, - "testIframe": false, - "testIframeWithCallback": false, - "iframeCallback": true, - "createDashboardXML": false, - "createXMLFragment": false, - "moduleTeardown": false, - "testFoo": false, - "url": false, - "t": false, - "q": false, - "jQuery": true, - "sinon": true, - "amdDefined": true, - "fireNative": true, - "Globals": true, - "hasPHP": true, - "isLocal": true, - "supportjQuery": true, - "originaljQuery": true, - "$": true, - "original$": true, - "baseURL": true, - "externalHost": true - }, - "rules": { - // See https://github.com/eslint/eslint/issues/6125 - "no-unused-vars": "off", + "env": { + "browser": true + }, + // Support: IE <=9 only, Android <=4.0 only + // The above browsers are failing a lot of tests in the ES5 + // test suite at http://test262.ecmascript.org. + "parserOptions": { + "ecmaVersion": 3 + }, + "globals": { + "require": false, + "define": false, + "DOMParser": false, + "JSON": false, + "Promise": false, + "Symbol": false, + "QUnit": false, + "ajaxTest": false, + "testIframe": false, + "testIframeWithCallback": false, + "iframeCallback": true, + "createDashboardXML": false, + "createXMLFragment": false, + "moduleTeardown": false, + "testFoo": false, + "url": false, + "t": false, + "q": false, + "jQuery": true, + "sinon": true, + "amdDefined": true, + "fireNative": true, + "Globals": true, + "hasPHP": true, + "isLocal": true, + "supportjQuery": true, + "originaljQuery": true, + "$": true, + "original$": true, + "baseURL": true, + "externalHost": true + }, + "rules": { + // See https://github.com/eslint/eslint/issues/2342 + "no-unused-vars": "off", - // Too much errors - "max-len": "off", - "brace-style": "off", - "key-spacing": "off", - "camelcase": "off", - "dot-notaion": "off", + // Too much errors + "max-len": "off", + "brace-style": "off", + "key-spacing": "off", + "camelcase": "off", + "dot-notaion": "off", - // Not a lot really too much, but waiting for autofix for these rules - "lines-around-comment": "off", - "dot-notation": "off" - } + // Not really too much - waiting autofix features for these rules + "lines-around-comment": "off", + "dot-notation": "off" + } } diff --git a/test/data/testinit.js b/test/data/testinit.js index 40ac02114..9e2679654 100644 --- a/test/data/testinit.js +++ b/test/data/testinit.js @@ -1,7 +1,6 @@ -/*jshint multistr:true, quotmark:false */ +/* eslint no-multi-str: "off" */ -var fireNative, originaljQuery, original$, - baseURL = "", +var baseURL = "", supportjQuery = this.jQuery, // see RFC 2606 @@ -12,8 +11,8 @@ this.isLocal = window.location.protocol === "file:"; // Setup global variables before loading jQuery for testing .noConflict() supportjQuery.noConflict( true ); -originaljQuery = this.jQuery = undefined; -original$ = this.$ = "replaced"; +window.originaljQuery = this.jQuery = undefined; +window.original$ = this.$ = "replaced"; /** * Returns an array of elements with the given IDs @@ -44,7 +43,7 @@ function match( message, selector, expectedIds, context ) { i = 0; for ( ; i < f.length; i++ ) { - s += ( s && "," ) + '"' + f[ i ].id + '"'; + s += ( s && "," ) + "\"" + f[ i ].id + "\""; } this.deepEqual( f, q.apply( q, expectedIds ), message + " (" + selector + ")" ); @@ -75,38 +74,38 @@ QUnit.assert.selectInFixture = function( message, selector, expectedIds ) { }; this.createDashboardXML = function() { - var string = ' \ + var string = " \ \ - \ - \ - \ - \ - \ + \ + \ + \ + \ + \ \ \ \ - '; + "; return jQuery.parseXML( string ); }; this.createWithFriesXML = function() { - var string = ' \ - \ + var string = " \ + \ \ - \ - \ + \ + \ \ - \ - \ - \ + \ + \ + \ \ 1 \ \ - \ - \ + \ + \ \ foo \ \ @@ -115,7 +114,7 @@ this.createWithFriesXML = function() { \ \ \ - '; + "; return jQuery.parseXML( string.replace( /\{\{\s*externalHost\s*\}\}/g, externalHost ) ); }; @@ -123,7 +122,7 @@ this.createWithFriesXML = function() { this.createXMLFragment = function() { var xml, frag; if ( window.ActiveXObject ) { - xml = new ActiveXObject( "msxml2.domdocument" ); + xml = new window.ActiveXObject( "msxml2.domdocument" ); } else { xml = document.implementation.createDocument( "", "", null ); } @@ -135,7 +134,7 @@ this.createXMLFragment = function() { return frag; }; -fireNative = document.createEvent ? +window.fireNative = document.createEvent ? function( node, type ) { var event = document.createEvent( "HTMLEvents" ); @@ -263,8 +262,8 @@ QUnit.config.autostart = false; this.loadTests = function() { // Leverage QUnit URL parsing to detect testSwarm environment and "basic" testing mode - QUnit.isSwarm = ( QUnit.urlParams[ "swarmURL" ] + "" ).indexOf( "http" ) === 0; - QUnit.basicTests = ( QUnit.urlParams[ "module" ] + "" ) === "basic"; + QUnit.isSwarm = ( QUnit.urlParams.swarmURL + "" ).indexOf( "http" ) === 0; + QUnit.basicTests = ( QUnit.urlParams.module + "" ) === "basic"; // Get testSubproject from testrunner first require( [ "data/testrunner.js" ], function() { diff --git a/test/node_smoke_tests/.eslintrc b/test/node_smoke_tests/.eslintrc index 282933c1a..0d1d554d1 100644 --- a/test/node_smoke_tests/.eslintrc +++ b/test/node_smoke_tests/.eslintrc @@ -1,10 +1,7 @@ { "env": { - "node": true + "es6": true }, - "parserOptions": { - "ecmaVersion": 6 - }, - "extends": "../.eslintrc", + "extends" : "../../.eslintrc", "root": true } diff --git a/test/node_smoke_tests/iterable_with_symbol_polyfill.js b/test/node_smoke_tests/iterable_with_symbol_polyfill.js index dd377f19c..34701d691 100644 --- a/test/node_smoke_tests/iterable_with_symbol_polyfill.js +++ b/test/node_smoke_tests/iterable_with_symbol_polyfill.js @@ -1,5 +1,3 @@ -/* jshint esnext: true */ - "use strict"; var assert = require( "assert" ); diff --git a/test/node_smoke_tests/lib/ensure_iterability_es6.js b/test/node_smoke_tests/lib/ensure_iterability_es6.js index ebe68539e..8e2396d23 100644 --- a/test/node_smoke_tests/lib/ensure_iterability_es6.js +++ b/test/node_smoke_tests/lib/ensure_iterability_es6.js @@ -1,5 +1,3 @@ -/* jshint esnext: true */ - "use strict"; var assert = require( "assert" ); diff --git a/test/promises_aplus_adapters/.eslintrc b/test/promises_aplus_adapters/.eslintrc index 11368d984..7acfff35a 100644 --- a/test/promises_aplus_adapters/.eslintrc +++ b/test/promises_aplus_adapters/.eslintrc @@ -1,7 +1,4 @@ { - "env": { - "node": true - }, - "extends": "../.eslintrc", + "extends": "../../.eslintrc", "root": true } diff --git a/test/unit/ajax.js b/test/unit/ajax.js index 1a4ff7ee4..5e24c3049 100644 --- a/test/unit/ajax.js +++ b/test/unit/ajax.js @@ -99,7 +99,7 @@ QUnit.module( "ajax", { assert.ok( true, "success" ); }, fail: function() { - if (jQuery.support.cors === false) { + if ( jQuery.support.cors === false ) { assert.ok( true, "fail" ); } }, @@ -1737,11 +1737,11 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re } else { // No built-in support for binary data, but it's easy to add via a prefilter - jQuery.ajaxPrefilter( "arraybuffer", function ( s ) { + jQuery.ajaxPrefilter( "arraybuffer", function( s ) { s.xhrFields = { responseType: "arraybuffer" }; s.responseFields.arraybuffer = "response"; s.converters[ "binary arraybuffer" ] = true; - }); + } ); ajaxTest( "gh-2498 - jQuery.ajax() - binary data shouldn't throw an exception", 2, function( assert ) { return { @@ -1961,7 +1961,7 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re url: url( "data/ajax/content-type.php" ), data: { "content-type": "test/jsontest", - "response": JSON.stringify({test: "test"}) + "response": JSON.stringify( { test: "test" } ) }, success: function( result ) { assert.strictEqual( diff --git a/test/unit/attributes.js b/test/unit/attributes.js index 127eb3e1e..771d31cb8 100644 --- a/test/unit/attributes.js +++ b/test/unit/attributes.js @@ -758,9 +758,9 @@ QUnit.test( "prop('tabindex')", function( assert ) { QUnit.test( "image.prop( 'tabIndex' )", function( assert ) { assert.expect( 1 ); - var image = jQuery("") - .appendTo("#qunit-fixture"); - assert.equal( image.prop("tabIndex" ), -1, "tabIndex on image" ); + var image = jQuery( "" ) + .appendTo( "#qunit-fixture" ); + assert.equal( image.prop( "tabIndex" ), -1, "tabIndex on image" ); } ); QUnit.test( "prop('tabindex', value)", function( assert ) { @@ -1653,7 +1653,7 @@ QUnit.test( "non-lowercase boolean attribute getters should not crash", function required: "requiRed", autofocus: "AUTOFOCUS" }, function( lowercased, original ) { - try { + try { assert.strictEqual( elem.attr( original ), lowercased, "The '" + this + "' attribute getter should return the lowercased name" ); } catch ( e ) { diff --git a/test/unit/core.js b/test/unit/core.js index 57c8dd9e9..8ad3c86ce 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -95,7 +95,7 @@ QUnit.test( "jQuery()", function( assert ) { assert.equal( div.length, 4, "Correct number of elements generated for div hr code b" ); assert.equal( div.parent().length, 0, "Make sure that the generated HTML has no parent." ); - assert.equal( jQuery( [ 1,2,3 ] ).get( 1 ), 2, "Test passing an array to the factory" ); + assert.equal( jQuery( [ 1, 2, 3 ] ).get( 1 ), 2, "Test passing an array to the factory" ); assert.equal( jQuery( document.body ).get( 0 ), jQuery( "body" ).get( 0 ), "Test passing an html node to the factory" ); @@ -274,7 +274,7 @@ QUnit.test( "type", function( assert ) { QUnit.test( "type for `Symbol`", function( assert ) { // Prevent reference errors - if( typeof Symbol !== "function" ) { + if ( typeof Symbol !== "function" ) { assert.expect( 0 ); return; } @@ -283,7 +283,7 @@ QUnit.test( "type for `Symbol`", function( assert ) { assert.equal( jQuery.type( Symbol() ), "symbol", "Symbol" ); assert.equal( jQuery.type( Object( Symbol() ) ), "symbol", "Symbol" ); -}); +} ); QUnit.asyncTest( "isPlainObject", function( assert ) { @@ -968,7 +968,7 @@ QUnit.test( "jQuery.map", function( assert ) { assert.ok( !result, "empty NodeList treated like array" ); result = jQuery.map( Array( 4 ), function( v, k ) { - return k % 2 ? k : [ k,k,k ]; + return k % 2 ? k : [ k, k, k ]; } ); assert.equal( result.join( "" ), "00012223", "Array results flattened (#2616)" ); } ); @@ -1120,7 +1120,7 @@ QUnit.test( "jQuery.grep(Array-like)", function( assert ) { [], "Satisfying elements absent, Array-like object used, and grep explicitly uninverted" ); -}); +} ); QUnit.test( "jQuery.extend(Object, Object)", function( assert ) { assert.expect( 28 ); @@ -1238,19 +1238,19 @@ QUnit.test( "jQuery.extend(Object, Object)", function( assert ) { QUnit.test( "jQuery.extend(Object, Object {created with \"defineProperties\"})", function( assert ) { assert.expect( 2 ); - var definedObj = Object.defineProperties({}, { + var definedObj = Object.defineProperties( {}, { "enumerableProp": { - get: function () { + get: function() { return true; }, enumerable: true }, "nonenumerableProp": { - get: function () { + get: function() { return true; } } - }), + } ), accessorObj = {}; jQuery.extend( accessorObj, definedObj ); @@ -1308,7 +1308,7 @@ QUnit.test( "jQuery.each(Object,Function)", function( assert ) { assert.deepEqual( seen, [ 1, 2 ], "Broken array iteration" ); seen = []; - jQuery.each( { "a": 1, "b": 2,"c": 3 }, function( k, v ) { + jQuery.each( { "a": 1, "b": 2, "c": 3 }, function( k, v ) { seen.push( v ); return false; } ); @@ -1428,7 +1428,7 @@ QUnit.test( "jQuery.makeArray", function( assert ) { assert.equal( ( function() { return jQuery.makeArray( arguments ); } )( 1, 2 ).join( "" ), "12", "Pass makeArray an arguments array" ); - assert.equal( jQuery.makeArray( [ 1,2,3 ] ).join( "" ), "123", "Pass makeArray a real array" ); + assert.equal( jQuery.makeArray( [ 1, 2, 3 ] ).join( "" ), "123", "Pass makeArray a real array" ); assert.equal( jQuery.makeArray().length, 0, "Pass nothing to makeArray and expect an empty array" ); @@ -1692,7 +1692,6 @@ testIframe( ); QUnit.test( "Iterability of jQuery objects (gh-1693)", function( assert ) { - /* jshint unused: false */ assert.expect( 1 ); var i, elem, result; diff --git a/test/unit/css.js b/test/unit/css.js index 38d5ed6d1..ad8b808ff 100644 --- a/test/unit/css.js +++ b/test/unit/css.js @@ -141,7 +141,7 @@ QUnit.test( "css() explicit and relative values", function( assert ) { $elem.css( "width", "+=9" ); assert.equal( $elem.css( "width" ), "10px", "'+=9' on width (params)" ); - $elem.css( "width", "-=9" ) ; + $elem.css( "width", "-=9" ); assert.equal( $elem.css( "width" ), "1px", "'-=9' on width (params)" ); $elem.css( "width", "+=9px" ); @@ -354,8 +354,8 @@ QUnit.test( "css(String, Function)", function( assert ) { sizes = [ "10px", "20px", "30px" ]; jQuery( "
" + - "
" + - "
" ) + "
" + + "
" ) .appendTo( "body" ); index = 0; @@ -385,8 +385,8 @@ QUnit.test( "css(String, Function) with incoming value", function( assert ) { sizes = [ "10px", "20px", "30px" ]; jQuery( "
" + - "
" + - "
" ) + "
" + + "
" ) .appendTo( "body" ); index = 0; @@ -416,8 +416,8 @@ QUnit.test( "css(Object) where values are Functions", function( assert ) { sizes = [ "10px", "20px", "30px" ]; jQuery( "
" + - "
" + - "
" ) + "
" + + "
" ) .appendTo( "body" ); index = 0; @@ -447,8 +447,8 @@ QUnit.test( "css(Object) where values are Functions with incoming values", funct sizes = [ "10px", "20px", "30px" ]; jQuery( "
" + - "
" + - "
" ) + "
" + + "
" ) .appendTo( "body" ); index = 0; @@ -988,18 +988,18 @@ QUnit.test( "computed margins (trac-3333; gh-2237)", function( assert ) { assert.equal( $div.css( "marginRight" ), "0px", "marginRight correctly calculated with a width and display block" ); - $div.css({ + $div.css( { position: "absolute", top: 0, left: 0, width: "100px" - }); - $child.css({ + } ); + $child.css( { width: "50px", margin: "auto" - }); + } ); assert.equal( $child.css( "marginLeft" ), "25px", "auto margins are computed to pixels" ); -}); +} ); QUnit.test( "box model properties incorrectly returning % instead of px, see #10639 and #12088", function( assert ) { assert.expect( 2 ); @@ -1309,7 +1309,7 @@ QUnit[ jQuery.find.compile ? "test" : "skip" ]( ":visible/:hidden selectors", fu assert.t( "Is Visible", "#qunit-fixture div:visible:lt(2)", [ "foo", "nothiddendiv" ] ); assert.t( "Is Not Hidden", "#qunit-fixture:hidden", [] ); - assert.t( "Is Hidden", "#form input:hidden", [ "hidden1","hidden2" ] ); + assert.t( "Is Hidden", "#form input:hidden", [ "hidden1", "hidden2" ] ); $a = jQuery( "

Header

" ).appendTo( "#qunit-fixture" ); assert.ok( $a.is( ":visible" ), "Anchor tag with flow content is visible (gh-2227)" ); @@ -1345,7 +1345,7 @@ QUnit.test( name: "backgroundAttachment", value: [ "fixed" ], expected: [ "scroll" ] - },{ + }, { name: "backgroundColor", value: [ "rgb(255, 0, 0)", "rgb(255,0,0)", "#ff0000" ], expected: [ "transparent" ] diff --git a/test/unit/data.js b/test/unit/data.js index 9a9371aae..0eb1d5149 100644 --- a/test/unit/data.js +++ b/test/unit/data.js @@ -409,7 +409,7 @@ QUnit.test( "data-* attributes", function( assert ) { break; case 3: assert.equal( jQuery( elem ).data( "number" ), true, "Check number property" ); - assert.deepEqual( jQuery( elem ).data( "stuff" ), [ 2,8 ], "Check stuff property" ); + assert.deepEqual( jQuery( elem ).data( "stuff" ), [ 2, 8 ], "Check stuff property" ); break; default: assert.ok( false, [ "Assertion failed on index ", index, ", with data" ].join( "" ) ); @@ -881,13 +881,13 @@ QUnit.test( "Check that the expando is removed when there's no more data", funct assert.strictEqual( div[ 0 ][ key ], undefined, "Expando was not removed when there was no more data" ); } } -}); +} ); QUnit.test( "Check that the expando is removed when there's no more data on non-nodes", function( assert ) { assert.expect( 1 ); var key, - obj = jQuery( {key: 42} ); + obj = jQuery( { key: 42 } ); obj.data( "some", "data" ); assert.equal( obj.data( "some" ), "data", "Data is added" ); obj.removeData( "some" ); diff --git a/test/unit/deferred.js b/test/unit/deferred.js index 3e147a96e..32f325681 100644 --- a/test/unit/deferred.js +++ b/test/unit/deferred.js @@ -776,8 +776,8 @@ QUnit.test( "jQuery.Deferred - resolved to a notifying deferred", function( asse done = assert.async( 2 ); deferred.resolve( jQuery.Deferred( function( notifyingDeferred ) { - notifyingDeferred.notify( "foo", "bar" ); - notifyingDeferred.resolve( "baz", "quux" ); + notifyingDeferred.notify( "foo", "bar" ); + notifyingDeferred.resolve( "baz", "quux" ); } ) ); // Apply an empty then to force thenable unwrapping. @@ -808,7 +808,7 @@ QUnit.test( "jQuery.when(nonThenable) - like Promise.resolve", function( assert // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context - defaultContext = (function getDefaultContext() { return this; }).call(), + defaultContext = ( function getDefaultContext() { return this; } ).call(), done = assert.async( 20 ); @@ -915,7 +915,7 @@ QUnit.test( "jQuery.when(thenable) - like Promise.resolve", function( assert ) { // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context - defaultContext = (function getDefaultContext() { return this; }).call(), + defaultContext = ( function getDefaultContext() { return this; } ).call(), done = assert.async( CASES * 2 ); @@ -995,7 +995,7 @@ QUnit.test( "jQuery.when(a, b) - like Promise.all", function( assert ) { // Support: Android 4.0 only // Strict mode functions invoked without .call/.apply get global-object context - defaultContext = (function getDefaultContext() { return this; }).call(), + defaultContext = ( function getDefaultContext() { return this; } ).call(), done = assert.async( 98 ); diff --git a/test/unit/deprecated.js b/test/unit/deprecated.js index e559db82f..27ba1cf88 100644 --- a/test/unit/deprecated.js +++ b/test/unit/deprecated.js @@ -14,7 +14,7 @@ QUnit.test( "bind/unbind", function( assert ) { assert.equal( e.type, "click", "correct event type" ); assert.equal( e.data.bindData, 19, "correct trigger data" ); assert.equal( trig, 42, "correct bind data" ); - assert.equal( e.target.nodeName.toLowerCase(), "b" , "correct element" ); + assert.equal( e.target.nodeName.toLowerCase(), "b", "correct element" ); } ) .trigger( "click", [ 42 ] ) .unbind( "click" ) @@ -32,7 +32,7 @@ QUnit.test( "delegate/undelegate", function( assert ) { markup .delegate( "b", "click", function( e ) { assert.equal( e.type, "click", "correct event type" ); - assert.equal( e.target.nodeName.toLowerCase(), "b" , "correct element" ); + assert.equal( e.target.nodeName.toLowerCase(), "b", "correct element" ); } ) .find( "b" ) .trigger( "click" ) diff --git a/test/unit/dimensions.js b/test/unit/dimensions.js index 8d304c435..5741b2af7 100644 --- a/test/unit/dimensions.js +++ b/test/unit/dimensions.js @@ -408,7 +408,7 @@ QUnit.test( "passing undefined is a setter #5571", function( assert ) { QUnit.test( "setters with and without box-sizing:border-box", function( assert ) { assert.expect( 120 ); - var parent = jQuery( "#foo" ).css({ width: "200px", height: "200px", "font-size": "16px" }), + var parent = jQuery( "#foo" ).css( { width: "200px", height: "200px", "font-size": "16px" } ), el_bb = jQuery( "
" ).appendTo( parent ), el = jQuery( "
" ).appendTo( parent ), el_bb_np = jQuery( "
" ).appendTo( parent ), @@ -520,9 +520,9 @@ QUnit.test( "outside view position (gh-2836)", function( assert ) { parent.one( "scroll", function() { var pos = parent.find( "div" ).eq( 3 ).position(); - assert.strictEqual(pos.top, -100); + assert.strictEqual( pos.top, -100 ); stop(); - }); + } ); parent.scrollTop( 400 ); } ); diff --git a/test/unit/effects.js b/test/unit/effects.js index 2b953cd35..eafe4b116 100644 --- a/test/unit/effects.js +++ b/test/unit/effects.js @@ -538,7 +538,7 @@ QUnit.test( "animate duration 0", function( assert ) { assert.expect( 11 ); var $elem, - $elems = jQuery( [ { a:0 },{ a:0 } ] ), + $elems = jQuery( [ { a:0 }, { a:0 } ] ), counter = 0; assert.equal( jQuery.timers.length, 0, "Make sure no animation was running from another test" ); @@ -1845,7 +1845,7 @@ QUnit.test( "non-px animation handles non-numeric start (#11971)", function( ass this.clock.tick( 10 ); } ); -QUnit.test("Animation callbacks (#11797)", function( assert ) { +QUnit.test( "Animation callbacks (#11797)", function( assert ) { assert.expect( 16 ); var prog = 0, @@ -1966,7 +1966,7 @@ QUnit.test( "Animation callbacks in order (#2292)", function( assert ) { always: function() { assert.step( 5 ); } - }).finish(); + } ).finish(); this.clock.tick( dur + 10 ); } ); diff --git a/test/unit/event.js b/test/unit/event.js index fef3b173e..02aad5e36 100644 --- a/test/unit/event.js +++ b/test/unit/event.js @@ -21,10 +21,10 @@ QUnit.test( "null or undefined handler", function( assert ) { var expectedElem = jQuery( "#firstp" ); var actualElem = expectedElem.on( "click", null ); - assert.equal(actualElem, expectedElem, "Passing a null handler should return the original element"); + assert.equal( actualElem, expectedElem, "Passing a null handler should return the original element" ); actualElem = expectedElem.on( "click", undefined ); - assert.equal(actualElem, expectedElem, "Passing a null handler should return the original element"); + assert.equal( actualElem, expectedElem, "Passing a null handler should return the original element" ); } ); QUnit.test( "on() with non-null,defined data", function( assert ) { @@ -78,7 +78,7 @@ QUnit.test( "on(), with data", function( assert ) { handler = function( event ) { assert.ok( event.data, "on() with data, check passed data exists" ); - assert.equal( event.data[ "foo" ], "bar", "on() with data, Check value of passed data" ); + assert.equal( event.data.foo, "bar", "on() with data, Check value of passed data" ); }; jQuery( "#firstp" ).on( "click", { "foo": "bar" }, handler ).trigger( "click" ).off( "click", handler ); @@ -95,7 +95,7 @@ QUnit.test( "click(), with data", function( assert ) { assert.expect( 3 ); var handler = function( event ) { assert.ok( event.data, "on() with data, check passed data exists" ); - assert.equal( event.data[ "foo" ], "bar", "on() with data, Check value of passed data" ); + assert.equal( event.data.foo, "bar", "on() with data, Check value of passed data" ); }; jQuery( "#firstp" ).on( "click", { "foo": "bar" }, handler ).trigger( "click" ).off( "click", handler ); @@ -199,7 +199,7 @@ QUnit.test( "on(), namespace with special add", function( assert ) { assert.ok( true, "Test event fired." ); } ); - jQuery.event.special[ "test" ] = { + jQuery.event.special.test = { _default: function( e, data ) { assert.equal( e.type, "test", "Make sure we're dealing with a test event." ); assert.ok( data, "And that trigger data was passed." ); @@ -251,7 +251,7 @@ QUnit.test( "on(), namespace with special add", function( assert ) { // Should trigger 2 div.appendTo( "#qunit-fixture" ).remove(); - delete jQuery.event.special[ "test" ]; + delete jQuery.event.special.test; } ); QUnit.test( "on(), no data", function( assert ) { @@ -726,8 +726,8 @@ QUnit.test( "on()/trigger()/off() on plain object", function( assert ) { events = jQuery._data( obj, "events" ); assert.ok( events, "Object has events bound." ); assert.equal( obj[ "events" ], undefined, "Events object on plain objects is not events" ); - assert.equal( obj[ "test" ], undefined, "Make sure that test event is not on the plain object." ); - assert.equal( obj[ "handle" ], undefined, "Make sure that the event handler is not on the plain object." ); + assert.equal( obj.test, undefined, "Make sure that test event is not on the plain object." ); + assert.equal( obj.handle, undefined, "Make sure that the event handler is not on the plain object." ); // Should trigger 1 jQuery( obj ).trigger( "test" ); @@ -1192,7 +1192,7 @@ QUnit.test( "trigger(eventObject, [data], [fn])", function( assert ) { //$child.on("foo", error ); event = new jQuery.Event( "foo" ); - $child.trigger( event, [ 1,2,3 ] ).off(); + $child.trigger( event, [ 1, 2, 3 ] ).off(); assert.equal( event.result, "result", "Check event.result attribute" ); // Will error if it bubbles @@ -1601,7 +1601,7 @@ QUnit.test( ".on()/.off()", function( assert ) { // Test binding with different this object jQuery( "#body" ).on( "click", "#foo", jQuery.proxy( function() { - assert.equal( this[ "foo" ], "bar", "on with event scope" ); }, { "foo": "bar" } + assert.equal( this.foo, "bar", "on with event scope" ); }, { "foo": "bar" } ) ); jQuery( "#foo" ).trigger( "click" ); jQuery( "#body" ).off( "click", "#foo" ); @@ -1860,7 +1860,7 @@ QUnit.test( "ignore comment nodes in event delegation (gh-2055)", function( asse .appendTo( $foo.find( "#sap" ) ); if ( !test() ) { - fireNative( $comment[0], "DOMNodeInserted" ); + fireNative( $comment[ 0 ], "DOMNodeInserted" ); } } ); @@ -2234,7 +2234,7 @@ QUnit.test( ".on and .off", function( assert ) { QUnit.test( "special on name mapping", function( assert ) { assert.expect( 7 ); - jQuery.event.special[ "slap" ] = { + jQuery.event.special.slap = { bindType: "click", delegateType: "swing", handle: function( event ) { @@ -2265,9 +2265,9 @@ QUnit.test( "special on name mapping", function( assert ) { .trigger( "swing" ) .end() .remove(); - delete jQuery.event.special[ "slap" ]; + delete jQuery.event.special.slap; - jQuery.event.special[ "gutfeeling" ] = { + jQuery.event.special.gutfeeling = { bindType: "click", delegateType: "click", handle: function( event ) { @@ -2356,9 +2356,9 @@ QUnit.test( "clone() delegated events (#11076)", function( assert ) { clone = table.clone( true ); clone.find( "td" ).trigger( "click" ); - assert.equal( counter[ "center" ], 1, "first child" ); - assert.equal( counter[ "fold" ], 1, "last child" ); - assert.equal( counter[ "centerfold" ], 2, "all children" ); + assert.equal( counter.center, 1, "first child" ); + assert.equal( counter.fold, 1, "last child" ); + assert.equal( counter.centerfold, 2, "all children" ); table.remove(); clone.remove(); @@ -2576,7 +2576,7 @@ QUnit.test( "change handler should be detached from element", function( assert ) originRemoveEvent( elem, type, handle ); }; - jQuery.removeEvent = wrapperRemoveEvent ; + jQuery.removeEvent = wrapperRemoveEvent; $fixture.on( "change", function() {} ); $fixture.off( "change" ); @@ -2899,9 +2899,10 @@ QUnit.test( "originalEvent property for Chrome, Safari, Fx & Edge of simulated e .on( "focusin", function( event ) { assert.ok( true, "focusin bubbled to outer div" ); assert.equal( event.originalEvent.type, "focus", - "make sure originalEvent type is correct" ); + "make sure originalEvent type is correct" ); assert.equal( event.type, "focusin", "make sure type is correct" ); } ); + jQuery( "#donor-input" ).on( "focus", function() { assert.ok( true, "got a focus event from the input" ); done(); diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js index 8f8d78433..b8fdb8e79 100644 --- a/test/unit/manipulation.js +++ b/test/unit/manipulation.js @@ -609,7 +609,7 @@ QUnit.test( "append(xml)", function( assert ) { // IE for ( n = 0, len = aActiveX.length; n < len; n++ ) { try { - elem = new ActiveXObject( aActiveX[ n ] ); + elem = new window.ActiveXObject( aActiveX[ n ] ); return elem; } catch ( _ ) {} } @@ -1175,7 +1175,7 @@ QUnit.test( ".after(disconnected node)", function( assert ) { QUnit.test( "insertAfter(String)", function( assert ) { - assert.expect( 1 ) ; + assert.expect( 1 ); var expected = "This is a normal link: Yahoobuga"; jQuery( "buga" ).insertAfter( "#yahoo" ); @@ -1211,7 +1211,7 @@ QUnit.test( "insertAfter(jQuery)", function( assert ) { function testReplaceWith( val, assert ) { - var tmp, y, child, child2, set, non_existent, $div, + var tmp, y, child, child2, set, nonExistent, $div, expected = 29; assert.expect( expected ); @@ -1295,8 +1295,8 @@ function testReplaceWith( val, assert ) { assert.deepEqual( jQuery( ".pathological", "#qunit-fixture" ).get(), [], "Replacement with following sibling (context removed)" ); - non_existent = jQuery( "#does-not-exist" ).replaceWith( val( "should not throw an error" ) ); - assert.equal( non_existent.length, 0, "Length of non existent element." ); + nonExistent = jQuery( "#does-not-exist" ).replaceWith( val( "should not throw an error" ) ); + assert.equal( nonExistent.length, 0, "Length of non existent element." ); $div = jQuery( "
" ).appendTo( "#qunit-fixture" ); $div.replaceWith( val( "
" ); setTimeout( function() { - if ( window[ "testSrcFoo" ] === "foo" ) { - assert.strictEqual( window[ "testFoo" ], window[ "testSrcFoo" ], "data-URI script executed" ); + if ( window.testSrcFoo === "foo" ) { + assert.strictEqual( window.testFoo, window.testSrcFoo, "data-URI script executed" ); } else { assert.ok( true, "data-URI script is not supported by this environment" ); diff --git a/test/unit/offset.js b/test/unit/offset.js index 4caf36873..c0df5f1ca 100644 --- a/test/unit/offset.js +++ b/test/unit/offset.js @@ -79,8 +79,8 @@ testIframe( "absolute", "offset/absolute.html", function( assert, $, iframe ) { { "id": "#absolute-1", "top": 1, "left": 1 } ]; jQuery.each( tests, function() { - assert.equal( jQuery( this[ "id" ], doc ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset().top" ); - assert.equal( jQuery( this[ "id" ], doc ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset().left" ); + assert.equal( jQuery( this.id, doc ).offset().top, this.top, "jQuery('" + this.id + "').offset().top" ); + assert.equal( jQuery( this.id, doc ).offset().left, this.left, "jQuery('" + this.id + "').offset().left" ); } ); // get position @@ -88,8 +88,8 @@ testIframe( "absolute", "offset/absolute.html", function( assert, $, iframe ) { { "id": "#absolute-1", "top": 0, "left": 0 } ]; jQuery.each( tests, function() { - assert.equal( jQuery( this[ "id" ], doc ).position().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').position().top" ); - assert.equal( jQuery( this[ "id" ], doc ).position().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').position().left" ); + assert.equal( jQuery( this.id, doc ).position().top, this.top, "jQuery('" + this.id + "').position().top" ); + assert.equal( jQuery( this.id, doc ).position().left, this.left, "jQuery('" + this.id + "').position().left" ); } ); } ); @@ -106,8 +106,8 @@ testIframe( "absolute", "offset/absolute.html", function( assert, $ ) { { "id": "#absolute-2", "top": 20, "left": 20 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset().top" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset().left" ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset().top" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset().left" ); } ); // get position @@ -118,8 +118,8 @@ testIframe( "absolute", "offset/absolute.html", function( assert, $ ) { { "id": "#absolute-2", "top": 19, "left": 19 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).position().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').position().top" ); - assert.equal( $( this[ "id" ] ).position().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').position().left" ); + assert.equal( $( this.id ).position().top, this.top, "jQuery('" + this.id + "').position().top" ); + assert.equal( $( this.id ).position().left, this.left, "jQuery('" + this.id + "').position().left" ); } ); // test #5781 @@ -147,34 +147,34 @@ testIframe( "absolute", "offset/absolute.html", function( assert, $ ) { { "id": "#absolute-1", "top": 1, "left": 1 } ]; jQuery.each( tests, function() { - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ] } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset({ top: " + this[ "top" ] + " })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset({ left: " + this[ "left" ] + " })" ); + $( this.id ).offset( { "top": this.top, "left": this.left } ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" ); - var top = this[ "top" ], left = this[ "left" ]; + var top = this.top, left = this.left; - $( this[ "id" ] ).offset( function( i, val ) { + $( this.id ).offset( function( i, val ) { assert.equal( val.top, top, "Verify incoming top position." ); assert.equal( val.left, left, "Verify incoming top position." ); return { "top": top + 1, "left": left + 1 }; } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ top: " + ( this[ "top" ] + 1 ) + " })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ left: " + ( this[ "left" ] + 1 ) + " })" ); + assert.equal( $( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + ( this.top + 1 ) + " })" ); + assert.equal( $( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + ( this.left + 1 ) + " })" ); - $( this[ "id" ] ) - .offset( { "left": this[ "left" ] + 2 } ) - .offset( { "top": this[ "top" ] + 2 } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 2, "Setting one property at a time." ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 2, "Setting one property at a time." ); + $( this.id ) + .offset( { "left": this.left + 2 } ) + .offset( { "top": this.top + 2 } ); + assert.equal( $( this.id ).offset().top, this.top + 2, "Setting one property at a time." ); + assert.equal( $( this.id ).offset().left, this.left + 2, "Setting one property at a time." ); - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ], "using": function( props ) { + $( this.id ).offset( { "top": this.top, "left": this.left, "using": function( props ) { $( this ).css( { "top": props.top + 1, "left": props.left + 1 } ); } } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ top: " + ( this[ "top" ] + 1 ) + ", using: fn })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ left: " + ( this[ "left" ] + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + ( this.top + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + ( this.left + 1 ) + ", using: fn })" ); } ); } ); @@ -189,8 +189,8 @@ testIframe( "relative", "offset/relative.html", function( assert, $ ) { { "id": "#relative-2-1", "top": 149, "left": 52 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset().top" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset().left" ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset().top" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset().left" ); } ); // get position @@ -201,8 +201,8 @@ testIframe( "relative", "offset/relative.html", function( assert, $ ) { { "id": "#relative-2-1", "top": 5, "left": 5 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).position().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').position().top" ); - assert.equal( $( this[ "id" ] ).position().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').position().left" ); + assert.equal( $( this.id ).position().top, this.top, "jQuery('" + this.id + "').position().top" ); + assert.equal( $( this.id ).position().left, this.left, "jQuery('" + this.id + "').position().left" ); } ); // set offset @@ -221,18 +221,18 @@ testIframe( "relative", "offset/relative.html", function( assert, $ ) { { "id": "#relative-1", "top": 7, "left": 7 } ]; jQuery.each( tests, function() { - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ] } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset({ top: " + this[ "top" ] + " })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset({ left: " + this[ "left" ] + " })" ); + $( this.id ).offset( { "top": this.top, "left": this.left } ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" ); - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ], "using": function( props ) { + $( this.id ).offset( { "top": this.top, "left": this.left, "using": function( props ) { $( this ).css( { "top": props.top + 1, "left": props.left + 1 } ); } } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ top: " + ( this[ "top" ] + 1 ) + ", using: fn })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ left: " + ( this[ "left" ] + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + ( this.top + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + ( this.left + 1 ) + ", using: fn })" ); } ); } ); @@ -247,8 +247,8 @@ testIframe( "static", "offset/static.html", function( assert, $ ) { { "id": "#static-2", "top": 122, left: 7 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset().top" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset().left" ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset().top" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset().left" ); } ); // get position @@ -259,8 +259,8 @@ testIframe( "static", "offset/static.html", function( assert, $ ) { { "id": "#static-2", "top": 121, "left": 6 } ]; jQuery.each( tests, function() { - assert.equal( $( this[ "id" ] ).position().top, this[ "top" ], "jQuery('" + this[ "top" ] + "').position().top" ); - assert.equal( $( this[ "id" ] ).position().left, this[ "left" ], "jQuery('" + this[ "left" ] + "').position().left" ); + assert.equal( $( this.id ).position().top, this.top, "jQuery('" + this.top + "').position().top" ); + assert.equal( $( this.id ).position().left, this.left, "jQuery('" + this.left + "').position().left" ); } ); // set offset @@ -283,18 +283,18 @@ testIframe( "static", "offset/static.html", function( assert, $ ) { { "id": "#static-1", "top": 7, "left": 7 } ]; jQuery.each( tests, function() { - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ] } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset({ top: " + this[ "top" ] + " })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset({ left: " + this[ "left" ] + " })" ); + $( this.id ).offset( { "top": this.top, "left": this.left } ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" ); - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ], "using": function( props ) { + $( this.id ).offset( { "top": this.top, "left": this.left, "using": function( props ) { $( this ).css( { "top": props.top + 1, "left": props.left + 1 } ); } } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ top: " + ( this[ "top" ] + 1 ) + ", using: fn })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ left: " + ( this[ "left" ] + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + ( this.top + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + ( this.left + 1 ) + ", using: fn })" ); } ); } ); @@ -328,10 +328,10 @@ testIframe( "fixed", "offset/fixed.html", function( assert, $, window ) { assert.ok( true, "Browser doesn't support scroll position." ); } else if ( window.supportsFixedPosition ) { - assert.equal( $( this[ "id" ] ).offset().top, this[ "offsetTop" ], "jQuery('" + this[ "id" ] + "').offset().top" ); - assert.equal( $( this[ "id" ] ).position().top, this[ "positionTop" ], "jQuery('" + this[ "id" ] + "').position().top" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "offsetLeft" ], "jQuery('" + this[ "id" ] + "').offset().left" ); - assert.equal( $( this[ "id" ] ).position().left, this[ "positionLeft" ], "jQuery('" + this[ "id" ] + "').position().left" ); + assert.equal( $( this.id ).offset().top, this.offsetTop, "jQuery('" + this.id + "').offset().top" ); + assert.equal( $( this.id ).position().top, this.positionTop, "jQuery('" + this.id + "').position().top" ); + assert.equal( $( this.id ).offset().left, this.offsetLeft, "jQuery('" + this.id + "').offset().left" ); + assert.equal( $( this.id ).position().left, this.positionLeft, "jQuery('" + this.id + "').position().left" ); } else { // need to have same number of assertions @@ -353,18 +353,18 @@ testIframe( "fixed", "offset/fixed.html", function( assert, $, window ) { jQuery.each( tests, function() { if ( window.supportsFixedPosition ) { - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ] } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ], "jQuery('" + this[ "id" ] + "').offset({ top: " + this[ "top" ] + " })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ], "jQuery('" + this[ "id" ] + "').offset({ left: " + this[ "left" ] + " })" ); + $( this.id ).offset( { "top": this.top, "left": this.left } ); + assert.equal( $( this.id ).offset().top, this.top, "jQuery('" + this.id + "').offset({ top: " + this.top + " })" ); + assert.equal( $( this.id ).offset().left, this.left, "jQuery('" + this.id + "').offset({ left: " + this.left + " })" ); - $( this[ "id" ] ).offset( { "top": this[ "top" ], "left": this[ "left" ], "using": function( props ) { + $( this.id ).offset( { "top": this.top, "left": this.left, "using": function( props ) { $( this ).css( { "top": props.top + 1, "left": props.left + 1 } ); } } ); - assert.equal( $( this[ "id" ] ).offset().top, this[ "top" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ top: " + ( this[ "top" ] + 1 ) + ", using: fn })" ); - assert.equal( $( this[ "id" ] ).offset().left, this[ "left" ] + 1, "jQuery('" + this[ "id" ] + "').offset({ left: " + ( this[ "left" ] + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().top, this.top + 1, "jQuery('" + this.id + "').offset({ top: " + ( this.top + 1 ) + ", using: fn })" ); + assert.equal( $( this.id ).offset().left, this.left + 1, "jQuery('" + this.id + "').offset({ left: " + ( this.left + 1 ) + ", using: fn })" ); } else { // need to have same number of assertions @@ -549,8 +549,10 @@ QUnit.test( "iframe scrollTop/Left (see gh-1945)", function( assert ) { // Mobile Safari resize the iframe by its content meaning it's not possible to scroll // the iframe but only its parent element. // It seems (not confirmed) in android 4.0 it's not possible to scroll iframes from the code. - if ( /iphone os/i.test( navigator.userAgent ) || - /android 4\.0/i.test( navigator.userAgent ) ) { + if ( + /iphone os/i.test( navigator.userAgent ) || + /android 4\.0/i.test( navigator.userAgent ) + ) { assert.equal( true, true, "Can't scroll iframes in this environment" ); assert.equal( true, true, "Can't scroll iframes in this environment" ); diff --git a/test/unit/queue.js b/test/unit/queue.js index fa8b6717a..2248c68d4 100644 --- a/test/unit/queue.js +++ b/test/unit/queue.js @@ -232,7 +232,7 @@ QUnit.asyncTest( "fn.promise( \"queue\" ) - called whenever last queue function } ); if ( jQuery.fn.animate ) { - + QUnit.asyncTest( "fn.promise( \"queue\" ) - waits for animation to complete before resolving", 2, function( assert ) { var foo = jQuery( "#foo" ), test = 1; diff --git a/test/unit/selector.js b/test/unit/selector.js index 4c2449425..0177f4ba2 100644 --- a/test/unit/selector.js +++ b/test/unit/selector.js @@ -32,7 +32,7 @@ QUnit.test( "id", function( assert ) { assert.t( "ID selector with existing ID descendant", "#firstp #simon1", [ "simon1" ] ); assert.t( "ID selector with non-existent descendant", "#firstp #foobar", [] ); assert.t( "ID selector using UTF8", "#台北Táiběi", [ "台北Táiběi" ] ); - assert.t( "Multiple ID selectors using UTF8", "#台北Táiběi, #台北", [ "台北Táiběi","台北" ] ); + assert.t( "Multiple ID selectors using UTF8", "#台北Táiběi, #台北", [ "台北Táiběi", "台北" ] ); assert.t( "Descendant ID selector using UTF8", "div #台北", [ "台北" ] ); assert.t( "Child ID selector using UTF8", "form > #台北", [ "台北" ] ); @@ -103,14 +103,14 @@ QUnit.test( "selectors with comma", function( assert ) { QUnit.test( "child and adjacent", function( assert ) { assert.expect( 27 ); - assert.t( "Child", "p > a", [ "simon1","google","groups","mark","yahoo","simon" ] ); - assert.t( "Child", "p> a", [ "simon1","google","groups","mark","yahoo","simon" ] ); - assert.t( "Child", "p >a", [ "simon1","google","groups","mark","yahoo","simon" ] ); - assert.t( "Child", "p>a", [ "simon1","google","groups","mark","yahoo","simon" ] ); - assert.t( "Child w/ Class", "p > a.blog", [ "mark","simon" ] ); - assert.t( "All Children", "code > *", [ "anchor1","anchor2" ] ); - assert.selectInFixture( "All Grandchildren", "p > * > *", [ "anchor1","anchor2" ] ); - assert.t( "Adjacent", "p + p", [ "ap","en","sap" ] ); + assert.t( "Child", "p > a", [ "simon1", "google", "groups", "mark", "yahoo", "simon" ] ); + assert.t( "Child", "p> a", [ "simon1", "google", "groups", "mark", "yahoo", "simon" ] ); + assert.t( "Child", "p >a", [ "simon1", "google", "groups", "mark", "yahoo", "simon" ] ); + assert.t( "Child", "p>a", [ "simon1", "google", "groups", "mark", "yahoo", "simon" ] ); + assert.t( "Child w/ Class", "p > a.blog", [ "mark", "simon" ] ); + assert.t( "All Children", "code > *", [ "anchor1", "anchor2" ] ); + assert.selectInFixture( "All Grandchildren", "p > * > *", [ "anchor1", "anchor2" ] ); + assert.t( "Adjacent", "p + p", [ "ap", "en", "sap" ] ); assert.t( "Adjacent", "p#firstp + p", [ "ap" ] ); assert.t( "Adjacent", "p[lang=en] + p", [ "sap" ] ); assert.t( "Adjacent", "a.GROUPS + code + a", [ "mark" ] ); @@ -163,7 +163,7 @@ QUnit.test( "attributes", function( assert ) { assert.t( "Attribute Equals", "#qunit-fixture a[rel=bookmark]", [ "simon1" ] ); assert.t( "Attribute Equals", "#qunit-fixture a[href='http://www.google.com/']", [ "google" ] ); assert.t( "Attribute Equals", "#qunit-fixture a[ rel = 'bookmark' ]", [ "simon1" ] ); - assert.t( "Attribute Equals Number", "#qunit-fixture option[value='1']", [ "option1b","option2b","option3b","option4b","option5c" ] ); + assert.t( "Attribute Equals Number", "#qunit-fixture option[value='1']", [ "option1b", "option2b", "option3b", "option4b", "option5c" ] ); assert.t( "Attribute Equals Number", "#qunit-fixture li[tabIndex='-1']", [ "foodWithNegativeTabIndex" ] ); document.getElementById( "anchor2" ).href = "#2"; @@ -187,13 +187,13 @@ QUnit.test( "attributes", function( assert ) { assert.t( "Attribute selector using UTF8", "span[lang=中文]", [ "台北" ] ); - assert.t( "Attribute Begins With", "a[href ^= 'http://www']", [ "google","yahoo" ] ); + assert.t( "Attribute Begins With", "a[href ^= 'http://www']", [ "google", "yahoo" ] ); assert.t( "Attribute Ends With", "a[href $= 'org/']", [ "mark" ] ); - assert.t( "Attribute Contains", "a[href *= 'google']", [ "google","groups" ] ); + assert.t( "Attribute Contains", "a[href *= 'google']", [ "google", "groups" ] ); if ( jQuery.find.compile ) { - assert.t( "Empty values", "#select1 option[value!='']", [ "option1b","option1c","option1d" ] ); - assert.t( "Attribute Is Not Equal", "#ap a[hreflang!='en']", [ "google","groups","anchor1" ] ); + assert.t( "Empty values", "#select1 option[value!='']", [ "option1b", "option1c", "option1d" ] ); + assert.t( "Attribute Is Not Equal", "#ap a[hreflang!='en']", [ "google", "groups", "anchor1" ] ); assert.t( "Select options via :selected", "#select1 option:selected", [ "option1a" ] ); assert.t( "Select options via :selected", "#select2 option:selected", [ "option2d" ] ); assert.t( "Select options via :selected", "#select3 option:selected", [ "option3b", "option3c" ] ); @@ -493,7 +493,7 @@ testIframe( "Sizzle cache collides with multiple Sizzles on a page", "selector/sizzle_cache.html", function( assert, jQuery, window, document ) { - var $cached = window[ "$cached" ]; + var $cached = window.$cached; assert.expect( 4 ); assert.notStrictEqual( jQuery, $cached, "Loaded two engines" ); diff --git a/test/unit/serialize.js b/test/unit/serialize.js index 4c1416373..9d0afd7c3 100644 --- a/test/unit/serialize.js +++ b/test/unit/serialize.js @@ -8,7 +8,7 @@ QUnit.test( "jQuery.param()", function( assert ) { params = { "foo":"bar", "baz":42, "quux":"All your base are belong to us" }; assert.equal( jQuery.param( params ), "foo=bar&baz=42&quux=All%20your%20base%20are%20belong%20to%20us", "simple" ); - params = { "string":"foo","null":null,"undefined":undefined }; + params = { "string":"foo", "null":null, "undefined":undefined }; assert.equal( jQuery.param( params ), "string=foo&null=&undefined=", "handle nulls and undefineds properly" ); params = { "someName": [ 1, 2, 3 ], "regularThing": "blah" }; @@ -23,16 +23,16 @@ QUnit.test( "jQuery.param()", function( assert ) { params = { "foo": { "bar": "baz", "beep": 42, "quux": "All your base are belong to us" } }; assert.equal( jQuery.param( params ), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" ); - params = { a:[ 1,2 ], b:{ c:3, d:[ 4,5 ], e:{ x:[ 6 ], y:7, z:[ 8,9 ] }, f:true, g:false, h:undefined }, i:[ 10,11 ], j:true, k:false, l:[ undefined,0 ], m:"cowboy hat?" }; + params = { a:[ 1, 2 ], b:{ c:3, d:[ 4, 5 ], e:{ x:[ 6 ], y:7, z:[ 8, 9 ] }, f:true, g:false, h:undefined }, i:[ 10, 11 ], j:true, k:false, l:[ undefined, 0 ], m:"cowboy hat?" }; assert.equal( decodeURIComponent( jQuery.param( params ) ), "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=&i[]=10&i[]=11&j=true&k=false&l[]=&l[]=0&m=cowboy hat?", "huge structure" ); params = { "a": [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { "b": [ 7, [ 8, 9 ], [ { "c": 10, "d": 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { "e": { "f": { "g": [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] }; assert.equal( decodeURIComponent( jQuery.param( params ) ), "a[]=0&a[1][]=1&a[1][]=2&a[2][]=3&a[2][1][]=4&a[2][1][]=5&a[2][2][]=6&a[3][b][]=7&a[3][b][1][]=8&a[3][b][1][]=9&a[3][b][2][0][c]=10&a[3][b][2][0][d]=11&a[3][b][3][0][]=12&a[3][b][4][0][0][]=13&a[3][b][5][e][f][g][]=14&a[3][b][5][e][f][g][1][]=15&a[3][b][]=16&a[]=17", "nested arrays" ); - params = { "a":[ 1,2 ], "b":{ "c":3, "d":[ 4,5 ], "e":{ "x":[ 6 ], "y":7, "z":[ 8,9 ] }, "f":true, "g":false, "h":undefined }, "i":[ 10,11 ], "j":true, "k":false, "l":[ undefined,0 ], "m":"cowboy hat?" }; + params = { "a":[ 1, 2 ], "b":{ "c":3, "d":[ 4, 5 ], "e":{ "x":[ 6 ], "y":7, "z":[ 8, 9 ] }, "f":true, "g":false, "h":undefined }, "i":[ 10, 11 ], "j":true, "k":false, "l":[ undefined, 0 ], "m":"cowboy hat?" }; assert.equal( jQuery.param( params, true ), "a=1&a=2&b=%5Bobject%20Object%5D&i=10&i=11&j=true&k=false&l=&l=0&m=cowboy%20hat%3F", "huge structure, forced traditional" ); - assert.equal( decodeURIComponent( jQuery.param( { "a": [ 1,2,3 ], "b[]": [ 4,5,6 ], "c[d]": [ 7,8,9 ], "e": { "f": [ 10 ], "g": [ 11,12 ], "h": 13 } } ) ), "a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13", "Make sure params are not double-encoded." ); + assert.equal( decodeURIComponent( jQuery.param( { "a": [ 1, 2, 3 ], "b[]": [ 4, 5, 6 ], "c[d]": [ 7, 8, 9 ], "e": { "f": [ 10 ], "g": [ 11, 12 ], "h": 13 } } ) ), "a[]=1&a[]=2&a[]=3&b[]=4&b[]=5&b[]=6&c[d][]=7&c[d][]=8&c[d][]=9&e[f][]=10&e[g][]=11&e[g][]=12&e[h]=13", "Make sure params are not double-encoded." ); // #7945 assert.equal( jQuery.param( { "jquery": "1.4.2" } ), "jquery=1.4.2", "Check that object with a jQuery property get serialized correctly" ); @@ -52,13 +52,13 @@ QUnit.test( "jQuery.param()", function( assert ) { params = { "foo[bar]":"baz", "foo[beep]":42, "foo[quux]":"All your base are belong to us" }; assert.equal( jQuery.param( params, true ), "foo%5Bbar%5D=baz&foo%5Bbeep%5D=42&foo%5Bquux%5D=All%20your%20base%20are%20belong%20to%20us", "even more arrays" ); - params = { a:[ 1,2 ], b:{ c:3, d:[ 4,5 ], e:{ x:[ 6 ], y:7, z:[ 8,9 ] }, f:true, g:false, h:undefined }, i:[ 10,11 ], j:true, k:false, l:[ undefined,0 ], m:"cowboy hat?" }; + params = { a:[ 1, 2 ], b:{ c:3, d:[ 4, 5 ], e:{ x:[ 6 ], y:7, z:[ 8, 9 ] }, f:true, g:false, h:undefined }, i:[ 10, 11 ], j:true, k:false, l:[ undefined, 0 ], m:"cowboy hat?" }; assert.equal( jQuery.param( params, true ), "a=1&a=2&b=%5Bobject%20Object%5D&i=10&i=11&j=true&k=false&l=&l=0&m=cowboy%20hat%3F", "huge structure" ); params = { "a": [ 0, [ 1, 2 ], [ 3, [ 4, 5 ], [ 6 ] ], { "b": [ 7, [ 8, 9 ], [ { "c": 10, d: 11 } ], [ [ 12 ] ], [ [ [ 13 ] ] ], { "e": { "f": { "g": [ 14, [ 15 ] ] } } }, 16 ] }, 17 ] }; assert.equal( jQuery.param( params, true ), "a=0&a=1%2C2&a=3%2C4%2C5%2C6&a=%5Bobject%20Object%5D&a=17", "nested arrays (not possible when traditional == true)" ); - params = { a:[ 1,2 ], b:{ c:3, d:[ 4,5 ], e:{ x:[ 6 ], y:7, z:[ 8,9 ] }, f:true, g:false, h:undefined }, i:[ 10,11 ], j:true, k:false, l:[ undefined,0 ], m:"cowboy hat?" }; + params = { a:[ 1, 2 ], b:{ c:3, d:[ 4, 5 ], e:{ x:[ 6 ], y:7, z:[ 8, 9 ] }, f:true, g:false, h:undefined }, i:[ 10, 11 ], j:true, k:false, l:[ undefined, 0 ], m:"cowboy hat?" }; assert.equal( decodeURIComponent( jQuery.param( params ) ), "a[]=1&a[]=2&b[c]=3&b[d][]=4&b[d][]=5&b[e][x][]=6&b[e][y]=7&b[e][z][]=8&b[e][z][]=9&b[f]=true&b[g]=false&b[h]=&i[]=10&i[]=11&j=true&k=false&l[]=&l[]=0&m=cowboy hat?", "huge structure, forced not traditional" ); params = { "param1": null }; @@ -92,7 +92,7 @@ QUnit.test( "jQuery.param() Constructed prop values", function( assert ) { /** @constructor */ function Record() { - this[ "prop" ] = "val"; + this.prop = "val"; } var MyString = String, diff --git a/test/unit/wrap.js b/test/unit/wrap.js index 02994bafa..65af2b4b2 100644 --- a/test/unit/wrap.js +++ b/test/unit/wrap.js @@ -472,7 +472,7 @@ QUnit.test( "unwrap( selector )", function( assert ) { jQuery( "#unwrap1" ).length, 1, "still wrapped" ); - // Shouldn't unwrap, no match + // Shouldn't unwrap, no match jQuery( "#unwrap1 span" ) .unwrap( "span" ); assert.equal( jQuery( "#unwrap1" ).length, 1, "still wrapped"