Skip to content

Commit 76df9e4

Browse files
committed
Build: Don't assume the browser environment; smoke test on Node w/ jsdom
Fixes gh-1950 Closes gh-1949
1 parent ab20d9d commit 76df9e4

23 files changed

+88
-40
lines changed

Gruntfile.js

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,9 +157,24 @@ module.exports = function( grunt ) {
157157

158158
grunt.registerTask( "lint", [ "jshint", "jscs" ] );
159159

160+
grunt.registerTask( "node_smoke_test", function() {
161+
var done = this.async();
162+
require( "jsdom" ).env( "", function( errors, window ) {
163+
if ( errors ) {
164+
console.error( errors );
165+
done( false );
166+
}
167+
require( "./" )( window );
168+
done();
169+
});
170+
});
171+
160172
// Short list as a high frequency watch task
161173
grunt.registerTask( "dev", [ "build:*:*", "lint" ] );
162174

163-
// Default grunt
175+
grunt.registerTask( "test_fast", [ "node_smoke_test" ] );
176+
177+
grunt.registerTask( "test", [ "default", "test_fast" ] );
178+
164179
grunt.registerTask( "default", [ "jsonlint", "dev", "uglify", "dist:*", "compare_size" ] );
165180
};

package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
"grunt-jsonlint": "1.0.4",
4444
"grunt-npmcopy": "0.1.0",
4545
"gzip-js": "0.3.2",
46+
"jsdom": "1.5.0",
4647
"load-grunt-tasks": "1.0.0",
4748
"npm": "2.1.12",
4849
"qunitjs": "1.16.0",
@@ -54,6 +55,6 @@
5455
"scripts": {
5556
"build": "npm install && grunt",
5657
"start": "grunt watch",
57-
"test": "grunt"
58+
"test": "grunt test"
5859
}
5960
}

src/.jshintrc

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@
1515

1616
"sub": true,
1717

18-
"browser": true,
19-
2018
"globals": {
19+
"window": true,
20+
"setTimeout": true,
21+
"clearTimeout": true,
22+
"setInterval": true,
23+
"clearInterval": true,
24+
2125
"jQuery": true,
2226
"define": true,
2327
"module": true,

src/ajax.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
define([
22
"./core",
3+
"./var/document",
34
"./var/rnotwhite",
5+
"./ajax/var/location",
46
"./ajax/var/nonce",
57
"./ajax/var/rquery",
68
"./core/init",
79
"./ajax/parseJSON",
810
"./ajax/parseXML",
911
"./deferred"
10-
], function( jQuery, rnotwhite, nonce, rquery ) {
12+
], function( jQuery, document, rnotwhite, location, nonce, rquery ) {
1113

1214
var
1315
rhash = /#.*$/,

src/ajax/parseXML.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jQuery.parseXML = function( data ) {
1111

1212
// Support: IE9
1313
try {
14-
xml = ( new DOMParser() ).parseFromString( data, "text/xml" );
14+
xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
1515
} catch ( e ) {
1616
xml = undefined;
1717
}

src/ajax/script.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
define([
22
"../core",
3+
"../var/document",
34
"../ajax"
4-
], function( jQuery ) {
5+
], function( jQuery, document ) {
56

67
// Install script dataType
78
jQuery.ajaxSetup({

src/ajax/var/location.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
define(function() {
2+
return window.location;
3+
});

src/ajax/xhr.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ define([
66

77
jQuery.ajaxSettings.xhr = function() {
88
try {
9-
return new XMLHttpRequest();
9+
return new window.XMLHttpRequest();
1010
} catch ( e ) {}
1111
};
1212

src/attributes/support.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
define([
2+
"../var/document",
23
"../var/support"
3-
], function( support ) {
4+
], function( document, support ) {
45

56
(function() {
67
var input = document.createElement( "input" ),

src/core.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
define([
22
"./var/arr",
3+
"./var/document",
34
"./var/slice",
45
"./var/concat",
56
"./var/push",
@@ -8,12 +9,9 @@ define([
89
"./var/toString",
910
"./var/hasOwn",
1011
"./var/support"
11-
], function( arr, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
12+
], function( arr, document, slice, concat, push, indexOf, class2type, toString, hasOwn, support ) {
1213

1314
var
14-
// Use the correct document accordingly with window argument (sandbox)
15-
document = window.document,
16-
1715
version = "@VERSION",
1816

1917
// Define a local copy of jQuery

0 commit comments

Comments
 (0)