Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbc16512

Browse files
authored
Tests: Exclude tests based on compilation flags, not API presence (3.x version)
Introduces a new test API, `includesModule`. The method returns whethera particular module like "ajax" or "deprecated" is included in the currentjQuery build; it handles the slim build as well. The util was created so thatwe don't treat presence of particular APIs to decide whether to run a test asthen if we accidentally remove an API, the tests would still not fail.Closesgh-5071Fixesgh-5069Refgh-5046(partially cherry picked from commitfae5fee)
1 parent0f6c3d9 commitbc16512

24 files changed

+162
-75
lines changed

‎build/tasks/build.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
module.exports=function(grunt){
1010
varfs=require("fs"),
1111
requirejs=require("requirejs"),
12+
slimBuildFlags=require("./lib/slim-build-flags"),
1213
Insight=require("insight"),
1314
pkg=require("../../package.json"),
1415
srcFolder=__dirname+"/../../src/",
@@ -348,7 +349,7 @@ module.exports = function( grunt ) {
348349
// the official slim build
349350
.reduce((acc,elem)=>acc.concat(
350351
elem==="slim" ?
351-
["-ajax","-effects"] :
352+
slimBuildFlags :
352353
[elem]
353354
),[])
354355

‎build/tasks/lib/slim-build-flags.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
"use strict";
2+
3+
// NOTE: keep it in sync with test/data/testinit.js
4+
module.exports=[
5+
"-ajax",
6+
"-effects"
7+
];

‎test/.eslintrc.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
"testIframe":false,
2020
"createDashboardXML":false,
2121
"createXMLFragment":false,
22+
"includesModule":false,
2223
"moduleTeardown":false,
2324
"url":false,
2425
"q":false,

‎test/data/testinit-jsdom.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,12 @@ function url( value ) {
3939
newDate().getTime()+""+parseInt(Math.random()*100000,10);
4040
}
4141

42+
// We only run basic tests in jsdom so we don't need to repeat the logic
43+
// from the regular testinit.js
44+
this.includesModule=function(){
45+
returntrue;
46+
};
47+
4248
// The file-loading part of testinit.js#loadTests is handled by
4349
// jsdom Karma config; here we just need to trigger relevant APIs.
4450
this.loadTests=function(){

‎test/data/testinit.js

Lines changed: 59 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,13 @@ var FILEPATH = "/test/data/testinit.js",
1515
supportjQuery=this.jQuery,
1616

1717
// see RFC 2606
18-
externalHost="example.com";
18+
externalHost="example.com",
19+
20+
// NOTE: keep it in sync with build/tasks/lib/slim-build-flags.js
21+
slimBuildFlags=[
22+
"-ajax",
23+
"-effects"
24+
];
1925

2026
this.hasPHP=true;
2127
this.isLocal=window.location.protocol==="file:";
@@ -309,6 +315,58 @@ function moduleTypeSupported() {
309315
}
310316
moduleTypeSupported();
311317

318+
// Returns whether a particular module like "ajax" or "deprecated"
319+
// is included in the current jQuery build; it handles the slim build
320+
// as well. The util was created so that we don't treat presence of
321+
// particular APIs to decide whether to run a test as then if we
322+
// accidentally remove an API, the tests would still not fail.
323+
this.includesModule=function(moduleName){
324+
325+
varexcludedModulesPart,excludedModules;
326+
327+
// A short-cut for the slim build, e.g. "4.0.0-pre slim"
328+
if(jQuery.fn.jquery.indexOf(" slim")>-1){
329+
330+
// The module is included if it does NOT exist on the list
331+
// of modules excluded in the slim build
332+
returnslimBuildFlags.indexOf("-"+moduleName)===-1;
333+
}
334+
335+
// example version for `grunt custom:-deprecated`:
336+
// "4.0.0-pre -deprecated,-deprecated/ajax-event-alias,-deprecated/event"
337+
excludedModulesPart=jQuery.fn.jquery
338+
339+
// Take the flags out of the version string.
340+
// Example: "-deprecated,-deprecated/ajax-event-alias,-deprecated/event"
341+
.split(" ")[1];
342+
343+
if(!excludedModulesPart){
344+
345+
// No build part => the full build where everything is included.
346+
returntrue;
347+
}
348+
349+
excludedModules=excludedModulesPart
350+
351+
// Turn to an array.
352+
// Example: [ "-deprecated", "-deprecated/ajax-event-alias", "-deprecated/event" ]
353+
.split(",")
354+
355+
// Remove the leading "-".
356+
// Example: [ "deprecated", "deprecated/ajax-event-alias", "deprecated/event" ]
357+
.map(function(moduleName){
358+
returnmoduleName.slice(1);
359+
})
360+
361+
// Filter out deep names - ones that contain a slash.
362+
// Example: [ "deprecated" ]
363+
.filter(function(moduleName){
364+
returnmoduleName.indexOf("/")===-1;
365+
});
366+
367+
returnexcludedModules.indexOf(moduleName)===-1;
368+
};
369+
312370
this.loadTests=function(){
313371

314372
// QUnit.config is populated from QUnit.urlParams but only at the beginning

‎test/unit/ajax.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ QUnit.module( "ajax", {
1313
assert.ok(!isLocal,"Unit tests are not ran from file:// (especially in Chrome. If you must test from file:// with Chrome, run it with the --allow-file-access-from-files flag!)");
1414
});
1515

16-
if(!jQuery.ajax||(isLocal&&!hasPHP)){
16+
if(!includesModule("ajax")||(isLocal&&!hasPHP)){
1717
return;
1818
}
1919

‎test/unit/animation.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
(function(){
22

33
// Can't test what ain't there
4-
if(!jQuery.fx){
4+
if(!includesModule("effects")){
55
return;
66
}
77

‎test/unit/attributes.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -944,7 +944,7 @@ QUnit.test( "val()", function( assert ) {
944944
"Select-one with only option disabled (trac-12584)"
945945
);
946946

947-
if(jQuery.fn.serialize){
947+
if(includesModule("serialize")){
948948
checks=jQuery("<input type='checkbox' name='test' value='1'/><input type='checkbox' name='test' value='2'/><input type='checkbox' name='test' value=''/><input type='checkbox' name='test'/>").appendTo("#form");
949949

950950
assert.deepEqual(checks.serialize(),"","Get unchecked values.");

‎test/unit/basic.js

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
QUnit.module("basic",{afterEach:moduleTeardown});
22

3-
if(jQuery.ajax){
3+
if(includesModule("ajax")){
44
QUnit.test("ajax",function(assert){
55
assert.expect(4);
66

@@ -33,6 +33,7 @@ QUnit.test( "ajax", function( assert ) {
3333
});
3434
}
3535

36+
if(includesModule("attributes")){
3637
QUnit.test("attributes",function(assert){
3738
assert.expect(6);
3839

@@ -51,8 +52,9 @@ QUnit.test( "attributes", function( assert ) {
5152

5253
assert.strictEqual(input.val("xyz").val(),"xyz",".val getter/setter");
5354
});
55+
}
5456

55-
if(jQuery.css){
57+
if(includesModule("css")){
5658
QUnit.test("css",function(assert){
5759
assert.expect(1);
5860

@@ -62,7 +64,7 @@ QUnit.test( "css", function( assert ) {
6264
});
6365
}
6466

65-
if(jQuery.fn.show&&jQuery.fn.hide){
67+
if(includesModule("css")){
6668
QUnit.test("show/hide",function(assert){
6769
assert.expect(2);
6870

@@ -123,6 +125,7 @@ QUnit.test( "core", function( assert ) {
123125
2,"jQuery.parseHTML");
124126
});
125127

128+
if(includesModule("data")){
126129
QUnit.test("data",function(assert){
127130
assert.expect(4);
128131

@@ -133,7 +136,9 @@ QUnit.test( "data", function( assert ) {
133136
assert.strictEqual(elem.data("c"),"d",".data from data-* attributes");
134137
assert.ok(jQuery.hasData(elem[0]),"jQuery.hasData - true");
135138
});
139+
}
136140

141+
if(includesModule("dimensions")){
137142
QUnit.test("dimensions",function(assert){
138143
assert.expect(3);
139144

@@ -145,7 +150,9 @@ QUnit.test( "dimensions", function( assert ) {
145150
assert.strictEqual(elem.innerWidth(),64,".innerWidth getter");
146151
assert.strictEqual(elem.outerWidth(),68,".outerWidth getter");
147152
});
153+
}
148154

155+
if(includesModule("event")){
149156
QUnit.test("event",function(assert){
150157
assert.expect(1);
151158

@@ -162,7 +169,9 @@ QUnit.test( "event", function( assert ) {
162169
})
163170
.trigger("click");
164171
});
172+
}
165173

174+
if(includesModule("manipulation")){
166175
QUnit.test("manipulation",function(assert){
167176
assert.expect(5);
168177

@@ -191,6 +200,9 @@ QUnit.test( "manipulation", function( assert ) {
191200
".after/.before"
192201
);
193202
});
203+
}
204+
205+
if(includesModule("offset")){
194206

195207
// Support: jsdom 13.2+
196208
// jsdom returns 0 for offset-related properties
@@ -204,6 +216,7 @@ QUnit[ /jsdom\//.test( navigator.userAgent ) ? "skip" : "test" ]( "offset", func
204216
assert.strictEqual(elem.position().top,5,".position getter");
205217
assert.strictEqual(elem.offsetParent()[0],parent[0],".offsetParent");
206218
});
219+
}
207220

208221
QUnit.test("selector",function(assert){
209222
assert.expect(2);
@@ -215,6 +228,7 @@ QUnit.test( "selector", function( assert ) {
215228
assert.strictEqual(elem.find("span.b a")[0].nodeName,"A",".find - one result");
216229
});
217230

231+
if(includesModule("serialize")){
218232
QUnit.test("serialize",function(assert){
219233
assert.expect(2);
220234

@@ -228,6 +242,7 @@ QUnit.test( "serialize", function( assert ) {
228242
"&select1=&select2=3&select3=1&select3=2&select5=3",
229243
"form serialization as query string");
230244
});
245+
}
231246

232247
QUnit.test("traversing",function(assert){
233248
assert.expect(12);
@@ -249,6 +264,7 @@ QUnit.test( "traversing", function( assert ) {
249264
assert.strictEqual(elem.contents()[3].nodeType,3,".contents");
250265
});
251266

267+
if(includesModule("wrap")){
252268
QUnit.test("wrap",function(assert){
253269
assert.expect(3);
254270

@@ -279,3 +295,4 @@ QUnit.test( "wrap", function( assert ) {
279295
);
280296

281297
});
298+
}

‎test/unit/callbacks.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ QUnit.module( "callbacks", {
44

55
(function(){
66

7-
if(!jQuery.Callbacks){
7+
if(!includesModule("callbacks")){
88
return;
99
}
1010

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp