chore(build): make karma watch broccoli output for dart unit tests
Previously, karma used a custom preprocessor. Instead, have karma run built dart from the `dist` folder and use gulp and broccoli to watch for changes.
This commit is contained in:
parent
c9cec60007
commit
bb6f59e423
30
gulpfile.js
30
gulpfile.js
|
@ -321,31 +321,39 @@ function getBrowsersFromCLI() {
|
||||||
return [args.browsers?args.browsers:'DartiumWithWebPlatform']
|
return [args.browsers?args.browsers:'DartiumWithWebPlatform']
|
||||||
}
|
}
|
||||||
|
|
||||||
gulp.task('test.unit.js', ['build/clean.js'], function (neverDone) {
|
gulp.task('test.unit.js', ['build/clean.js', 'broccoli.js.dev'], function (neverDone) {
|
||||||
|
|
||||||
function buildAndTest() {
|
function buildAndTest() {
|
||||||
runSequence(
|
runSequence(
|
||||||
'broccoli.js.dev',
|
'broccoli.js.dev',
|
||||||
'test.unit.dev/karma-run'
|
'test.unit.js/karma-run'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
karma.server.start({configFile: __dirname + '/karma-js.conf.js'});
|
karma.server.start({configFile: __dirname + '/karma-js.conf.js'});
|
||||||
buildAndTest();
|
|
||||||
|
|
||||||
gulp.watch('modules/**', function() {
|
gulp.watch('modules/**', buildAndTest);
|
||||||
console.log('args', arguments);
|
|
||||||
buildAndTest();
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('test.unit.dev/karma-run', function(done) {
|
gulp.task('test.unit.js/karma-run', function (done) {
|
||||||
karma.runner.run({configFile: __dirname + '/karma-js.conf.js'}, done);
|
karma.runner.run({configFile: __dirname + '/karma-js.conf.js'}, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
gulp.task('test.unit.dart', ['build/tree.dart'], function (done) {
|
||||||
|
function buildAndTest() {
|
||||||
|
runSequence(
|
||||||
|
'build/tree.dart',
|
||||||
|
'test.unit.dart/karma-run'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
gulp.task('test.unit.dart', function (done) {
|
karma.server.start({configFile: __dirname + '/karma-dart.conf.js'});
|
||||||
karma.server.start({configFile: __dirname + '/karma-dart.conf.js'}, done);
|
|
||||||
|
gulp.watch('modules/angular2/**', buildAndTest);
|
||||||
|
});
|
||||||
|
|
||||||
|
gulp.task('test.unit.dart/karma-run', function (done) {
|
||||||
|
karma.runner.run({configFile: __dirname + '/karma-dart.conf.js'}, done);
|
||||||
});
|
});
|
||||||
|
|
||||||
gulp.task('test.unit.js/ci', function (done) {
|
gulp.task('test.unit.js/ci', function (done) {
|
||||||
|
@ -355,7 +363,7 @@ gulp.task('test.unit.js/ci', function (done) {
|
||||||
|
|
||||||
gulp.task('test.unit.dart/ci', function (done) {
|
gulp.task('test.unit.dart/ci', function (done) {
|
||||||
karma.server.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);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -11,14 +11,11 @@ module.exports = function(config) {
|
||||||
// Init and configure guiness.
|
// Init and configure guiness.
|
||||||
{pattern: 'test-init.dart', included: true},
|
{pattern: 'test-init.dart', included: true},
|
||||||
// Unit test files needs to be included.
|
// Unit test files needs to be included.
|
||||||
// Karma-dart generates `__adapter_unittest.dart` that imports these files.
|
{pattern: 'dist/dart/**/*_spec.dart', included: true, watched: false},
|
||||||
{pattern: 'modules/*/test/**/*_spec.js', included: true},
|
|
||||||
{pattern: 'modules/*/test/**/*_spec.dart', included: true},
|
|
||||||
{pattern: 'tools/transpiler/spec/**/*_spec.js', included: true},
|
|
||||||
|
|
||||||
// These files are not included, they are imported by the unit tests above.
|
// Karma-dart via the dart-unittest framework generates
|
||||||
{pattern: 'modules/**', included: false},
|
// `__adapter_unittest.dart` that imports these files.
|
||||||
{pattern: 'tools/transpiler/spec/**/*', included: false},
|
{pattern: 'dist/dart/**', included: false, watched: false},
|
||||||
|
|
||||||
// Dependencies, installed with `pub install`.
|
// Dependencies, installed with `pub install`.
|
||||||
{pattern: 'packages/**/*.dart', included: false, watched: false},
|
{pattern: 'packages/**/*.dart', included: false, watched: false},
|
||||||
|
@ -27,49 +24,29 @@ module.exports = function(config) {
|
||||||
{pattern: 'test-main.dart', included: true}
|
{pattern: 'test-main.dart', included: true}
|
||||||
],
|
],
|
||||||
|
|
||||||
|
exclude: [
|
||||||
|
'dist/dart/**/packages/**',
|
||||||
|
],
|
||||||
|
|
||||||
karmaDartImports: {
|
karmaDartImports: {
|
||||||
guinness: 'package:guinness/guinness_html.dart'
|
guinness: 'package:guinness/guinness_html.dart'
|
||||||
},
|
},
|
||||||
|
|
||||||
// TODO(vojta): Remove the localhost:9877 from urls, once the proxy fix is merged:
|
|
||||||
// https://github.com/karma-runner/karma/pull/1207
|
|
||||||
//
|
|
||||||
// Map packages to the correct urls where Karma serves them.
|
// Map packages to the correct urls where Karma serves them.
|
||||||
proxies: {
|
proxies: {
|
||||||
// Dependencies installed with `pub install`.
|
// Dependencies installed with `pub install`.
|
||||||
'/packages/unittest': 'http://localhost:9877/base/packages/unittest',
|
'/packages/unittest': '/base/packages/unittest',
|
||||||
'/packages/guinness': 'http://localhost:9877/base/packages/guinness',
|
'/packages/guinness': '/base/packages/guinness',
|
||||||
'/packages/matcher': 'http://localhost:9877/base/packages/matcher',
|
'/packages/matcher': '/base/packages/matcher',
|
||||||
'/packages/stack_trace': 'http://localhost:9877/base/packages/stack_trace',
|
'/packages/stack_trace': '/base/packages/stack_trace',
|
||||||
'/packages/collection': 'http://localhost:9877/base/packages/collection',
|
'/packages/collection': '/base/packages/collection',
|
||||||
'/packages/path': 'http://localhost:9877/base/packages/path',
|
'/packages/path': '/base/packages/path',
|
||||||
|
|
||||||
// Local dependencies, transpiled from the source.
|
// Local dependencies, transpiled from the source.
|
||||||
'/packages/angular': 'http://localhost:9877/base/modules/angular',
|
'/packages/angular2': '/base/dist/dart/angular2/lib',
|
||||||
'/packages/benchpress': 'http://localhost:9877/base/modules/benchpress',
|
'/packages/angular2_material': '/base/dist/dart/angular2_material/lib',
|
||||||
'/packages/core': 'http://localhost:9877/base/modules/core',
|
'/packages/benchpress': '/base/dist/dart/benchpress/lib',
|
||||||
'/packages/change_detection': 'http://localhost:9877/base/modules/change_detection',
|
'/packages/examples': '/base/dist/dart/examples/lib'
|
||||||
'/packages/reflection': 'http://localhost:9877/base/modules/reflection',
|
|
||||||
'/packages/router': 'http://localhost:9877/base/modules/router',
|
|
||||||
'/packages/di': 'http://localhost:9877/base/modules/di',
|
|
||||||
'/packages/directives': 'http://localhost:9877/base/modules/directives',
|
|
||||||
'/packages/facade': 'http://localhost:9877/base/modules/facade',
|
|
||||||
'/packages/forms': 'http://localhost:9877/base/modules/forms',
|
|
||||||
'/packages/test_lib': 'http://localhost:9877/base/modules/test_lib',
|
|
||||||
'/packages/mock': 'http://localhost:9877/base/modules/mock',
|
|
||||||
},
|
|
||||||
|
|
||||||
preprocessors: {
|
|
||||||
'modules/**/*.js': ['ts2dart'],
|
|
||||||
'modules/angular2/src/reflection/reflector.ts': ['ts2dart'],
|
|
||||||
'tools/**/*.js': ['ts2dart']
|
|
||||||
},
|
|
||||||
|
|
||||||
ts2dartPreprocessor: {
|
|
||||||
resolveModuleName: file2moduleName,
|
|
||||||
transformPath: function(fileName) {
|
|
||||||
return fileName.replace(/\.(js|ts)$/, '.dart');
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
|
|
||||||
customLaunchers: {
|
customLaunchers: {
|
||||||
|
@ -81,7 +58,4 @@ module.exports = function(config) {
|
||||||
|
|
||||||
port: 9877
|
port: 9877
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
config.plugins.push(require('./tools/transpiler/karma-ts2dart-preprocessor'));
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -144,5 +144,10 @@ module.exports = function makeDartTree(destinationPath) {
|
||||||
|
|
||||||
var dartTree = mergeTrees([sourceTree, getTemplatedPubspecsTree(), getDocsTree()]);
|
var dartTree = mergeTrees([sourceTree, getTemplatedPubspecsTree(), getDocsTree()]);
|
||||||
|
|
||||||
|
// TODO(iminar): tree differ seems to have issues with trees created by mergeTrees, investigate!
|
||||||
|
// ENOENT error is thrown while doing fs.readdirSync on inputRoot
|
||||||
|
// in the meantime, we just do noop mv to create a new tree
|
||||||
|
dartTree = stew.mv(dartTree, '');
|
||||||
|
|
||||||
return destCopy(dartTree, destinationPath);
|
return destCopy(dartTree, destinationPath);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue