From 511e832ee25a3d8734b0835c7e8c8d8aa14bfb88 Mon Sep 17 00:00:00 2001 From: Alex Eagle Date: Mon, 27 Apr 2015 16:11:20 -0700 Subject: [PATCH] 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). --- gulpfile.js | 37 ++++++++++++++++++++++----- karma-js.conf.js | 32 ++--------------------- modules/angular2/src/facade/async.es6 | 2 +- modules/angular2/src/facade/async.ts | 2 +- test-main.js | 11 ++++---- tools/build/file2modulename.js | 2 ++ 6 files changed, 42 insertions(+), 44 deletions(-) diff --git a/gulpfile.js b/gulpfile.js index 5baac6e1cf..5b0faa26d7 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -24,7 +24,7 @@ var jsserve = require('./tools/build/jsserve'); var pubserve = require('./tools/build/pubserve'); var rundartpackage = require('./tools/build/rundartpackage'); var file2moduleName = require('./tools/build/file2modulename'); -var karma = require('karma').server; +var karma = require('karma'); var minimist = require('minimist'); var runServerDartTests = require('./tools/build/run_server_dart_tests'); var sourcemaps = require('gulp-sourcemaps'); @@ -320,18 +320,41 @@ function getBrowsersFromCLI() { var args = minimist(process.argv.slice(2)); 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) { - 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) { - karma.start({configFile: __dirname + '/karma-js.conf.js', - singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, done); + karma.server.start({configFile: __dirname + '/karma-js.conf.js', + singleRun: true, reporters: ['dots'], browsers: getBrowsersFromCLI()}, 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); }); diff --git a/karma-js.conf.js b/karma-js.conf.js index 2f7e07d768..a6bd2f1ffa 100644 --- a/karma-js.conf.js +++ b/karma-js.conf.js @@ -10,8 +10,7 @@ module.exports = function(config) { files: [ // Sources and specs. // Loaded through the es6-module-loader, in `test-main.js`. - {pattern: 'modules/**', included: false}, - {pattern: 'tools/transpiler/spec/**', included: false}, + {pattern: 'dist/js/dev/es5/**', included: false, watched: false}, 'node_modules/traceur/bin/traceur-runtime.js', 'node_modules/es6-module-loader/dist/es6-module-loader-sans-promises.src.js', @@ -28,34 +27,9 @@ module.exports = function(config) { ], 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: { DartiumWithWebPlatform: { base: 'Dartium', @@ -68,6 +42,4 @@ module.exports = function(config) { port: 9876 }); - - config.plugins.push(require('./tools/transpiler/karma-traceur-preprocessor')); }; diff --git a/modules/angular2/src/facade/async.es6 b/modules/angular2/src/facade/async.es6 index 8e9fcff7b1..4ca3252c7a 100644 --- a/modules/angular2/src/facade/async.es6 +++ b/modules/angular2/src/facade/async.es6 @@ -123,4 +123,4 @@ export class EventEmitter extends Observable { return(value) { this._subject.onCompleted(); } -} \ No newline at end of file +} diff --git a/modules/angular2/src/facade/async.ts b/modules/angular2/src/facade/async.ts index 4b3c543c2e..fb18849669 100644 --- a/modules/angular2/src/facade/async.ts +++ b/modules/angular2/src/facade/async.ts @@ -99,4 +99,4 @@ export class EventEmitter extends Observable { throw(error) { this._subject.onError(error); } return (value) { this._subject.onCompleted(); } -} \ No newline at end of file +} diff --git a/test-main.js b/test-main.js index f1cdcb5ebd..35eceb5ebe 100644 --- a/test-main.js +++ b/test-main.js @@ -9,15 +9,16 @@ jasmine.DEFAULT_TIMEOUT_INTERVAL = 100; // we will call `__karma__.start()` later, once all the specs are loaded. __karma__.loaded = function() {}; - -System.baseURL = '/base/modules/'; +System.baseURL = '/base/'; // So that we can import packages like `core/foo`, instead of `core/src/foo`. System.paths = { '*': './*.js', - 'transpiler/*': '../tools/transpiler/*.js', - 'rx/*': '../node_modules/rx/*.js' -} + 'benchpress/*': 'dist/js/dev/es5/benchpress/*.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). System.import('angular2/src/dom/browser_adapter').then(function(browser_adapter) { diff --git a/tools/build/file2modulename.js b/tools/build/file2modulename.js index 103dbcb652..ea04a73067 100644 --- a/tools/build/file2modulename.js +++ b/tools/build/file2modulename.js @@ -3,6 +3,8 @@ function file2moduleName(filePath) { // module name should be relative to `modules` and `tools` folder .replace(/.*\/modules\//, '') .replace(/.*\/tools\//, '') + // and 'dist' folder + .replace(/.*\/dist\/js\/dev\/es5\//, '') // module name should not include `lib`, `web` folders // as they are wrapper packages for dart .replace(/\/web\//, '/')