aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichał Gołębiowski-Owczarek <m.goleb@gmail.com>2020-01-07 23:59:08 +0100
committerGitHub <noreply@github.com>2020-01-07 23:59:08 +0100
commit0f780ba7cc5968d53bba386bdcb59b8d9410873b (patch)
tree7b67a1637447eea398606dc516e1f7a8cd8e22ab
parent1dad1185e0b2ca2a13bf411558eda75fb2d4da88 (diff)
downloadjquery-0f780ba7cc5968d53bba386bdcb59b8d9410873b.tar.gz
jquery-0f780ba7cc5968d53bba386bdcb59b8d9410873b.zip
Build:Tests: Fix custom build tests, verify on Travis
This commit fixes unit tests for the following builds: 1. The no-deprecated build: `custom:-deprecated` 2. The current slim build: `custom:-ajax,-effects` 3. The future (#4553) slim build: `custom:-ajax,-callbacks,-deferred,-effects` It also adds separate Travis jobs for the no-deprecated & slim builds. Closes gh-4577
-rw-r--r--.gitignore1
-rw-r--r--.travis.yml14
-rw-r--r--Gruntfile.js10
-rw-r--r--build/tasks/node_smoke_tests.js2
-rw-r--r--package.json4
-rw-r--r--src/ajax.js2
-rw-r--r--src/core/parseXML.js (renamed from src/ajax/parseXML.js)0
-rw-r--r--src/jquery.js3
-rw-r--r--test/data/core/dynamic_ready.html2
-rw-r--r--test/data/offset/absolute.html14
-rw-r--r--test/data/offset/body.html10
-rw-r--r--test/data/offset/fixed.html8
-rw-r--r--test/data/offset/relative.html14
-rw-r--r--test/data/offset/scroll.html16
-rw-r--r--test/data/offset/static.html14
-rw-r--r--test/data/offset/table.html10
-rw-r--r--test/data/qunit-fixture.js2
-rw-r--r--test/unit/ajax.js16
-rw-r--r--test/unit/callbacks.js8
-rw-r--r--test/unit/deferred.js8
-rw-r--r--test/unit/deprecated.js47
-rw-r--r--test/unit/event.js7
-rw-r--r--test/unit/manipulation.js9
-rw-r--r--test/unit/queue.js8
-rw-r--r--test/unit/ready.js27
-rw-r--r--test/unit/serialize.js2
26 files changed, 174 insertions, 84 deletions
diff --git a/.gitignore b/.gitignore
index a6685904e..836cb81c4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -21,3 +21,4 @@ npm-debug.log*
/node_modules
/test/data/core/jquery-iterability-transpiled.js
+/test/data/qunit-fixture.js
diff --git a/.travis.yml b/.travis.yml
index 114a9e9b2..02a0e04dd 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -17,6 +17,20 @@ matrix:
addons:
chrome: stable
firefox: latest
+ # Run tests against the slim build.
+ - node_js: "12"
+ env:
+ - NPM_SCRIPT="test:slim"
+ - BROWSERS="ChromeHeadless"
+ addons:
+ chrome: stable
+ # Run tests against the no-deprecated build.
+ - node_js: "12"
+ env:
+ - NPM_SCRIPT="test:no-deprecated"
+ - BROWSERS="ChromeHeadless"
+ addons:
+ chrome: stable
# Run ES module tests.
- node_js: "12"
env:
diff --git a/Gruntfile.js b/Gruntfile.js
index 2a6226a03..c966ef99e 100644
--- a/Gruntfile.js
+++ b/Gruntfile.js
@@ -41,7 +41,7 @@ module.exports = function( grunt ) {
retainLines: true,
plugins: [ "@babel/transform-for-of" ]
},
- nodeSmokeTests: {
+ tests: {
files: {
"test/data/core/jquery-iterability-transpiled.js":
"test/data/core/jquery-iterability-transpiled-es6.js"
@@ -314,7 +314,13 @@ module.exports = function( grunt ) {
"karma:jsdom"
] );
+ grunt.registerTask( "test:prepare", [
+ "qunit_fixture",
+ "babel:tests"
+ ] );
+
grunt.registerTask( "test", [
+ "test:prepare",
"test:fast",
"test:slow"
] );
@@ -336,7 +342,7 @@ module.exports = function( grunt ) {
"uglify",
"remove_map_comment",
"dist:*",
- "qunit_fixture",
+ "test:prepare",
"eslint:dist",
"test:fast",
"compare_size"
diff --git a/build/tasks/node_smoke_tests.js b/build/tasks/node_smoke_tests.js
index 40c49a4d9..574a63b4a 100644
--- a/build/tasks/node_smoke_tests.js
+++ b/build/tasks/node_smoke_tests.js
@@ -4,7 +4,7 @@ module.exports = ( grunt ) => {
const fs = require( "fs" );
const spawnTest = require( "./lib/spawn_test.js" );
const testsDir = "./test/node_smoke_tests/";
- const nodeSmokeTests = [ "babel:nodeSmokeTests" ];
+ const nodeSmokeTests = [];
// Fire up all tests defined in test/node_smoke_tests/*.js in spawned sub-processes.
// All the files under test/node_smoke_tests/*.js are supposed to exit with 0 code
diff --git a/package.json b/package.json
index 73789b2c2..6500d4458 100644
--- a/package.json
+++ b/package.json
@@ -74,7 +74,9 @@
"test:browser": "grunt && grunt karma:main",
"test:esmodules": "grunt && grunt karma:esmodules",
"test:amd": "grunt && grunt karma:amd",
- "test": "grunt && grunt test:slow && grunt karma:main && grunt karma:esmodules && grunt karma:amd",
+ "test:no-deprecated": "grunt test:prepare && grunt custom:-deprecated && grunt karma:main",
+ "test:slim": "grunt test:prepare && grunt custom:slim && grunt karma:main",
+ "test": "npm run test:slim && npm run test:no-deprecated && grunt && grunt test:slow && grunt karma:main && grunt karma:esmodules && grunt karma:amd",
"jenkins": "npm run test:browserless"
},
"commitplease": {
diff --git a/src/ajax.js b/src/ajax.js
index 3d4ce017b..44ec6e83b 100644
--- a/src/ajax.js
+++ b/src/ajax.js
@@ -6,7 +6,7 @@ import nonce from "./ajax/var/nonce.js";
import rquery from "./ajax/var/rquery.js";
import "./core/init.js";
-import "./ajax/parseXML.js";
+import "./core/parseXML.js";
import "./event/trigger.js";
import "./deferred.js";
import "./serialize.js"; // jQuery.param
diff --git a/src/ajax/parseXML.js b/src/core/parseXML.js
index d547eab53..d547eab53 100644
--- a/src/ajax/parseXML.js
+++ b/src/core/parseXML.js
diff --git a/src/jquery.js b/src/jquery.js
index 24e58a93c..53515267b 100644
--- a/src/jquery.js
+++ b/src/jquery.js
@@ -21,8 +21,9 @@ import "./ajax.js";
import "./ajax/xhr.js";
import "./ajax/script.js";
import "./ajax/jsonp.js";
-import "./core/parseHTML.js";
import "./ajax/load.js";
+import "./core/parseXML.js";
+import "./core/parseHTML.js";
import "./event/ajax.js";
import "./effects.js";
import "./effects/animatedSelector.js";
diff --git a/test/data/core/dynamic_ready.html b/test/data/core/dynamic_ready.html
index e8180cd2b..fade7adc2 100644
--- a/test/data/core/dynamic_ready.html
+++ b/test/data/core/dynamic_ready.html
@@ -2,7 +2,7 @@
<html>
<head>
<meta charset="utf-8">
- <script src="../../jquery.js"></script>
+ <script src="../jquery-1.9.1.js"></script>
<script>var $j = jQuery.noConflict();</script>
<script src="../iframeTest.js"></script>
</head>
diff --git a/test/data/offset/absolute.html b/test/data/offset/absolute.html
index 9d8700465..4883e81be 100644
--- a/test/data/offset/absolute.html
+++ b/test/data/offset/absolute.html
@@ -18,15 +18,15 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- $(".absolute").click(function() {
- $("#marker").css( $(this).offset() );
- var pos = $(this).position();
- $(this).css({ top: pos.top, left: pos.left });
+ jQuery( function( $ ) {
+ $( ".absolute" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
+ var pos = $( this ).position();
+ $( this ).css( { top: pos.top, left: pos.left } );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/offset/body.html b/test/data/offset/body.html
index 75757d7e6..a27e242af 100644
--- a/test/data/offset/body.html
+++ b/test/data/offset/body.html
@@ -12,13 +12,13 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- $("body").click(function() {
- $("marker").css( $(this).offset() );
+ jQuery( function( $ ) {
+ $( "body" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/offset/fixed.html b/test/data/offset/fixed.html
index 48a2c4797..9016f87a9 100644
--- a/test/data/offset/fixed.html
+++ b/test/data/offset/fixed.html
@@ -15,10 +15,10 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- window.scrollTo(1000,1000);
- $(".fixed").click(function() {
- $("#marker").css( $(this).offset() );
+ jQuery( function( $ ) {
+ window.scrollTo( 1000, 1000 );
+ $( ".fixed" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
return false;
});
startIframeTest();
diff --git a/test/data/offset/relative.html b/test/data/offset/relative.html
index 288fd4ea3..0a092375d 100644
--- a/test/data/offset/relative.html
+++ b/test/data/offset/relative.html
@@ -14,15 +14,15 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- $(".relative").click(function() {
- $("#marker").css( $(this).offset() );
- var pos = $(this).position();
- $(this).css({ position: 'absolute', top: pos.top, left: pos.left });
+ jQuery( function( $ ) {
+ $( ".relative" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
+ var pos = $( this ).position();
+ $( this ).css( { position: 'absolute', top: pos.top, left: pos.left } );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/offset/scroll.html b/test/data/offset/scroll.html
index 28cade1c3..3b9848fe4 100644
--- a/test/data/offset/scroll.html
+++ b/test/data/offset/scroll.html
@@ -17,16 +17,16 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- window.scrollTo(1000,1000);
- $("#scroll-1")[0].scrollLeft = 5;
- $("#scroll-1")[0].scrollTop = 5;
- $(".scroll").click(function() {
- $("#marker").css( $(this).offset() );
+ jQuery( function( $ ) {
+ window.scrollTo( 1000, 1000 );
+ $( "#scroll-1" )[ 0 ].scrollLeft = 5;
+ $( "#scroll-1" )[ 0 ].scrollTop = 5;
+ $( ".scroll" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/offset/static.html b/test/data/offset/static.html
index 1f4c3dc3d..913f9d260 100644
--- a/test/data/offset/static.html
+++ b/test/data/offset/static.html
@@ -13,15 +13,15 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- $(".static").click(function() {
- $("#marker").css( $(this).offset() );
- var pos = $(this).position();
- $(this).css({ position: 'absolute', top: pos.top, left: pos.left });
+ jQuery( function( $ ) {
+ $( ".static" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
+ var pos = $( this ).position();
+ $( this ).css( { position: 'absolute', top: pos.top, left: pos.left } );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/offset/table.html b/test/data/offset/table.html
index eeac19b77..1650e7297 100644
--- a/test/data/offset/table.html
+++ b/test/data/offset/table.html
@@ -13,13 +13,13 @@
<script src="../../jquery.js"></script>
<script src="../iframeTest.js"></script>
<script type="text/javascript" charset="utf-8">
- jQuery(function($) {
- $("table, th, td").click(function() {
- $("#marker").css( $(this).offset() );
+ jQuery( function( $ ) {
+ $( "table, th, td" ).on( "click", function() {
+ $( "#marker" ).css( $( this ).offset() );
return false;
- });
+ } );
startIframeTest();
- });
+ } );
</script>
</head>
<body>
diff --git a/test/data/qunit-fixture.js b/test/data/qunit-fixture.js
deleted file mode 100644
index 9ec615c96..000000000
--- a/test/data/qunit-fixture.js
+++ /dev/null
@@ -1,2 +0,0 @@
-// Generated by build/tasks/qunit_fixture.js
-QUnit.config.fixture = "<p id=\"firstp\">See <a id=\"simon1\" href=\"https://simon.incutio.com/archive/2003/03/25/#getElementsBySelector\" rel=\"bookmark\">this blog entry</a> for more information.</p>\n<p id=\"ap\">\n\tHere are some [links] in a normal paragraph: <a id=\"google\" href=\"https://www.google.com/\" title=\"Google!\">Google</a>,\n\t<a id=\"groups\" href=\"https://groups.google.com/\" class=\"GROUPS\">Google Groups (Link)</a>.\n\tThis link has <code id=\"code1\"><a href=\"https://smin\" id=\"anchor1\">class=\"blog\"</a></code>:\n\t<a href=\"https://diveintomark.org/\" class=\"blog\" hreflang=\"en\" id=\"mark\">diveintomark</a>\n\n</p>\n<div id=\"foo\">\n\t<p id=\"sndp\">Everything inside the red border is inside a div with <code>id=\"foo\"</code>.</p>\n\t<p lang=\"en\" id=\"en\">This is a normal link: <a id=\"yahoo\" href=\"https://www.yahoo.com/\" class=\"blogTest\">Yahoo</a></p>\n\t<p id=\"sap\">This link has <code><a href=\"#2\" id=\"anchor2\">class=\"blog\"</a></code>: <a href=\"https://simon.incutio.com/\" class=\"blog link\" id=\"simon\">Simon Willison's Weblog</a></p>\n\n</div>\n<div id=\"nothiddendiv\" style=\"height:1px;background:white;\" class=\"nothiddendiv\">\n\t<div id=\"nothiddendivchild\"></div>\n</div>\n<span id=\"name+value\"></span>\n<p id=\"first\">Try them out:</p>\n<ul id=\"firstUL\"></ul>\n<ol id=\"empty\"></ol>\n<form id=\"form\" action=\"formaction\">\n\t<label for=\"action\" id=\"label-for\">Action:</label>\n\t<input type=\"text\" name=\"action\" value=\"Test\" id=\"text1\" maxlength=\"30\"/>\n\t<input type=\"text\" name=\"text2\" value=\"Test\" id=\"text2\" disabled=\"disabled\"/>\n\t<input type=\"radio\" name=\"radio1\" id=\"radio1\" value=\"on\"/>\n\n\t<input type=\"radio\" name=\"radio2\" id=\"radio2\" checked=\"checked\"/>\n\t<input type=\"checkbox\" name=\"check\" id=\"check1\" checked=\"checked\"/>\n\t<input type=\"checkbox\" id=\"check2\" value=\"on\"/>\n\n\t<input type=\"hidden\" name=\"hidden\" id=\"hidden1\"/>\n\t<input type=\"text\" style=\"display:none;\" name=\"foo[bar]\" id=\"hidden2\"/>\n\n\t<input type=\"text\" id=\"name\" name=\"name\" value=\"name\" />\n\t<input type=\"search\" id=\"search\" name=\"search\" value=\"search\" />\n\n\t<button id=\"button\" name=\"button\" type=\"button\">Button</button>\n\n\t<textarea id=\"area1\" maxlength=\"30\">foobar</textarea>\n\n\t<select name=\"select1\" id=\"select1\">\n\t\t<option id=\"option1a\" class=\"emptyopt\" value=\"\">Nothing</option>\n\t\t<option id=\"option1b\" value=\"1\">1</option>\n\t\t<option id=\"option1c\" value=\"2\">2</option>\n\t\t<option id=\"option1d\" value=\"3\">3</option>\n\t</select>\n\t<select name=\"select2\" id=\"select2\">\n\t\t<option id=\"option2a\" class=\"emptyopt\" value=\"\">Nothing</option>\n\t\t<option id=\"option2b\" value=\"1\">1</option>\n\t\t<option id=\"option2c\" value=\"2\">2</option>\n\t\t<option id=\"option2d\" selected=\"selected\" value=\"3\">3</option>\n\t</select>\n\t<select name=\"select3\" id=\"select3\" multiple=\"multiple\">\n\t\t<option id=\"option3a\" class=\"emptyopt\" value=\"\">Nothing</option>\n\t\t<option id=\"option3b\" selected=\"selected\" value=\"1\">1</option>\n\t\t<option id=\"option3c\" selected=\"selected\" value=\"2\">2</option>\n\t\t<option id=\"option3d\" value=\"3\">3</option>\n\t\t<option id=\"option3e\">no value</option>\n\t</select>\n\t<select name=\"select4\" id=\"select4\" multiple=\"multiple\">\n\t\t<optgroup disabled=\"disabled\">\n\t\t\t<option id=\"option4a\" class=\"emptyopt\" value=\"\">Nothing</option>\n\t\t\t<option id=\"option4b\" disabled=\"disabled\" selected=\"selected\" value=\"1\">1</option>\n\t\t\t<option id=\"option4c\" selected=\"selected\" value=\"2\">2</option>\n\t\t</optgroup>\n\t\t<option selected=\"selected\" disabled=\"disabled\" id=\"option4d\" value=\"3\">3</option>\n\t\t<option id=\"option4e\">no value</option>\n\t</select>\n\t<select name=\"select5\" id=\"select5\">\n\t\t<option id=\"option5a\" value=\"3\">1</option>\n\t\t<option id=\"option5b\" value=\"2\">2</option>\n\t\t<option id=\"option5c\" value=\"1\" data-attr=\"\">3</option>\n\t</select>\n\n\t<object id=\"object1\" codebase=\"stupid\">\n\t\t<param name=\"p1\" value=\"x1\" />\n\t\t<param name=\"p2\" value=\"x2\" />\n\t</object>\n\n\t<span id=\"台北Táiběi\"><span id=\"台北Táiběi-child\"></span></span>\n\t<span id=\"台北\" lang=\"中文\"></span>\n\t<span id=\"utf8class1\" class=\"台北Táiběi 台北\">\"'台北Táiběi\"'</span>\n\t<span id=\"utf8class2\" class=\"台北\"></span>\n\t<span id=\"foo:bar\" class=\"foo:bar\"><span id=\"foo_descendant\"></span></span>\n\t<span id=\"test.foo[5]bar\" class=\"test.foo[5]bar\"></span>\n\n\t<foo_bar id=\"foobar\">test element</foo_bar>\n</form>\n<b id=\"floatTest\">Float test.</b>\n<iframe id=\"iframe\" name=\"iframe\"></iframe>\n<form id=\"lengthtest\">\n\t<input type=\"text\" id=\"length\" name=\"test\"/>\n\t<input type=\"text\" id=\"idTest\" name=\"id\"/>\n</form>\n<table id=\"table\"></table>\n\n<form id=\"name-tests\">\n\t<!-- Inputs with a grouped name attribute. -->\n\t<input name=\"types[]\" id=\"types_all\" type=\"checkbox\" value=\"all\" />\n\t<input name=\"types[]\" id=\"types_anime\" type=\"checkbox\" value=\"anime\" />\n\t<input name=\"types[]\" id=\"types_movie\" type=\"checkbox\" value=\"movie\" />\n</form>\n\n<form id=\"testForm\" action=\"#\" method=\"get\">\n\t<textarea name=\"T3\" rows=\"2\" cols=\"15\">?\nZ</textarea>\n\t<input type=\"hidden\" name=\"H1\" value=\"x\" />\n\t<input type=\"hidden\" name=\"H2\" />\n\t<input name=\"PWD\" type=\"password\" value=\"\" />\n\t<input name=\"T1\" type=\"text\" />\n\t<input name=\"T2\" type=\"text\" value=\"YES\" readonly=\"readonly\" />\n\t<input type=\"checkbox\" name=\"C1\" value=\"1\" />\n\t<input type=\"checkbox\" name=\"C2\" />\n\t<input type=\"radio\" name=\"R1\" value=\"1\" />\n\t<input type=\"radio\" name=\"R1\" value=\"2\" />\n\t<input type=\"text\" name=\"My Name\" value=\"me\" />\n\t<input type=\"reset\" name=\"reset\" value=\"NO\" />\n\t<div class=\"empty-name-container\">\n\t\t<div id=\"empty-name-parent\">\n\t\t\t<input type=\"text\" id=\"name-empty\" name=\"\" value=\"\" />\n\t\t</div>\n\t</div>\n\t<select name=\"S1\">\n\t\t<option value=\"abc\">ABC</option>\n\t\t<option value=\"abc\">ABC</option>\n\t\t<option value=\"abc\">ABC</option>\n\t</select>\n\t<select name=\"S2\" multiple=\"multiple\" size=\"3\">\n\t\t<option value=\"abc\">ABC</option>\n\t\t<option value=\"abc\">ABC</option>\n\t\t<option value=\"abc\">ABC</option>\n\t</select>\n\t<select name=\"S3\">\n\t\t<option selected=\"selected\">YES</option>\n\t</select>\n\t<select name=\"S4\">\n\t\t<option value=\"\" selected=\"selected\">NO</option>\n\t</select>\n\t<input type=\"submit\" name=\"sub1\" value=\"NO\" />\n\t<input type=\"submit\" name=\"sub2\" value=\"NO\" />\n\t<input type=\"image\" name=\"sub3\" value=\"NO\" />\n\t<button name=\"sub4\" type=\"submit\" value=\"NO\">NO</button>\n\t<input name=\"D1\" type=\"text\" value=\"NO\" disabled=\"disabled\" />\n\t<input type=\"checkbox\" checked=\"checked\" disabled=\"disabled\" name=\"D2\" value=\"NO\" />\n\t<input type=\"radio\" name=\"D3\" value=\"NO\" checked=\"checked\" disabled=\"disabled\" />\n\t<select name=\"D4\" disabled=\"disabled\">\n\t\t<option selected=\"selected\" value=\"NO\">NO</option>\n\t</select>\n\t<input id=\"list-test\" type=\"text\" />\n\t<datalist id=\"datalist\">\n\t\t<option value=\"option\"></option>\n\t</datalist>\n</form>\n<div id=\"moretests\">\n\t<form>\n\t\t<div id=\"checkedtest\" style=\"display:none;\">\n\t\t\t<input type=\"radio\" name=\"checkedtestradios\" checked=\"checked\"/>\n\t\t\t<input type=\"radio\" name=\"checkedtestradios\" value=\"on\"/>\n\t\t\t<input type=\"checkbox\" name=\"checkedtestcheckboxes\" checked=\"checked\"/>\n\t\t\t<input type=\"checkbox\" name=\"checkedtestcheckboxes\" />\n\t\t</div>\n\t</form>\n\t<div id=\"nonnodes\"><span id=\"nonnodesElement\">hi</span> there <!-- mon ami --></div>\n\t<div id=\"t2037\">\n\t\t<div><div class=\"hidden\">hidden</div></div>\n\t</div>\n\t<div id=\"t6652\">\n\t\t<div></div>\n\t</div>\n\t<div id=\"t12087\">\n\t\t<input type=\"hidden\" id=\"el12087\" data-comma=\"0,1\"/>\n\t</div>\n\t<div id=\"no-clone-exception\"><object><embed></embed></object></div>\n\t<div id=\"names-group\">\n\t\t<span id=\"name-is-example\" name=\"example\"></span>\n\t\t<span id=\"name-is-div\" name=\"div\"></span>\n\t</div>\n\t<div id=\"id-name-tests\">\n\t\t<a id=\"tName1ID\" name=\"tName1\"><span></span></a>\n\t\t<a id=\"tName2ID\" name=\"tName2\"><span></span></a>\n\t\t<div id=\"tName1\"><span id=\"tName1-span\">C</span></div>\n\t</div>\n\t<div id=\"whitespace-lists\">\n\t\t<input id=\"t15233-single\" data-15233=\"foo\"/>\n\t\t<input id=\"t15233-double\" data-15233=\"foo bar\"/>\n\t\t<input id=\"t15233-double-tab\" data-15233=\"foo\tbar\"/>\n\t\t<input id=\"t15233-double-nl\" data-15233=\"foo&#xA;bar\"/>\n\t\t<input id=\"t15233-triple\" data-15233=\"foo bar baz\"/>\n\t</div>\n</div>\n\n<div id=\"tabindex-tests\">\n\t<ol id=\"listWithTabIndex\" tabindex=\"5\">\n\t\t<li id=\"foodWithNegativeTabIndex\" tabindex=\"-1\">Rice</li>\n\t\t<li id=\"foodNoTabIndex\">Beans</li>\n\t\t<li>Blinis</li>\n\t\t<li>Tofu</li>\n\t</ol>\n\n\t<div id=\"divWithNoTabIndex\">I'm hungry. I should...</div>\n\t<span>...</span><a href=\"#\" id=\"linkWithNoTabIndex\">Eat lots of food</a><span>...</span> |\n\t<span>...</span><a href=\"#\" id=\"linkWithTabIndex\" tabindex=\"2\">Eat a little food</a><span>...</span> |\n\t<span>...</span><a href=\"#\" id=\"linkWithNegativeTabIndex\" tabindex=\"-1\">Eat no food</a><span>...</span>\n\t<span>...</span><a id=\"linkWithNoHrefWithNoTabIndex\">Eat a burger</a><span>...</span>\n\t<span>...</span><a id=\"linkWithNoHrefWithTabIndex\" tabindex=\"1\">Eat some funyuns</a><span>...</span>\n\t<span>...</span><a id=\"linkWithNoHrefWithNegativeTabIndex\" tabindex=\"-1\">Eat some funyuns</a><span>...</span>\n\t<input id=\"inputWithoutTabIndex\"/>\n\t<button id=\"buttonWithoutTabIndex\"></button>\n\t<textarea id=\"textareaWithoutTabIndex\"></textarea>\n\t<menu type=\"popup\">\n\t\t<menuitem id=\"menuitemWithoutTabIndex\" command=\"submitbutton\" default/>\n\t</menu>\n</div>\n\n<div id=\"liveHandlerOrder\">\n\t<span id=\"liveSpan1\"><a href=\"#\" id=\"liveLink1\"></a></span>\n\t<span id=\"liveSpan2\"><a href=\"#\" id=\"liveLink2\"></a></span>\n</div>\n\n<form id=\"disabled-tests\">\n\t<fieldset id=\"disabled-fieldset\" disabled=\"disabled\">\n\t\t<a id=\"disabled-fieldset-a\" href=\"#\"></a>\n\t\t<input id=\"disabled-fieldset-input\" name=\"disabled-fieldset-input\" type=\"text\" />\n\t\t<textarea id=\"disabled-fieldset-textarea\" name=\"disabled-fieldset-textarea\" ></textarea>\n\t\t<button id=\"disabled-fieldset-button\" name=\"disabled-fieldset-button\">Go</button>\n\t\t<!-- exclude <select> because IE6 is bugged and fails\n\t\t<select id=\"disabled-fieldset-select\" name=\"disabled-fieldset-select\"></select>\n\t\t-->\n\t\t<span id=\"disabled-fieldset-span\">Neither enabled nor disabled</span>\n\t</fieldset>\n\t<fieldset id=\"enabled-fieldset\">\n\t\t<a id=\"disabled-a\" href=\"#\" disabled=\"disabled\"></a>\n\t\t<input id=\"disabled-input\" name=\"disabled-input\" type=\"text\" disabled=\"disabled\"/>\n\t\t<textarea id=\"disabled-textarea\" name=\"disabled-textarea\" disabled=\"disabled\"></textarea>\n\t\t<button id=\"disabled-button\" name=\"disabled-button\" disabled=\"disabled\">Go</button>\n\t\t<select id=\"disabled-select\" name=\"disabled-select\" disabled=\"disabled\">\n\t\t\t<optgroup id=\"disabled-optgroup\" label=\"and\" disabled=\"disabled\">\n\t\t\t\t<option id=\"disabled-option\" disabled=\"disabled\">Black</option>\n\t\t\t</optgroup>\n\t\t</select>\n\t\t<input id=\"enabled-input\" name=\"enabled-input\" type=\"text\"/>\n\t\t<textarea id=\"enabled-textarea\" name=\"enabled-textarea\"></textarea>\n\t\t<button id=\"enabled-button\" name=\"enabled-button\">Go</button>\n\t\t<select id=\"enabled-select\" name=\"enabled-select\">\n\t\t\t<optgroup id=\"enabled-optgroup\" label=\"and\">\n\t\t\t\t<option id=\"enabled-option\">Gold</option>\n\t\t\t</optgroup>\n\t\t</select>\n\t\t<span id=\"enabled-fieldset-span\">Neither enabled nor disabled</span>\n\t</fieldset>\n\t<select id=\"disabled-select-inherit\" name=\"disabled-select-inherit\" disabled=\"disabled\">\n\t\t<optgroup id=\"disabled-optgroup-inherit\" label=\"and\" disabled=\"disabled\">\n\t\t\t<option id=\"disabled-optgroup-option\">Black</option>\n\t\t</optgroup>\n\t\t<optgroup id=\"enabled-optgroup-inherit\" label=\"and\">\n\t\t\t<option id=\"enabled-optgroup-option\">Gold</option>\n\t\t</optgroup>\n\t</select>\n\t<select id=\"enabled-select-inherit\" name=\"enabled-select-inherit\">\n\t\t<optgroup id=\"en_disabled-optgroup-inherit\" label=\"and\" disabled=\"disabled\">\n\t\t\t<option id=\"en_disabled-optgroup-option\">Black</option>\n\t\t</optgroup>\n\t\t<option id=\"enabled-select-option\">Black</option>\n\t</select>\n</form>\n\n<div id=\"siblingTest\">\n\t<em id=\"siblingfirst\">1</em>\n\t<em id=\"siblingnext\">2</em>\n\t<em id=\"siblingthird\">\n\t\t<em id=\"siblingchild\">\n\t\t\t<em id=\"siblinggrandchild\">\n\t\t\t\t<em id=\"siblinggreatgrandchild\"></em>\n\t\t\t</em>\n\t\t</em>\n\t</em>\n\t<span id=\"siblingspan\"></span>\n</div>\n<div id=\"fx-test-group\" style=\"position: absolute; width: 1px; height: 1px; overflow: hidden;\">\n\t<div id=\"fx-queue\" name=\"test\">\n\t\t<div id=\"fadein\" class='chain-test'>fadeIn<div>fadeIn</div></div>\n\t\t<div id=\"fadeout\" class='chain-test chain-test-out'>fadeOut<div>fadeOut</div></div>\n\n\t\t<div id=\"show\" class='chain-test'>show<div>show</div></div>\n\t\t<div id=\"hide\" class='chain-test chain-test-out'>hide<div>hide</div></div>\n\t\t<div id=\"easehide\" class='chain-test chain-test-out'>hide<div>hide</div></div>\n\n\t\t<div id=\"togglein\" class='chain-test'>togglein<div>togglein</div></div>\n\t\t<div id=\"toggleout\" class='chain-test chain-test-out'>toggleout<div>toggleout</div></div>\n\t\t<div id=\"easetoggleout\" class='chain-test chain-test-out'>toggleout<div>toggleout</div></div>\n\n\t\t<div id=\"slideup\" class='chain-test'>slideUp<div>slideUp</div></div>\n\t\t<div id=\"slidedown\" class='chain-test chain-test-out'>slideDown<div>slideDown</div></div>\n\t\t<div id=\"easeslideup\" class='chain-test'>slideUp<div>slideUp</div></div>\n\n\t\t<div id=\"slidetogglein\" class='chain-test'>slideToggleIn<div>slideToggleIn</div></div>\n\t\t<div id=\"slidetoggleout\" class='chain-test chain-test-out'>slideToggleOut<div>slideToggleOut</div></div>\n\n\t\t<div id=\"fadetogglein\" class='chain-test'>fadeToggleIn<div>fadeToggleIn</div></div>\n\t\t<div id=\"fadetoggleout\" class='chain-test chain-test-out'>fadeToggleOut<div>fadeToggleOut</div></div>\n\n\t\t<div id=\"fadeto\" class='chain-test'>fadeTo<div>fadeTo</div></div>\n\t</div>\n\n\t<div id=\"fx-tests\"></div>\n\t<span id=\"display\"></span>\n</div>\n<br id=\"last\"/>\n";
diff --git a/test/unit/ajax.js b/test/unit/ajax.js
index a2cc34e32..e1f290f32 100644
--- a/test/unit/ajax.js
+++ b/test/unit/ajax.js
@@ -255,7 +255,7 @@ QUnit.module( "ajax", {
ajaxTest( "jQuery.ajax() - headers", 8, function( assert ) {
return {
setup: function() {
- jQuery( document ).ajaxSend( function( evt, xhr ) {
+ jQuery( document ).on( "ajaxSend", function( evt, xhr ) {
xhr.setRequestHeader( "ajax-send", "test" );
} );
},
@@ -580,10 +580,10 @@ QUnit.module( "ajax", {
return {
setup: function() {
jQuery( context ).appendTo( "#foo" )
- .ajaxSend( event )
- .ajaxComplete( event )
- .ajaxError( event )
- .ajaxSuccess( event );
+ .on( "ajaxSend", event )
+ .on( "ajaxComplete", event )
+ .on( "ajaxError", event )
+ .on( "ajaxSuccess", event );
},
requests: [ {
url: url( "name.html" ),
@@ -2539,7 +2539,7 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re
var done = assert.async();
addGlobalEvents( "ajaxStart ajaxStop ajaxSend ajaxComplete ajaxError", assert )();
- jQuery( document ).ajaxStop( done );
+ jQuery( document ).on( "ajaxStop", done );
jQuery( "<div/>" ).load( baseURL + "404.txt", function() {
assert.ok( true, "complete" );
} );
@@ -2727,7 +2727,7 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re
jQuery.ajaxSetup( {
dataType: "json"
} );
- jQuery( document ).ajaxComplete( function( e, xml, s ) {
+ jQuery( document ).on( "ajaxComplete", function( e, xml, s ) {
assert.strictEqual( s.dataType, "html", "Verify the load() dataType was html" );
jQuery( document ).off( "ajaxComplete" );
done();
@@ -2748,7 +2748,7 @@ if ( typeof window.ArrayBuffer === "undefined" || typeof new XMLHttpRequest().re
}
} );
jQuery( "#foo" ).load( baseURL + "mock.php?action=echoQuery", data );
- jQuery( document ).ajaxComplete( function( event, jqXHR, options ) {
+ jQuery( document ).on( "ajaxComplete", function( event, jqXHR, options ) {
assert.ok( ~options.data.indexOf( "foo=bar" ), "Data from ajaxSettings was used" );
done();
} );
diff --git a/test/unit/callbacks.js b/test/unit/callbacks.js
index b440f3822..c1a6eacf6 100644
--- a/test/unit/callbacks.js
+++ b/test/unit/callbacks.js
@@ -4,6 +4,12 @@ QUnit.module( "callbacks", {
( function() {
+if ( !jQuery.Callbacks ) {
+ return;
+}
+
+( function() {
+
var output,
addToOutput = function( string ) {
return function() {
@@ -387,3 +393,5 @@ QUnit.test( "jQuery.Callbacks() - list with memory stays locked (gh-3469)", func
cb.fire();
assert.equal( fired, 11, "Post-lock() fire ignored" );
} );
+
+} )();
diff --git a/test/unit/deferred.js b/test/unit/deferred.js
index 27a913216..2063ac82c 100644
--- a/test/unit/deferred.js
+++ b/test/unit/deferred.js
@@ -2,6 +2,12 @@ QUnit.module( "deferred", {
afterEach: moduleTeardown
} );
+( function() {
+
+if ( !jQuery.Deferred ) {
+ return;
+}
+
jQuery.each( [ "", " - new operator" ], function( _, withNew ) {
function createDeferred( fn ) {
@@ -1111,3 +1117,5 @@ QUnit.test( "jQuery.when(...) - opportunistically synchronous", function( assert
when = "after";
} );
+
+} )();
diff --git a/test/unit/deprecated.js b/test/unit/deprecated.js
index df9d5ffa8..d5a577ffb 100644
--- a/test/unit/deprecated.js
+++ b/test/unit/deprecated.js
@@ -1,7 +1,7 @@
QUnit.module( "deprecated", { afterEach: moduleTeardown } );
-QUnit.test( "bind/unbind", function( assert ) {
+QUnit[ jQuery.fn.bind ? "test" : "skip" ]( "bind/unbind", function( assert ) {
assert.expect( 4 );
var markup = jQuery(
@@ -22,7 +22,7 @@ QUnit.test( "bind/unbind", function( assert ) {
.remove();
} );
-QUnit.test( "delegate/undelegate", function( assert ) {
+QUnit[ jQuery.fn.delegate ? "test" : "skip" ]( "delegate/undelegate", function( assert ) {
assert.expect( 2 );
var markup = jQuery(
@@ -95,6 +95,45 @@ QUnit[ jQuery.fn.click ? "test" : "skip" ]( "trigger() shortcuts", function( ass
assert.equal( clickCounter, 1, "Check that click, triggers onclick event handler on an a tag also" );
} );
+if ( jQuery.ajax && jQuery.fn.ajaxSend ) {
+ ajaxTest( "jQuery.ajax() - events with context", 12, function( assert ) {
+ var context = document.createElement( "div" );
+
+ function event( e ) {
+ assert.equal( this, context, e.type );
+ }
+
+ function callback( msg ) {
+ return function() {
+ assert.equal( this, context, "context is preserved on callback " + msg );
+ };
+ }
+
+ return {
+ setup: function() {
+ jQuery( context ).appendTo( "#foo" )
+ .ajaxSend( event )
+ .ajaxComplete( event )
+ .ajaxError( event )
+ .ajaxSuccess( event );
+ },
+ requests: [ {
+ url: url( "name.html" ),
+ context: context,
+ beforeSend: callback( "beforeSend" ),
+ success: callback( "success" ),
+ complete: callback( "complete" )
+ }, {
+ url: url( "404.txt" ),
+ context: context,
+ beforeSend: callback( "beforeSend" ),
+ error: callback( "error" ),
+ complete: callback( "complete" )
+ } ]
+ };
+ } );
+}
+
QUnit[ jQuery.fn.click ? "test" : "skip" ]( "Event aliases", function( assert ) {
// Explicitly skipping focus/blur events due to their flakiness
@@ -113,7 +152,7 @@ QUnit[ jQuery.fn.click ? "test" : "skip" ]( "Event aliases", function( assert )
} );
} );
-QUnit.test( "jQuery.proxy", function( assert ) {
+QUnit[ jQuery.proxy ? "test" : "skip" ]( "jQuery.proxy", function( assert ) {
assert.expect( 9 );
var test2, test3, test4, fn, cb,
@@ -161,7 +200,7 @@ QUnit.test( "jQuery.proxy", function( assert ) {
cb.call( thisObject, "arg3" );
} );
-QUnit.test( "trim", function( assert ) {
+QUnit[ jQuery.trim ? "test" : "skip" ]( "trim", function( assert ) {
assert.expect( 13 );
var nbsp = String.fromCharCode( 160 );
diff --git a/test/unit/event.js b/test/unit/event.js
index 4019fbe81..cecad3f34 100644
--- a/test/unit/event.js
+++ b/test/unit/event.js
@@ -1317,7 +1317,7 @@ QUnit.test( "Delegated events with malformed selectors (gh-3071)", function( ass
jQuery( "#foo" ).on( "click", "nonexistent:not", function() {} );
}, "short-circuitable malformed selector throws on attach" );
- jQuery( "#foo > :first-child" ).click();
+ jQuery( "#foo > :first-child" ).trigger( "click" );
assert.ok( true, "malformed selector does not throw on event" );
} );
@@ -2495,7 +2495,7 @@ QUnit.test( "drag/drop events copy mouse-related event properties (gh-1925, gh-2
fireNative( $fixture[ 0 ], "drop" );
- $fixture.unbind( "dragmove drop" ).remove();
+ $fixture.off( "dragmove drop" ).remove();
} );
QUnit.test( "focusin using non-element targets", function( assert ) {
@@ -2548,7 +2548,8 @@ testIframe(
function( assert, jQuery, window, document, isOk ) {
assert.expect( 1 );
assert.ok( isOk, "$.when( $.ready ) works" );
- }
+ },
+ jQuery.when ? QUnit.test : QUnit.skip
);
// need PHP here to make the incepted IFRAME hang
diff --git a/test/unit/manipulation.js b/test/unit/manipulation.js
index fa944bceb..b71a54799 100644
--- a/test/unit/manipulation.js
+++ b/test/unit/manipulation.js
@@ -2400,7 +2400,6 @@ QUnit.test( "html() - script exceptions bubble (#11743)", function( assert ) {
assert.ok( true, "Exception ignored" );
} else {
assert.ok( true, "No jQuery.ajax" );
- assert.ok( true, "No jQuery.ajax" );
}
};
@@ -2490,7 +2489,7 @@ QUnit.test( "script evaluation (#11795)", function( assert ) {
}
} );
-QUnit.test( "jQuery._evalUrl (#12838)", function( assert ) {
+QUnit[ jQuery.ajax ? "test" : "skip" ]( "jQuery._evalUrl (#12838)", function( assert ) {
assert.expect( 5 );
@@ -2788,7 +2787,8 @@ QUnit.test( "Make sure tags with single-character names are found (gh-4124)", fu
assert.strictEqual( htmlOut, htmlIn );
} );
-QUnit.test( "Insert script with data-URI (gh-1887)", function( assert ) {
+// The AJAX module is needed for jQuery._evalUrl.
+QUnit[ jQuery.ajax ? "test" : "skip" ]( "Insert script with data-URI (gh-1887)", function( assert ) {
assert.expect( 1 );
Globals.register( "testFoo" );
@@ -2869,10 +2869,11 @@ testIframe(
} );
},
+ // The AJAX module is needed for jQuery._evalUrl.
// Support: Edge <=18+
// Edge doesn't support nonce in non-inline scripts.
// See https://web.archive.org/web/20171203124125/https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/13246371/
- QUnit[ /\bedge\//i.test( navigator.userAgent ) ? "skip" : "test" ]
+ QUnit[ jQuery.ajax && !/\bedge\//i.test( navigator.userAgent ) ? "test" : "skip" ]
);
testIframe(
diff --git a/test/unit/queue.js b/test/unit/queue.js
index df7eaf4ca..7735544bc 100644
--- a/test/unit/queue.js
+++ b/test/unit/queue.js
@@ -1,5 +1,11 @@
QUnit.module( "queue", { afterEach: moduleTeardown } );
+( function() {
+
+if ( !jQuery.fn.queue ) {
+ return;
+}
+
QUnit.test( "queue() with other types", function( assert ) {
var done = assert.async( 2 );
assert.expect( 14 );
@@ -329,3 +335,5 @@ QUnit[ jQuery.fn.stop ? "test" : "skip" ]( "queue stop hooks", function( assert
foo.stop( false, true );
} );
+
+} )();
diff --git a/test/unit/ready.js b/test/unit/ready.js
index d3396b1c4..fd33c0a18 100644
--- a/test/unit/ready.js
+++ b/test/unit/ready.js
@@ -2,7 +2,7 @@ QUnit.module( "ready" );
( function() {
var notYetReady, noEarlyExecution,
- whenified = jQuery.when( jQuery.ready ),
+ whenified = jQuery.when && jQuery.when( jQuery.ready ),
promisified = Promise.resolve( jQuery.ready ),
start = new Date(),
order = [],
@@ -105,7 +105,7 @@ QUnit.module( "ready" );
} );
} );
- QUnit.test( "jQuery.when(jQuery.ready)", function( assert ) {
+ QUnit[ jQuery.when ? "test" : "skip" ]( "jQuery.when(jQuery.ready)", function( assert ) {
assert.expect( 2 );
var done = jQuery.map( new Array( 2 ), function() { return assert.async(); } );
@@ -149,15 +149,18 @@ QUnit.module( "ready" );
} );
} );
- testIframe(
- "holdReady test needs to be a standalone test since it deals with DOM ready",
- "readywait.html",
- function( assert, jQuery, window, document, releaseCalled ) {
- assert.expect( 2 );
- var now = new Date();
- assert.ok( now - start >= 300, "Needs to have waited at least half a second" );
- assert.ok( releaseCalled, "The release function was called, which resulted in ready" );
- }
- );
+ // jQuery.holdReady is deprecated, skip the test if it was excluded.
+ if ( jQuery.holdReady ) {
+ testIframe(
+ "holdReady test needs to be a standalone test since it deals with DOM ready",
+ "readywait.html",
+ function( assert, jQuery, window, document, releaseCalled ) {
+ assert.expect( 2 );
+ var now = new Date();
+ assert.ok( now - start >= 300, "Needs to have waited at least half a second" );
+ assert.ok( releaseCalled, "The release function was called, which resulted in ready" );
+ }
+ );
+ }
} )();
diff --git a/test/unit/serialize.js b/test/unit/serialize.js
index d23421ddd..c4e6a6c5e 100644
--- a/test/unit/serialize.js
+++ b/test/unit/serialize.js
@@ -77,7 +77,7 @@ QUnit.test( "jQuery.param()", function( assert ) {
assert.equal( jQuery.param( params ), "", "jQuery.param( undefined ) === empty string" );
} );
-QUnit.test( "jQuery.param() not affected by ajaxSettings", function( assert ) {
+QUnit[ jQuery.ajax ? "test" : "skip" ]( "jQuery.param() not affected by ajaxSettings", function( assert ) {
assert.expect( 1 );
var oldTraditional = jQuery.ajaxSettings.traditional;