add test262

This commit is contained in:
Sebastian McKenzie 2015-01-07 13:08:06 +11:00
parent fa42b076a7
commit c420d1ffc3
4 changed files with 64 additions and 0 deletions

3
.gitmodules vendored
View File

@ -4,3 +4,6 @@
[submodule "vendor/regenerator"]
path = vendor/regenerator
url = https://github.com/facebook/regenerator
[submodule "vendor/test262"]
path = vendor/test262
url = https://github.com/tc39/test262

View File

@ -37,6 +37,11 @@ test: lint
$(MOCHA_CMD)
make test-clean
test-simple:
# excludes test262
export SIMPLE_6TO5_TESTS=1
make test
test-cov:
rm -rf coverage
node $(ISTANBUL_CMD) $(MOCHA_CMD) --

55
test/test262.js Normal file
View File

@ -0,0 +1,55 @@
if (process.env.SIMPLE_6TO5_TESTS) return;
var transform = require("../lib/6to5/transformation/transform");
var readdir = require("fs-readdir-recursive");
var path = require("path");
var fs = require("fs");
var _ = require("lodash");
var test262Loc = __dirname + "/../vendor/test262";
if (!fs.existsSync(traceurLoc)) {
console.error("No vendor/test262 - run `make bootstrap`");
process.exit(1);
}
var read = function (loc) {
return readdir(loc).map(function (filename) {
return path.join(loc, filename);
});
};
var exec = function (loc) {
try {
var file = fs.readFileSync(loc, "utf8");
// this normalises syntax and early runtime reference errors
// SyntaxError: var null;
// ReferenceError: 1++; (runtime)
var lazyError = /negative: (\S+)/.test(file);
var compiled = transform(file, {
filename: loc,
blacklist: ["useStrict"]
});
global.eval(compiled);
} catch (err) {
if (err && lazyError && err instanceof SyntaxError) {
return;
} else {
throw err;
}
}
};
// harness
var harness = read(test262Loc + "/harness");
_.each(harness, exec);
// tests!
var tests = read(test262Loc + "/test");
_.each(tests, function (loc) {
test(loc, function () {
exec(loc);
});
});

1
vendor/test262 vendored Submodule

@ -0,0 +1 @@
Subproject commit d075338699cc8eaf123d5f5491f0d68116ee224a