1 | const fs = require("fs");
|
2 | const fmt = require("simple-fmt");
|
3 | const exec = require("child_process").exec;
|
4 |
|
5 | function slurp(filename) {
|
6 | return fs.existsSync(filename) ? String(fs.readFileSync(filename)) : "";
|
7 | }
|
8 |
|
9 | const pathToTests = (fs.existsSync("tests") ? "tests" : "../../tests");
|
10 |
|
11 | const tests = fs.readdirSync(pathToTests).filter(function(filename) {
|
12 | return !/-out\.js$/.test(filename) && !/-stderr$/.test(filename);
|
13 | });
|
14 |
|
15 | function 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 |
|
41 | const NODE = process.argv[0];
|
42 | const FLAG = (process.argv[2] === "es5" ? "" : "--harmony");
|
43 | tests.forEach(run);
|