Skip to content

Instantly share code, notes, and snippets.

@kangax
Created December 12, 2016 18:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kangax/d4e96384bdce3528d41808ae1843df14 to your computer and use it in GitHub Desktop.
Save kangax/d4e96384bdce3528d41808ae1843df14 to your computer and use it in GitHub Desktop.
const glob = require('glob');
const fs = require('fs');
const babel = require('babel-core');
const chalk = require('chalk');
const vm = require('vm');
const without = require('lodash.without');
let index = 0;
glob('test/**/*.js', {}, (err, files) => {
let failedTests = [],
passedTests = [],
erroredTests = [],
erroredInBabelTests = [];
if (err) {
console.log('error globing');
return;
}
test();
function test() {
const file = files.shift();
if (!file) {
console.log(
'Failed:', failedTests.length,
'\nPassed: ', passedTests.length,
'\nErrored: ', (erroredTests.join() || 0),
'\nErrored in Babel: ', (erroredInBabelTests.join() || 0),
'\nErrored in Babel only: ',
without(erroredInBabelTests, ...erroredTests) || 0
);
process.exit(1);
return;
}
console.log('Reading file', file);
const baselineFile = file.replace(/\.js$/, '.baseline');
fs.readFile(file, (err, testContents) => {
if (err) {
console.log('error reading test file');
return test();
}
testContents = testContents + '';
fs.readFile(baselineFile, (err, baselineContents) => {
if (err) {
console.log('error reading baseline file', baselineFile, '\n');
return test();
}
baselineContents = baselineContents + '';
try {
if (file !== 'test/Function/631838.js') {
babel.transform(testContents, {
sourceType: 'script',
presets: [ 'babili' ],
compact: false
});
}
}
catch(err) {
console.log(err);
erroredInBabelTests.push(file);
}
var str = '';
function __callback(val) {
str += val + '\r\n';
}
try {
vm.runInNewContext(testContents, {
console: console,
WScript: {
Echo: function() {
__callback.apply(this, arguments);
}
},
print: __callback,
write: __callback,
}, {
timeout: 3000
});
}
catch(err) {
erroredTests.push(file);
// return;
}
const areSame = baselineContents === str;
console.log('\n=== Same? === (' + file + ') \n',
areSame
? chalk.green('true')
: chalk.red('false'));
if (!areSame) {
failedTests.push(file);
// console.log('Original >' + testContents + '<');
// console.log('Trasformed >' + transformed + '<');
// console.log('Actual >' + str + '<');
// console.log('Expected >' + baselineContents + '<');
// console.log('Failed tests:', ++failedTests);
}
else {
passedTests.push(file);
}
test();
});
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment