fix(benchpress): benchpress fixes and a smoke test for Dart
This commit is contained in:
@ -4,30 +4,32 @@ var spawn = require('child_process').spawn;
|
||||
var path = require('path');
|
||||
var glob = require('glob');
|
||||
var fs = require('fs');
|
||||
var util = require('./util');
|
||||
|
||||
module.exports = function(gulp, plugins, config) {
|
||||
return function() {
|
||||
var dartModuleFolders = [].slice.call(glob.sync(config.dest + '/*'));
|
||||
var tempFile = '_analyzer.dart';
|
||||
// analyze in parallel!
|
||||
return Q.all(dartModuleFolders.map(function(dir) {
|
||||
var srcFiles = [].slice.call(glob.sync(dir + '{/lib,/web}/**/*.dart', {
|
||||
cwd: dir
|
||||
}));
|
||||
var testFiles = [].slice.call(glob.sync('test/**/*_spec.dart', {
|
||||
cwd: dir
|
||||
}));
|
||||
var analyzeFile = ['library _analyzer;'];
|
||||
srcFiles.concat(testFiles).forEach(function(fileName, index) {
|
||||
if (fileName !== tempFile && fileName.indexOf("/packages/") === -1) {
|
||||
analyzeFile.push('import "./'+fileName+'" as mod'+index+';');
|
||||
}
|
||||
});
|
||||
fs.writeFileSync(path.join(dir, tempFile), analyzeFile.join('\n'));
|
||||
var defer = Q.defer();
|
||||
analyze(dir, defer.makeNodeResolver());
|
||||
return defer.promise;
|
||||
}));
|
||||
return util.forEachSubDir(
|
||||
config.dest,
|
||||
function(dir) {
|
||||
var srcFiles = [].slice.call(glob.sync('{/lib,/web}/**/*.dart', {
|
||||
cwd: dir
|
||||
}));
|
||||
var testFiles = [].slice.call(glob.sync('test/**/*_spec.dart', {
|
||||
cwd: dir
|
||||
}));
|
||||
var analyzeFile = ['library _analyzer;'];
|
||||
srcFiles.concat(testFiles).forEach(function(fileName, index) {
|
||||
if (fileName !== tempFile && fileName.indexOf("/packages/") === -1) {
|
||||
analyzeFile.push('import "./'+fileName+'" as mod'+index+';');
|
||||
}
|
||||
});
|
||||
fs.writeFileSync(path.join(dir, tempFile), analyzeFile.join('\n'));
|
||||
var defer = Q.defer();
|
||||
analyze(dir, defer.makeNodeResolver());
|
||||
return defer.promise;
|
||||
}
|
||||
);
|
||||
|
||||
function analyze(dirName, done) {
|
||||
//TODO remove --package-warnings once dartanalyzer handles transitive libraries
|
||||
|
48
tools/build/run_server_dart_tests.js
Normal file
48
tools/build/run_server_dart_tests.js
Normal file
@ -0,0 +1,48 @@
|
||||
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() {
|
||||
return util.forEachSubDir(
|
||||
config.dest,
|
||||
function(dir) {
|
||||
var testDir = path.join(dir, 'test');
|
||||
var relativeMasterTestFile = 'test/_all_tests.dart';
|
||||
var testFiles = [].slice.call(glob.sync('**/*.server.spec.dart', {
|
||||
cwd: testDir
|
||||
}));
|
||||
if (testFiles.length == 0) {
|
||||
// No test files found
|
||||
return;
|
||||
}
|
||||
var header = ['library _all_tests;', ''];
|
||||
var main = ['main() {'];
|
||||
testFiles.forEach(function(fileName, index) {
|
||||
header.push('import "' + fileName + '" as test_' + index + ';');
|
||||
main.push(' test_' + index + '.main();');
|
||||
});
|
||||
header.push('');
|
||||
main.push('}');
|
||||
|
||||
var absMasterTestFile = path.join(dir, relativeMasterTestFile);
|
||||
fs.writeFileSync(absMasterTestFile, header.concat(main).join('\n'));
|
||||
|
||||
var defer = Q.defer();
|
||||
var done = defer.makeNodeResolver();
|
||||
util.processToPromise(spawn('dart', ['-c', relativeMasterTestFile], {
|
||||
stdio: 'inherit',
|
||||
cwd: dir
|
||||
})).then(
|
||||
function() { done(); },
|
||||
function(error) { done(error); }
|
||||
);
|
||||
return defer.promise;
|
||||
}
|
||||
);
|
||||
};
|
||||
};
|
@ -1,15 +1,24 @@
|
||||
var Q = require('q');
|
||||
var path = require('path');
|
||||
var minimatch = require('minimatch');
|
||||
var glob = require('glob');
|
||||
|
||||
module.exports = {
|
||||
processToPromise: processToPromise,
|
||||
streamToPromise: streamToPromise,
|
||||
insertSrcFolder: insertSrcFolder,
|
||||
filterByFile: filterByFile
|
||||
filterByFile: filterByFile,
|
||||
forEachSubDir: forEachSubDir
|
||||
};
|
||||
|
||||
|
||||
function forEachSubDir(dir, callback) {
|
||||
var moduleFolders = [].slice.call(glob.sync(dir + '/*'));
|
||||
return Q.all(moduleFolders.map(function(subDir) {
|
||||
return callback(subDir);
|
||||
}));
|
||||
};
|
||||
|
||||
function processToPromise(process) {
|
||||
var defer = Q.defer();
|
||||
process.on('close', function(code) {
|
||||
|
Reference in New Issue
Block a user