From 5f1c7fc81e0ea7bb072268724c0eeed137eb932b Mon Sep 17 00:00:00 2001 From: Michał Gołębiowski Date: Mon, 3 Aug 2015 20:28:37 +0200 Subject: Build: Don't install jsdom 3 on Node.js 0.10 & 0.12 by default jsdom 3 requires Python & Visual Studio on Windows which is a significant barrier to contributors. Newer jsdom versions don't require pre-compiling but work only on io.js. This commit installs the new jsdom everywhere (it does install in old Node.js, it just won't work) and executes Node-related tests only on newer Nodes or if a working jsdom version is installed. The latter can be achieved by running the `old_jsdom` task. Node.js is merging with io.js soon so this will become a smaller problem over time. One drawback is our Jenkins setup runs on Node 0.10 so it won't be running Node tests anymore. We have Travis set up on io.js, though so all PRs have those tests run. When the new LTS Node.js arrives (as it soon merges with io.js) we should update our Jenkins infrastructure so that it runs on this new version. (cherry-picked from dbb2daa8c3a458e3525d310440f4365548edc138) Fixes gh-2519 Closes gh-2526 --- build/tasks/install_old_jsdom.js | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 build/tasks/install_old_jsdom.js (limited to 'build/tasks/install_old_jsdom.js') diff --git a/build/tasks/install_old_jsdom.js b/build/tasks/install_old_jsdom.js new file mode 100644 index 000000000..271e0cbe0 --- /dev/null +++ b/build/tasks/install_old_jsdom.js @@ -0,0 +1,20 @@ +module.exports = function( grunt ) { + + "use strict"; + + // Run this task to run jsdom-related tests on Node.js < 1.0.0. + grunt.registerTask( "old_jsdom", function() { + if ( !/^v0/.test( process.version ) ) { + console.warn( "The old_jsdom task doesn\'t need to be run in io.js or new Node.js" ); + return; + } + + // Use npm on the command-line + // There is no local npm + grunt.util.spawn( { + cmd: "npm", + args: [ "install", "jsdom@3" ], + opts: { stdio: "inherit" } + }, this.async() ); + } ); +}; -- cgit v1.2.3