UNPKG

1.52 kBJavaScriptView Raw
1const fs = require("fs");
2const fmt = require("simple-fmt");
3const exec = require("child_process").exec;
4
5function slurp(filename) {
6 return fs.existsSync(filename) ? String(fs.readFileSync(filename)) : "";
7}
8
9const pathToTests = (fs.existsSync("tests") ? "tests" : "../../tests");
10
11const tests = fs.readdirSync(pathToTests).filter(function(filename) {
12 return !/-out\.js$/.test(filename) && !/-stderr$/.test(filename);
13});
14
15function run(test) {
16 const noSuffix = test.slice(0, -3);
17 exec(fmt("{0} {1} defs-wrapper {2}/{3}", NODE, FLAG, pathToTests, test), function(error, stdout, stderr) {
18 stderr = stderr || "";
19 stdout = stdout || "";
20 const expectedStderr = slurp(fmt("{0}/{1}-stderr", pathToTests, noSuffix));
21 const expectedStdout = slurp(fmt("{0}/{1}-out.js", pathToTests, noSuffix));
22
23 if (stderr !== expectedStderr) {
24 fail("stderr", stderr, expectedStderr);
25 }
26 if (stdout !== expectedStdout) {
27 fail("stdout", stdout, expectedStdout);
28 }
29
30 function fail(type, got, expected) {
31 console.log(fmt("FAILED test {0}", test));
32 console.log(fmt("\nEXPECTED {0}:", type));
33 process.stdout.write(expected);
34 console.log(fmt("\nGOT {0}:", type));
35 process.stdout.write(got);
36 console.log("---------------------------\n");
37 }
38 });
39}
40
41const NODE = process.argv[0];
42const FLAG = (process.argv[2] === "es5" ? "" : "--harmony");
43tests.forEach(run);