move traceur test suite to a git submodule

This commit is contained in:
Sebastian McKenzie 2015-01-05 10:18:30 +11:00
parent a8fad4b958
commit 7f87ca0d43
5 changed files with 89 additions and 17 deletions

View File

@ -16,11 +16,11 @@ var readFile = exports.readFile = function (filename) {
}
};
exports.get = function (entryName) {
exports.get = function (entryName, entryLoc) {
if (exports.cache[entryName]) return exports.cache[entryName];
var suites = [];
var entryLoc = __dirname + "/fixtures/" + entryName;
var entryLoc = entryLoc || __dirname + "/fixtures/" + entryName;
_.each(fs.readdirSync(entryLoc), function (suiteName) {
if (suiteName[0] === ".") return;
@ -133,4 +133,5 @@ try {
var cache = exports.cache = {};
cache.transformation = exports.get("transformation");
cache.generation = exports.get("generation");
cache.esnext = exports.get("esnext");
}

View File

@ -20,6 +20,19 @@ global.assert = chai.assert;
global.chai = chai;
global.genHelpers = genHelpers;
// Different Traceur generator message
chai.assert._throw = chai.assert.throw;
chai.assert.throw = function (fn, msg) {
if (msg === '"throw" on executing generator' ||
msg === '"next" on executing generator') {
msg = "Generator is already running";
} else if (msg === "Sent value to newborn generator") {
msg = /^attempt to send (.*?) to newborn generator$/;
}
return chai.assert._throw(fn, msg);
};
var run = function (task, done) {
var actual = task.actual;
var expect = task.expect;
@ -84,20 +97,30 @@ var run = function (task, done) {
}
};
module.exports = function (name, opts) {
if (opts && opts.requireHook) {
require("6to5/register")(opts);
}
module.exports = function (suiteOpts, taskOpts, dynamicOpts) {
taskOpts = taskOpts || {};
_.each(helper.get(name), function (testSuite) {
suite(name + "/" + testSuite.title, function () {
require("6to5/register")(taskOpts);
_.each(helper.get(suiteOpts.name, suiteOpts.loc), function (testSuite) {
if (_.contains(suiteOpts.ignoreSuites, testSuite.title)) return;
suite(suiteOpts.name + "/" + testSuite.title, function () {
_.each(testSuite.tests, function (task) {
if (_.contains(suiteOpts.ignoreTasks, task.title) || _.contains(suiteOpts.ignoreTasks, testSuite.title + "/" + task.title)) return;
var runTest = function (done) {
var runTask = function () {
run(task, done);
try {
run(task, done);
} catch (err) {
if (task.options.after) task.options.after();
throw err;
}
};
_.defaults(task.options, opts);
_.extend(task.options, taskOpts);
if (dynamicOpts) dynamicOpts(task.options, task);
var throwMsg = task.options.throws;
if (throwMsg) {

View File

@ -1,4 +1,2 @@
--reporter dot
--ui tdd
--check-leaks
--globals regeneratorRuntime

View File

@ -1,5 +1,53 @@
require("./_transformation-helper")("traceur", {
blacklist: ["useStrict"],
requireHook: true,
experimental: true
var _ = require("lodash");
require("./_transformation-helper")({
name: "traceur",
loc: __dirname + "/../vendor/traceur/test/feature",
ignoreSuites: [
"ObjectMixin",
"Annotations",
"TestRunner",
"Tools",
"TempVarTransformer",
"AtScript",
"FreeVariableChecker",
"TypeAssertions",
"MemberVariables",
"Types",
// REENABLE THESE
"Destructuring",
"Syntax",
"StringExtras",
"Symbol",
"Yield",
"Modules",
"Spread",
"Scope",
"GeneratorComprehension"
],
ignoreTasks: [
"Strict",
// core.js doesn't support due to a perf hit and having to override a lot
// of native methods
"Symbol/GetOwnPropertySymbols",
// Traceur doesn't name methods and has an incorrect test asserting that
// they have no names
"PropertyMethodAssignment/PropertyMethodAssignment"
]
}, {
optional: ["typeofSymbol"],
experimental: true,
after: function () {
// StringExtras/StarsWith
delete Object.prototype[1];
}
}, function (opts, task) {
if (!_.contains(task.exec.loc, "module.js")) {
opts.blacklist = ["useStrict"];
}
});

View File

@ -1 +1,3 @@
require("./_transformation-helper")("transformation");
require("./_transformation-helper")({
name: "transformation"
});