chore(build): Karma watches broccoli output.

This is a prerequisite for switching to TypeScript. We need to remove the Traceur preprocessor
from Karma, so we have the build specified in a single place (broccoli tree def'n).
This commit is contained in:
Alex Eagle 2015-04-27 16:11:20 -07:00
parent 09f8d8f7ba
commit 511e832ee2
6 changed files with 42 additions and 44 deletions

View File

@ -24,7 +24,7 @@ var jsserve = require('./tools/build/jsserve');
var pubserve = require('./tools/build/pubserve'); var pubserve = require('./tools/build/pubserve');
var rundartpackage = require('./tools/build/rundartpackage'); var rundartpackage = require('./tools/build/rundartpackage');
var file2moduleName = require('./tools/build/file2modulename'); var file2moduleName = require('./tools/build/file2modulename');
var karma = require('karma').server; var karma = require('karma');
var minimist = require('minimist'); var minimist = require('minimist');
var runServerDartTests = require('./tools/build/run_server_dart_tests'); var runServerDartTests = require('./tools/build/run_server_dart_tests');
var sourcemaps = require('gulp-sourcemaps'); var sourcemaps = require('gulp-sourcemaps');
@ -320,18 +320,41 @@ function getBrowsersFromCLI() {
var args = minimist(process.argv.slice(2)); var args = minimist(process.argv.slice(2));
return [args.browsers?args.browsers:'DartiumWithWebPlatform'] return [args.browsers?args.browsers:'DartiumWithWebPlatform']
} }
gulp.task('test.unit.js', function (done) {
karma.start({configFile: __dirname + '/karma-js.conf.js'}, done); gulp.task('test.unit.js', ['build/clean.js'], function (neverDone) {
function buildAndTest() {
runSequence(
'broccoli.js.dev',
'test.unit.dev/karma-run'
);
}
karma.server.start({configFile: __dirname + '/karma-js.conf.js'});
buildAndTest();
gulp.watch('modules/**', function() {
console.log('args', arguments);
buildAndTest();
});
}); });
gulp.task('test.unit.dev/karma-run', function(done) {
karma.runner.run({configFile: __dirname + '/karma-js.conf.js'}, done);
});
gulp.task('test.unit.dart', function (done) { gulp.task('test.unit.dart', function (done) {
karma.start({configFile: __dirname + '/karma-dart.conf.js'}, done); karma.server.start({configFile: __dirname + '/karma-dart.conf.js'}, done);
}); });
gulp.task('test.unit.js/ci', function (done) { gulp.task('test.unit.js/ci', function (done) {
karma.start({configFile: __dirname + '/karma-js.conf.js', karma.server.start({configFile: __dirname + '/karma-js.conf.js',
singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done); singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
}); });
gulp.task('test.unit.dart/ci', function (done) { gulp.task('test.unit.dart/ci', function (done) {
karma.start({configFile: __dirname + '/karma-dart.conf.js', karma.server.start({configFile: __dirname + '/karma-dart.conf.js',
singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done); singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done);
}); });

View File

@ -10,8 +10,7 @@ module.exports = function(config) {
files: [ files: [
// Sources and specs. // Sources and specs.
// Loaded through the es6-module-loader, in `test-main.js`. // Loaded through the es6-module-loader, in `test-main.js`.
{pattern: 'modules/**', included: false}, {pattern: 'dist/js/dev/es5/**', included: false, watched: false},
{pattern: 'tools/transpiler/spec/**', included: false},
'node_modules/traceur/bin/traceur-runtime.js', 'node_modules/traceur/bin/traceur-runtime.js',
'node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js', 'node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js',
@ -28,34 +27,9 @@ module.exports = function(config) {
], ],
exclude: [ exclude: [
'modules/**/e2e_test/**' 'dist/js/dev/es5/**/e2e_test/**',
], ],
preprocessors: {
'modules/**/*.js': ['traceur'],
'modules/**/*.es6': ['traceur'],
'tools/transpiler/spec/**/*.js': ['traceur'],
'tools/transpiler/spec/**/*.es6': ['traceur'],
},
traceurPreprocessor: {
options: {
outputLanguage: 'es5',
sourceMaps: true,
script: false,
memberVariables: true,
modules: 'instantiate',
types: true,
typeAssertions: true,
typeAssertionModule: 'rtts_assert/rtts_assert',
annotations: true
},
resolveModuleName: file2moduleName,
transformPath: function(fileName) {
return fileName.replace(/\.es6$/, '.js');
}
},
customLaunchers: { customLaunchers: {
DartiumWithWebPlatform: { DartiumWithWebPlatform: {
base: 'Dartium', base: 'Dartium',
@ -68,6 +42,4 @@ module.exports = function(config) {
port: 9876 port: 9876
}); });
config.plugins.push(require('./tools/transpiler/karma-traceur-preprocessor'));
}; };

View File

@ -9,15 +9,16 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 100;
// we will call `__karma__.start()` later, once all the specs are loaded. // we will call `__karma__.start()` later, once all the specs are loaded.
__karma__.loaded = function() {}; __karma__.loaded = function() {};
System.baseURL = '/base/';
System.baseURL = '/base/modules/';
// So that we can import packages like `core/foo`, instead of `core/src/foo`. // So that we can import packages like `core/foo`, instead of `core/src/foo`.
System.paths = { System.paths = {
'*': './*.js', '*': './*.js',
'transpiler/*': '../tools/transpiler/*.js', 'benchpress/*': 'dist/js/dev/es5/benchpress/*.js',
'rx/*': '../node_modules/rx/*.js' 'angular2/*': 'dist/js/dev/es5/angular2/*.js',
} 'rtts_assert/*': 'dist/js/dev/es5/rtts_assert/*.js',
'rx/*': 'node_modules/rx/*.js'
};
// Import all the specs, execute their `main()` method and kick off Karma (Jasmine). // Import all the specs, execute their `main()` method and kick off Karma (Jasmine).
System.import('angular2/src/dom/browser_adapter').then(function(browser_adapter) { System.import('angular2/src/dom/browser_adapter').then(function(browser_adapter) {

View File

@ -3,6 +3,8 @@ function file2moduleName(filePath) {
// module name should be relative to `modules` and `tools` folder // module name should be relative to `modules` and `tools` folder
.replace(/.*\/modules\//, '') .replace(/.*\/modules\//, '')
.replace(/.*\/tools\//, '') .replace(/.*\/tools\//, '')
// and 'dist' folder
.replace(/.*\/dist\/js\/dev\/es5\//, '')
// module name should not include `lib`, `web` folders // module name should not include `lib`, `web` folders
// as they are wrapper packages for dart // as they are wrapper packages for dart
.replace(/\/web\//, '/') .replace(/\/web\//, '/')