UNPKG

gourmet-generator

Version:

Code generator using Javascript scripts and mustache templates

123 lines (88 loc) 2.68 kB
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