Skip to content

Commit 546214e

Browse files
committed
Build: Fork vendors to remove QUnit deprecated API usage
Changes: * add `tests/lib/vendor/**/*` to `.eslintignore` * move `qunit-composite` to `tests/lib` so that we can modify it * move `qunit-assert-classes` to `tests/lib` so that we can modify it * move `qunit-assert-close` to `tests/lib` so that we can modify it * replace `assert.push` with `assert.pushResult` * remove usage of `QUnit.extend` Closes jquerygh-2157
1 parent f68d655 commit 546214e

File tree

39 files changed

+241
-109
lines changed

39 files changed

+241
-109
lines changed

.eslintignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
dist/**/*
22
external/**/*
3+
tests/lib/vendor/**/*
34
ui/vendor/**/*

Gruntfile.js

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -272,18 +272,6 @@ grunt.initConfig( {
272272
"qunit/qunit.css": "qunit/qunit/qunit.css",
273273
"qunit/LICENSE.txt": "qunit/LICENSE.txt",
274274

275-
"qunit-assert-classes/qunit-assert-classes.js":
276-
"qunit-assert-classes/qunit-assert-classes.js",
277-
"qunit-assert-classes/LICENSE.txt": "qunit-assert-classes/LICENSE",
278-
279-
"qunit-assert-close/qunit-assert-close.js":
280-
"qunit-assert-close/qunit-assert-close.js",
281-
"qunit-assert-close/MIT-LICENSE.txt": "qunit-assert-close/MIT-LICENSE.txt",
282-
283-
"qunit-composite/qunit-composite.js": "qunit-composite/qunit-composite.js",
284-
"qunit-composite/qunit-composite.css": "qunit-composite/qunit-composite.css",
285-
"qunit-composite/LICENSE.txt": "qunit-composite/LICENSE.txt",
286-
287275
"requirejs/require.js": "requirejs/require.js",
288276

289277
"jquery-mousewheel/jquery.mousewheel.js": "jquery-mousewheel/jquery.mousewheel.js",

bower.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,6 @@
1616
"jquery-mousewheel": "3.1.12",
1717
"jquery-simulate": "1.1.1",
1818
"qunit": "2.19.4",
19-
"qunit-assert-classes": "1.0.2",
20-
"qunit-assert-close": "JamesMGreene/qunit-assert-close#v2.1.2",
21-
"qunit-composite": "JamesMGreene/qunit-composite#v2.0.0",
2219
"requirejs": "2.1.14",
2320

2421
"jquery-1.8.0": "jquery#1.8.0",

tests/lib/bootstrap.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ requirejs.config( {
1212
"jquery-simulate": "../../../external/jquery-simulate/jquery.simulate",
1313
"lib": "../../lib",
1414
"phantom-bridge": "../../../node_modules/grunt-contrib-qunit/phantomjs/bridge",
15-
"qunit-assert-classes": "../../../external/qunit-assert-classes/qunit-assert-classes",
16-
"qunit-assert-close": "../../../external/qunit-assert-close/qunit-assert-close",
15+
"qunit-assert-classes": "../../lib/vendor/qunit-assert-classes/qunit-assert-classes",
16+
"qunit-assert-close": "../../lib/vendor/qunit-assert-close/qunit-assert-close",
1717
"qunit": "../../../external/qunit/qunit",
1818
"testswarm": "https://swarm.jquery.org/js/inject.js?" + ( new Date() ).getTime(),
1919
"ui": "../../../ui"

tests/lib/qunit-assert-domequal.js

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,16 @@ var domEqual = QUnit.assert.domEqual = function( selector, modifier, message ) {
1515
var assert = this;
1616

1717
// Get current state prior to modifier
18-
var expected = extract( selector, message );
18+
var expected = extract( assert, selector, message );
1919

2020
function done() {
21-
var actual = extract( selector, message );
22-
assert.push( QUnit.equiv( actual, expected ), actual, expected, message );
21+
var actual = extract( assert, selector, message );
22+
assert.pushResult( {
23+
result: QUnit.equiv( actual, expected ),
24+
actual: actual,
25+
expected: expected,
26+
message: message
27+
} );
2328
}
2429

2530
// Run modifier (async or sync), then compare state via done()
@@ -116,11 +121,15 @@ function jQueryVersionSince( version ) {
116121
return compareVersions( $.fn.jquery, version ) >= 0;
117122
}
118123

119-
function extract( selector, message ) {
124+
function extract( assert, selector, message ) {
120125
var elem = $( selector );
121126
if ( !elem.length ) {
122-
QUnit.push( false, null, null,
123-
"domEqual failed, can't extract " + selector + ", message was: " + message );
127+
assert.pushResult( {
128+
result: false,
129+
actual: null,
130+
expected: null,
131+
message: "domEqual failed, can't extract " + selector + ", message was: " + message
132+
} );
124133
return;
125134
}
126135

@@ -190,7 +199,7 @@ function extract( selector, message ) {
190199
children = elem.children();
191200
if ( children.length ) {
192201
result.children = elem.children().map( function() {
193-
return extract( $( this ) );
202+
return extract( assert, $( this ) );
194203
} ).get();
195204
} else {
196205
result.text = elem.text();

external/qunit-assert-classes/qunit-assert-classes.js renamed to tests/lib/vendor/qunit-assert-classes/qunit-assert-classes.js

Lines changed: 89 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// With custom modifications - all are marked with
2+
// a "Custom modification" comment.
13
( function( factory ) {
24
if ( typeof define === "function" && define.amd ) {
35

@@ -73,22 +75,36 @@
7375
return message + ( classes.length > 1 ? "es" : "" );
7476
}
7577

76-
QUnit.extend( QUnit.assert, {
78+
// Custom modification: removing QUnit.extend
79+
var key;
80+
var qunitAssertExtensions = {
7781
hasClasses: function( element, classes, message ) {
7882
var classArray = splitClasses( classes ),
7983
results = check( element, classArray );
8084

8185
message = message || pluralize( "Element must have class", classArray );
8286

83-
this.push( !results.missing.length, results.found.join( " " ), classes, message );
87+
// Custom modification: push -> pushResult
88+
this.pushResult( {
89+
result: !results.missing.length,
90+
actual: results.found.join( " " ),
91+
expected: classes,
92+
message: message
93+
} );
8494
},
8595
lacksClasses: function( element, classes, message ) {
8696
var classArray = splitClasses( classes ),
8797
results = check( element, classArray );
8898

8999
message = message || pluralize( "Element must not have class", classArray );
90100

91-
this.push( !results.found.length, results.found.join( " " ), classes, message );
101+
// Custom modification: push -> pushResult
102+
this.pushResult( {
103+
result: !results.found.length,
104+
actual: results.found.join( " " ),
105+
expected: classes,
106+
message: message
107+
} );
92108
},
93109
hasClassesStrict: function( element, classes, message ) {
94110
var result,
@@ -101,49 +117,91 @@
101117
splitClasses( results.element.getAttribute( "class" ) ).length ===
102118
results.found.length;
103119

104-
this.push( result, results.found.join( " " ), classes, message );
120+
// Custom modification: push -> pushResult
121+
this.pushResult( {
122+
result: result,
123+
actual: results.found.join( " " ),
124+
expected: classes,
125+
message: message
126+
} );
105127
},
106128
hasClassRegex: function( element, regex, message ) {
107129
var results = check( element, regex );
108130

109131
message = message || "Element must have class matching " + regex;
110132

111-
this.push( !!results.found.length, results.found.join( " " ), regex, message );
133+
// Custom modification: push -> pushResult
134+
this.pushResult( {
135+
result: !!results.found.length,
136+
actual: results.found.join( " " ),
137+
expected: regex,
138+
message: message
139+
} );
112140
},
113141
lacksClassRegex: function( element, regex, message ) {
114142
var results = check( element, regex );
115143

116144
message = message || "Element must not have class matching " + regex;
117145

118-
this.push( results.missing.length, results.missing.join( " " ), regex, message );
146+
// Custom modification: push -> pushResult
147+
this.pushResult( {
148+
result: results.missing.length,
149+
actual: results.missing.join( " " ),
150+
expected: regex,
151+
message: message
152+
} );
119153
},
120154
hasClassStart: function( element, partialClass, message ) {
121155
var results = check( element, new RegExp( "^" + partialClass ) );
122156

123157
message = message || "Element must have class starting with " + partialClass;
124158

125-
this.push( results.found.length, results.found.join( " " ), partialClass, message );
159+
// Custom modification: push -> pushResult
160+
this.pushResult( {
161+
result: results.found.length,
162+
actual: results.found.join( " " ),
163+
expected: partialClass,
164+
message: message
165+
} );
126166
},
127167
lacksClassStart: function( element, partialClass, message ) {
128168
var results = check( element, new RegExp( "^" + partialClass ) );
129169

130170
message = message || "Element must not have class starting with " + partialClass;
131171

132-
this.push( results.missing.length, results.missing.join( " " ), partialClass, message );
172+
// Custom modification: push -> pushResult
173+
this.pushResult( {
174+
result: results.missing.length,
175+
actual: results.missing.join( " " ),
176+
expected: partialClass,
177+
message: message
178+
} );
133179
},
134180
hasClassPartial: function( element, partialClass, message ) {
135181
var results = check( element, new RegExp( partialClass ) );
136182

137183
message = message || "Element must have class containing '" + partialClass + "'";
138184

139-
this.push( results.found.length, results.found.join( " " ), partialClass, message );
185+
// Custom modification: push -> pushResult
186+
this.pushResult( {
187+
result: results.found.length,
188+
actual: results.found.join( " " ),
189+
expected: partialClass,
190+
message: message
191+
} );
140192
},
141193
lacksClassPartial: function( element, partialClass, message ) {
142194
var results = check( element, new RegExp( partialClass ) );
143195

144196
message = message || "Element must not have class containing '" + partialClass + "'";
145197

146-
this.push( results.missing.length, results.missing.join( " " ), partialClass, message );
198+
// Custom modification: push -> pushResult
199+
this.pushResult( {
200+
result: results.missing.length,
201+
actual: results.missing.join( " " ),
202+
expected: partialClass,
203+
message: message
204+
} );
147205
},
148206
lacksAllClasses: function( element, message ) {
149207
element = element.jquery ? element[ 0 ] : element;
@@ -153,7 +211,13 @@
153211

154212
message = message || "Element must not have any classes";
155213

156-
this.push( !classes.length, !classes.length, true, message );
214+
// Custom modification: push -> pushResult
215+
this.pushResult( {
216+
result: !classes.length,
217+
actual: !classes.length,
218+
expected: true,
219+
message: message
220+
} );
157221
},
158222
hasSomeClass: function( element, message ) {
159223
element = element.jquery ? element[ 0 ] : element;
@@ -163,7 +227,19 @@
163227

164228
message = message || "Element must have a class";
165229

166-
this.push( classes.length, classes.length, true, message );
230+
// Custom modification: push -> pushResult
231+
this.pushResult( {
232+
result: classes.length,
233+
actual: classes.length,
234+
expected: true,
235+
message: message
236+
} );
167237
}
168-
});
238+
};
239+
240+
// Custom modification: removing QUnit.extend
241+
for ( key in qunitAssertExtensions ) {
242+
QUnit.assert[ key ] = qunitAssertExtensions[ key ];
243+
}
244+
169245
} ) );

external/qunit-assert-close/qunit-assert-close.js renamed to tests/lib/vendor/qunit-assert-close/qunit-assert-close.js

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
// With custom modifications - all are marked with
2+
// a "Custom modification" comment.
13
(function(factory) {
24

35
// NOTE:
@@ -12,11 +14,10 @@
1214
else if (typeof module !== "undefined" && module && module.exports && typeof require === "function") {
1315
module.exports = factory(require("qunitjs"));
1416
}
15-
// For CommonJS with `exports`, but without `module.exports`, like Rhino
16-
else if (typeof exports !== "undefined" && exports && typeof require === "function") {
17-
var qunit = require("qunitjs");
18-
qunit.extend(exports, factory(qunit));
19-
}
17+
18+
// Custom modification: remove the non-Node.js CommonJS part due to its
19+
// usage of QUnit.extend.
20+
//
2021
// For browser globals
2122
else {
2223
factory(QUnit);
@@ -75,7 +76,13 @@
7576

7677
message = message || (actual + " should be within " + maxDifference + " (inclusive) of " + expected + (result ? "" : ". Actual: " + actualDiff));
7778

78-
pushContext.push(result, actual, expected, message);
79+
// Custom modification: push -> pushResult
80+
pushContext.pushResult({
81+
result: result,
82+
actual: actual,
83+
expected: expected,
84+
message: message
85+
});
7986
}
8087

8188

@@ -109,7 +116,13 @@
109116
}
110117
message = message || (actual + " should be within " + maxPercentDifference + "% (inclusive) of " + expected + (result ? "" : ". Actual: " + actualDiff + "%"));
111118

112-
pushContext.push(result, actual, expected, message);
119+
// Custom modification: push -> pushResult
120+
pushContext.pushResult({
121+
result: result,
122+
actual: actual,
123+
expected: expected,
124+
message: message
125+
});
113126
};
114127

115128

@@ -131,7 +144,13 @@
131144

132145
message = message || (actual + " should not be within " + minDifference + " (exclusive) of " + expected + (result ? "" : ". Actual: " + actualDiff));
133146

134-
pushContext.push(result, actual, expected, message);
147+
// Custom modification: push -> pushResult
148+
pushContext.pushResult({
149+
result: result,
150+
actual: actual,
151+
expected: expected,
152+
message: message
153+
});
135154
}
136155

137156

@@ -165,18 +184,26 @@
165184
}
166185
message = message || (actual + " should not be within " + minPercentDifference + "% (exclusive) of " + expected + (result ? "" : ". Actual: " + actualDiff + "%"));
167186

168-
pushContext.push(result, actual, expected, message);
187+
// Custom modification: push -> pushResult
188+
pushContext.pushResult({
189+
result: result,
190+
actual: actual,
191+
expected: expected,
192+
message: message
193+
});
169194
};
170195

171-
196+
var key;
172197
var api = {
173198
close: close,
174199
notClose: notClose,
175200
closePercent: close.percent,
176201
notClosePercent: notClose.percent
177202
};
178203

179-
QUnit.extend(QUnit.assert, api);
204+
for (key in api) {
205+
QUnit.assert[key] = api[key];
206+
}
180207

181208
return api;
182209
}));

external/qunit-composite/qunit-composite.js renamed to tests/lib/vendor/qunit-composite/qunit-composite.js

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
/**
22
* QUnit Composite
33
*
4+
* With custom modifications - all are marked with
5+
* a "Custom modification" comment.
6+
*
47
* https://github.com/JamesMGreene/qunit-composite
58
*
69
* Copyright jQuery Foundation and other contributors
@@ -93,7 +96,12 @@ function initIframe() {
9396
// Pass all test details through to the main page
9497
var message = ( moduleName ? moduleName + ": " : "" ) + testName + ": " + ( data.message || ( data.result ? "okay" : "failed" ) );
9598
suiteAssert.expect( ++count );
96-
suiteAssert.push( data.result, data.actual, data.expected, message );
99+
suiteAssert.pushResult( {
100+
result: data.result,
101+
actual: data.actual,
102+
expected: data.expected,
103+
message: message
104+
} );
97105
});
98106

99107
// Continue the outer test when the iframe's test is done

0 commit comments

Comments
 (0)