'use strict'; var builder = require('./builder'); var fs = require('fs'); var path = require('path'); var errors = 0; var baseDir = path.join(__dirname, 'fixtures'); var files = fs.readdirSync(baseDir).filter(function (name) { return /-expected\./.test(name); }).map(function (name) { return path.join(baseDir, name); }); files.forEach(function(expectationFilename) { var inFilename = expectationFilename.replace('-expected', ''); var expectation = fs.readFileSync(expectationFilename).toString().trim() .replace(/__filename/g, fs.realpathSync(inFilename)); var outLines = []; var outFilename = function(line) { outLines.push(line); }; var defines = { TRUE: true, FALSE: false, }; var out; try { builder.preprocess(inFilename, outFilename, defines); out = outLines.join('\n').trim(); } catch (e) { out = ('Error: ' + e.message).replace(/^/gm, '//'); } if (out !== expectation) { errors++; console.log('Assertion failed for ' + inFilename); console.log('--------------------------------------------------'); console.log('EXPECTED:'); console.log(expectation); console.log('--------------------------------------------------'); console.log('ACTUAL'); console.log(out); console.log('--------------------------------------------------'); console.log(); } }); if (errors) { console.error('Found ' + errors + ' expectation failures.'); process.exit(1); } else { console.log('All tests completed without errors.'); process.exit(0); }