fix(benchpress): benchpress fixes and a smoke test for Dart

This commit is contained in:
Yegor Jbanov
2015-02-20 17:44:23 -08:00
parent 0a0c0d8302
commit d1f03e509b
18 changed files with 263 additions and 61 deletions

View File

@ -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

View 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;
}
);
};
};

View File

@ -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) {