angular-cn/tools/build/run_server_dart_tests.js
Tim Blasi 4d0c2ed1f6 test(dart/transform): Update dependencies & fix Dart tests
Widen version dependencies for `package:angular`, `package:code_transformers`,
and `package:observe`.

`package:guinness` uses `package:unittest` while
the newest versions of `package:code_transformers` use `package:test`.
This causes our end-to-end Dart transformer tests (which use testing
code in `package:code_transformers`) to be skipped.

To fix this:
- Move e2e tests to run in a separate file
- Run `gulp test.server.dart` tests serially

Closes #5922

Closes #5935
2016-01-14 00:29:03 +00:00

52 lines
1.2 KiB
JavaScript

var Q = require('q');
var glob = require('glob');
var fs = require('fs');
var path = require('path');
var spawn = require('child_process').spawn;
var util = require('./util');
module.exports = function(gulp, plugins, config) {
return function() {
if (config.dir) {
return run(config.dir);
} else {
return util.forEachSubDirSequential(config.dest, run);
}
};
function run(dir) {
var testFiles = [].slice.call(glob.sync('**/*.server.spec.dart', {
cwd: dir
}));
if (testFiles.length == 0) {
// No test files found
return Q.resolve();
}
var defer = Q.defer();
var done = defer.makeNodeResolver();
console.log('start tests:', dir);
var processSerial = function() {
if (testFiles.length == 0) {
done();
return;
}
var file = testFiles.shift();
util.processToPromise(spawn('dart', ['-c', file], {
stdio: 'inherit',
cwd: dir
})).then(
processSerial,
function(error) {
done(error);
}
);
};
processSerial();
return defer.promise.then(function() {
console.log('end tests');
});
}
};