gourmet-generator
Version:
Code generator using Javascript scripts and mustache templates
123 lines (88 loc) • 2.68 kB
JavaScript
var fs = require('fs')
var path = require('path')
var utils = require('util')
var Runner = require('../lib/runner.js').Runner
// base is the root directory of the project
function getBaseFolder() {
var b = path.dirname(process.argv[1]);
var arr = b.split(path.sep)
arr.pop();
var base = arr.join(path.sep);
console.log(process.argv[1], base)
return base;
}
var base = getBaseFolder();
//console.log(base)
//console.log(fs.readdirSync('./test'))
//utils.inspect(fs.readdirSync('./test'));
var files;
// delete all output files
console.log('\ndeleting output files')
files = fs.readdirSync('./test');
for (var i in files) {
var f = files[i];
if (f.match(/.*\.out/)) {
var fp = path.join(base, 'test', f);
fs.unlinkSync(fp);
console.log('deleted ' + fp);
}
}
// read all tt files
console.log('\nreading tt files')
files = fs.readdirSync('./test');
var tts = [];
for (var i in files) {
var f = files[i];
if (f.match(/.*\.js/)) {
var fp = path.join(base, 'test', f);
console.log('read tt ' + fp);
tts.push({
fp: fp,
id: f,
base: path.dirname(fp)
});
}
}
// execute all tt files
console.log('\nexecuting tt files')
for (var i in tts) {
var id = tts[i].id;
var ttScriptFilePath = tts[i].fp;
var ttBase = tts[i].base;
console.log('executing ' + id);
var runner = new Runner();
runner.load(ttScriptFilePath);
runner.execute()
}
// for each expected file check if the output file is the equivalent
console.log('\nvalidating expected and output files')
files = fs.readdirSync('./test');
var results = {};
for (var i in files) {
var f = files[i];
if (f.match(/.*\.expected/)) {
var id = f.substring(0, f.length - 9);
var outputExists = (files.indexOf(id + '.out') != -1)
if (!outputExists) {
console.log('*** Error: no output file id:' + f);
results[id] = {
error: 'No output file'
}
continue;
}
var expectedPath = path.join(base, 'test', id + '.expected');
var outputPath = path.join(base, 'test', id + '.out');
var expectedFile = fs.readFileSync(expectedPath, 'utf8');
var outputFile = fs.readFileSync(outputPath, 'utf8');
if (expectedFile != outputFile) {
console.log('*** Error: output file and expected file is not the same id:' + id);
results[id] = {
error: 'Expected and Output files are different'
}
}
else {
console.log('Success id:' + id);
}
}
}
// check if the amount of files expected is the same as the files output