mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-04-25 07:02:13 +00:00
55 lines
1.9 KiB
JavaScript
55 lines
1.9 KiB
JavaScript
var fs = require("fs");
|
|
var colors = require("../cli/util/colors");
|
|
var glob = require("glob");
|
|
var diff = require("./util/diff");
|
|
|
|
require("ts-node").register({ project: require("path").join(__dirname, "..", "src", "tsconfig.json") });
|
|
require("../src/glue/js");
|
|
|
|
var Parser = require("../src/parser").Parser;
|
|
var ASTBuilder = require("../src/extra/ast").ASTBuilder;
|
|
|
|
var isCreate = process.argv[2] === "--create";
|
|
var filter = process.argv.length > 2 && !isCreate ? "*" + process.argv[2] + "*.ts" : "**.ts";
|
|
var failures = 0;
|
|
|
|
glob.sync(filter, { cwd: __dirname + "/parser" }).forEach(filename => {
|
|
if (filename.charAt(0) == "_" || filename.endsWith(".fixture.ts"))
|
|
return;
|
|
|
|
console.log(colors.white("Testing parser/" + filename));
|
|
|
|
var failed = false;
|
|
var parser = new Parser();
|
|
var sourceText = fs.readFileSync(__dirname + "/parser/" + filename, { encoding: "utf8" }).replace(/\r?\n/g, "\n");
|
|
parser.parseFile(sourceText, filename, true);
|
|
var serializedSourceText = ASTBuilder.build(parser.program.sources[0]);
|
|
var actual = serializedSourceText + parser.diagnostics.map(diagnostic => "// " + diagnostic +"\n").join("");
|
|
var fixture = filename + ".fixture.ts";
|
|
|
|
if (isCreate) {
|
|
fs.writeFileSync(__dirname + "/parser/" + fixture, actual, { encoding: "utf8" });
|
|
console.log("Created\n");
|
|
} else {
|
|
var expected = fs.readFileSync(__dirname + "/parser/" + fixture, { encoding: "utf8" }).replace(/\r\n/g, "\n");
|
|
var diffs = diff("parser/" + fixture, expected, actual);
|
|
if (diffs !== null) {
|
|
failed = true;
|
|
console.log(diffs);
|
|
console.log(colors.red("diff ERROR"));
|
|
} else {
|
|
console.log(colors.green("diff OK"));
|
|
}
|
|
}
|
|
|
|
console.log();
|
|
if (failed)
|
|
++failures;
|
|
});
|
|
|
|
if (failures) {
|
|
process.exitCode = 1;
|
|
console.log(colors.red("ERROR: ") + failures + " parser tests failed");
|
|
} else
|
|
console.log("[ " + colors.white("SUCCESS") + " ]");
|