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 tests = fs.readdirSync("tests").filter(function(filename) {
|
10 | return !/-out\.js$/.test(filename) && !/-stderr$/.test(filename);
|
11 | });
|
12 |
|
13 | function run(test) {
|
14 | const noSuffix = test.slice(0, -3);
|
15 | exec(fmt("node --harmony defs-wrapper tests/{0}", test), function(error, stdout, stderr) {
|
16 | stderr = stderr || "";
|
17 | stdout = stdout || "";
|
18 | const expectedStderr = slurp(fmt("tests/{0}-stderr", noSuffix));
|
19 | const expectedStdout = slurp(fmt("tests/{0}-out.js", noSuffix));
|
20 |
|
21 | if (stderr !== expectedStderr) {
|
22 | fail("stderr", stderr, expectedStderr);
|
23 | }
|
24 | if (stdout !== expectedStdout) {
|
25 | fail("stdout", stdout, expectedStdout);
|
26 | }
|
27 |
|
28 | function fail(type, got, expected) {
|
29 | console.log(fmt("FAILED test {0}", test));
|
30 | console.log(fmt("\nEXPECTED {0}:", type));
|
31 | process.stdout.write(expected);
|
32 | console.log(fmt("\nGOT {0}:", type));
|
33 | process.stdout.write(got);
|
34 | console.log("---------------------------\n");
|
35 | }
|
36 | });
|
37 | }
|
38 |
|
39 | tests.forEach(run);
|