-
-
Save kangax/d4e96384bdce3528d41808ae1843df14 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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