Skip to content

Commit 46eeee6

Browse files
committed
feat(build): add test.unit.dartvm for a faster roundtrip of dartvm tests
1 parent 5298055 commit 46eeee6

File tree

2 files changed

+67
-34
lines changed

2 files changed

+67
-34
lines changed

gulpfile.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -497,6 +497,33 @@ gulp.task('test.unit.cjs', ['build/clean.js', 'build.tools'], function (neverDon
497497
});
498498

499499

500+
gulp.task('test.unit.dartvm', function (done) {
501+
runSequence(
502+
'build/tree.dart',
503+
'build/pubspec.dart',
504+
'!build/change_detect.dart',
505+
'!test.unit.dartvm/run',
506+
function(error) {
507+
// if initial build failed (likely due to build or formatting step) then exit
508+
// otherwise karma server doesn't start and we can't continue running properly
509+
if (error) {
510+
done(error);
511+
return;
512+
}
513+
514+
watch('modules/angular2/**', { ignoreInitial: true }, [
515+
'!build/tree.dart',
516+
'!test.unit.dartvm/run'
517+
]);
518+
}
519+
);
520+
});
521+
522+
gulp.task('!test.unit.dartvm/run', runServerDartTests(gulp, gulpPlugins, {
523+
dir: 'dist/dart/angular2'
524+
}));
525+
526+
500527
gulp.task('test.unit.tools/ci', function(done) {
501528
runJasmineTests(['dist/tools/**/*.spec.js', 'tools/**/*.spec.js'], done);
502529
});

tools/build/run_server_dart_tests.js

Lines changed: 40 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -8,41 +8,47 @@ var util = require('./util');
88

99
module.exports = function(gulp, plugins, config) {
1010
return function() {
11-
return util.forEachSubDirSequential(
12-
config.dest,
13-
function(dir) {
14-
var testDir = path.join(dir, 'test');
15-
var relativeMasterTestFile = 'test/_all_tests.dart';
16-
var testFiles = [].slice.call(glob.sync('**/*.server.spec.dart', {
17-
cwd: testDir
18-
}));
19-
if (testFiles.length == 0) {
20-
// No test files found
21-
return Q.resolve();
22-
}
23-
var header = ['library _all_tests;', ''];
24-
var main = ['main() {'];
25-
testFiles.forEach(function(fileName, index) {
26-
header.push('import "' + fileName + '" as test_' + index + ';');
27-
main.push(' test_' + index + '.main();');
28-
});
29-
header.push('');
30-
main.push('}');
11+
if (config.dir) {
12+
return run(config.dir);
13+
} else {
14+
return util.forEachSubDirSequential(config.dest, run);
15+
}
16+
};
17+
18+
function run(dir) {
19+
var testDir = path.join(dir, 'test');
20+
var relativeMasterTestFile = 'test/_all_tests.dart';
21+
var testFiles = [].slice.call(glob.sync('**/*.server.spec.dart', {
22+
cwd: testDir
23+
}));
24+
if (testFiles.length == 0) {
25+
// No test files found
26+
return Q.resolve();
27+
}
28+
var header = ['library _all_tests;', ''];
29+
var main = ['main() {'];
30+
testFiles.forEach(function(fileName, index) {
31+
header.push('import "' + fileName + '" as test_' + index + ';');
32+
main.push(' test_' + index + '.main();');
33+
});
34+
header.push('');
35+
main.push('}');
3136

32-
var absMasterTestFile = path.join(dir, relativeMasterTestFile);
33-
fs.writeFileSync(absMasterTestFile, header.concat(main).join('\n'));
37+
var absMasterTestFile = path.join(dir, relativeMasterTestFile);
38+
fs.writeFileSync(absMasterTestFile, header.concat(main).join('\n'));
3439

35-
var defer = Q.defer();
36-
var done = defer.makeNodeResolver();
37-
util.processToPromise(spawn('dart', ['-c', relativeMasterTestFile], {
38-
stdio: 'inherit',
39-
cwd: dir
40-
})).then(
41-
function() { done(); },
42-
function(error) { done(error); }
43-
);
44-
return defer.promise;
45-
}
40+
var defer = Q.defer();
41+
var done = defer.makeNodeResolver();
42+
console.log('start tests');
43+
util.processToPromise(spawn('dart', ['-c', relativeMasterTestFile], {
44+
stdio: 'inherit',
45+
cwd: dir
46+
})).then(
47+
function() { done(); },
48+
function(error) { done(error); }
4649
);
47-
};
50+
return defer.promise.then(function() {
51+
console.log('end tests');
52+
});
53+
}
4854
};

0 commit comments

Comments
 (0)