babel/test/test262.js
2015-02-15 20:39:46 +11:00

55 lines
1.3 KiB
JavaScript

if (process.env.SIMPLE_BABEL_TESTS) return;
require("./_helper").assertVendor("test262");
var transform = require("../lib/babel/transformation");
var readdir = require("fs-readdir-recursive");
var helper = require("./_helper");
var path = require("path");
var fs = require("fs");
var _ = require("lodash");
var test262Loc = __dirname + "/../vendor/test262";
var read = function (loc) {
return readdir(loc).map(function (filename) {
return path.join(loc, filename);
});
};
var check = function (loc) {
try {
var file = fs.readFileSync(loc, "utf8");
// this normalizes syntax and early runtime reference errors since they're
// both thrown as SyntaxErrors in acorn
// SyntaxError: var null;
// ReferenceError: 1++; (runtime)
var lazyError = /negative: (\S+)/.test(file);
transform(file, {
filename: loc,
blacklist: ["useStrict"],
_anal: true
});
} catch (err) {
if (err && lazyError && err instanceof SyntaxError) {
return;
} else {
err.stack = loc + ": " + err.stack;
throw err;
}
}
};
// tests!
var tests = read(test262Loc + "/test");
_.each(tests, function (loc) {
var alias = path.relative(test262Loc + "/test", loc);
alias = alias.replace(/\.([^\.]+)$/g, "");
test(alias, function () {
this.timeout(0);
check(loc);
});
});