From b867410f06f9e0561e5a1079d4303950b1530133 Mon Sep 17 00:00:00 2001 From: Tim Wood Date: Tue, 5 Apr 2016 10:36:06 -0500 Subject: [PATCH] Add rollup-tests task to compile tests into one file --- Gruntfile.js | 11 +++++------ package.json | 2 ++ tasks/qtest.js | 36 ++++++++++-------------------------- tasks/rollup-tests.js | 39 +++++++++++++++++++++++++++++++++++++++ tasks/rollup.js | 9 --------- 5 files changed, 56 insertions(+), 41 deletions(-) create mode 100644 tasks/rollup-tests.js diff --git a/Gruntfile.js b/Gruntfile.js index ae3361041..97fd72809 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -12,8 +12,7 @@ module.exports = function (grunt) { browserDisconnectTolerance: 2, frameworks: ['qunit'], files: [ - 'min/moment-with-locales.js', - 'min/tests.js' + 'build/tests.js' ], sauceLabs: { startConnect: true, @@ -198,12 +197,12 @@ module.exports = function (grunt) { // test tasks grunt.registerTask('test', ['test:node']); - grunt.registerTask('test:node', ['transpile', 'qtest']); + grunt.registerTask('test:node', ['rollup-tests', 'qtest']); // TODO: For some weird reason karma doesn't like the files in // build/umd/min/* but works with min/*, so update-index, then git checkout - grunt.registerTask('test:server', ['transpile', 'update-index', 'karma:server']); - grunt.registerTask('test:browser', ['transpile', 'update-index', 'karma:chrome', 'karma:firefox']); - grunt.registerTask('test:sauce-browser', ['transpile', 'update-index', 'env:sauceLabs', 'karma:sauce']); + grunt.registerTask('test:server', ['rollup-tests', 'update-index', 'karma:server']); + grunt.registerTask('test:browser', ['rollup-tests', 'update-index', 'karma:chrome', 'karma:firefox']); + grunt.registerTask('test:sauce-browser', ['rollup-tests', 'update-index', 'env:sauceLabs', 'karma:sauce']); grunt.registerTask('test:meteor', ['exec:meteor-init', 'exec:meteor-test', 'exec:meteor-cleanup']); // travis build task diff --git a/package.json b/package.json index 249eb1b4d..94724c831 100644 --- a/package.json +++ b/package.json @@ -65,7 +65,9 @@ "karma-sauce-launcher": "latest", "qunit": "^0.7.5", "qunit-cli": "^0.1.4", + "rollup": "latest", "rollup-plugin-babel": "latest", + "rollup-plugin-multi-entry": "latest", "spacejam": "latest", "coveralls": "^2.11.2", "nyc": "^2.1.4" diff --git a/tasks/qtest.js b/tasks/qtest.js index e00949843..0894bb040 100644 --- a/tasks/qtest.js +++ b/tasks/qtest.js @@ -1,34 +1,18 @@ +var testrunner = require('qunit'); + +testrunner.options.log.assertions = false; +testrunner.options.log.tests = false; +testrunner.options.log.summary = false; +testrunner.options.log.testing = false; +testrunner.options.maxBlockDuration = 120000; + module.exports = function (grunt) { grunt.task.registerTask('qtest', 'run tests locally', function () { var done = this.async(); - var testrunner = require('qunit'); - - testrunner.options.log.assertions = false; - testrunner.options.log.tests = false; - testrunner.options.log.summary = false; - testrunner.options.log.testing = false; - testrunner.options.maxBlockDuration = 120000; - - var tests; - - if (grunt.option('only') != null) { - tests = grunt.file.expand.apply(null, grunt.option('only').split(',').map(function (file) { - if (file === 'moment') { - return 'build/cjs/test/moment/*.js'; - } else if (file === 'locale') { - return 'build/cjs/test/locale/*.js'; - } else { - return 'build/cjs/test/' + file + '.js'; - } - })); - } else { - tests = grunt.file.expand('build/umd/test/*.js'); - } - testrunner.run({ - code: 'build/umd/moment.js', - tests: tests + code: 'moment.js', + tests: 'build/tests.js' }, function (err, report) { if (err) { console.log('woot', err, report); diff --git a/tasks/rollup-tests.js b/tasks/rollup-tests.js new file mode 100644 index 000000000..c64cf0257 --- /dev/null +++ b/tasks/rollup-tests.js @@ -0,0 +1,39 @@ +var rollup = require('rollup'); +var babelPlugin = require('rollup-plugin-babel'); +var multiEntry = require('rollup-plugin-multi-entry').default; + +function testFiles(grunt) { + var only = grunt.option('only') || '{moment,locale}/*'; + return grunt.file.expand({ + filter: 'isFile' + }, 'src/test/**/' + only + '{,.js,**/*.js}'); +} + +module.exports = function (grunt) { + grunt.task.registerTask('rollup-tests', 'bundle tests', function () { + var done = this.async(); + var files = testFiles(grunt); + + if (grunt.option('only')) { + console.log('Only testing files ' + files.join(', ')); + } + + rollup.rollup({ + entry: files, + plugins: [ + multiEntry(), + babelPlugin({ + babelrc: false, + compact: false, + presets: ['es2015-loose-rollup'] + }) + ] + }).then(function (bundle) { + return bundle.write({ + format: 'iife', + moduleName: 'momentTests', + dest: 'build/tests.js' + }); + }).then(done, done); + }); +}; diff --git a/tasks/rollup.js b/tasks/rollup.js index 2861988b3..fd91c9286 100644 --- a/tasks/rollup.js +++ b/tasks/rollup.js @@ -39,15 +39,6 @@ module.exports = function (grunt) { src: 'src/locales.js', dest: 'build/umd/locales.js' }] - }, - tests: { - options: { - format: 'iife' - }, - files: [{ - src: 'src/test/all.js', - dest: 'build/umd/test/all.js' - }] } }); }; -- 2.47.2