From 7f87ca0d436bd969d30ac66ed186bb5d6765539c Mon Sep 17 00:00:00 2001 From: Sebastian McKenzie Date: Mon, 5 Jan 2015 10:18:30 +1100 Subject: [PATCH] move traceur test suite to a git submodule --- test/_helper.js | 5 +-- test/_transformation-helper.js | 39 ++++++++++++++++++----- test/mocha.opts | 2 -- test/traceur.js | 56 +++++++++++++++++++++++++++++++--- test/transformation.js | 4 ++- 5 files changed, 89 insertions(+), 17 deletions(-) diff --git a/test/_helper.js b/test/_helper.js index 4e9274ea77..60371d0e2f 100644 --- a/test/_helper.js +++ b/test/_helper.js @@ -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"); } diff --git a/test/_transformation-helper.js b/test/_transformation-helper.js index a9620445cb..0bf356e65c 100644 --- a/test/_transformation-helper.js +++ b/test/_transformation-helper.js @@ -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) { diff --git a/test/mocha.opts b/test/mocha.opts index 51c30180df..850a6c2f64 100644 --- a/test/mocha.opts +++ b/test/mocha.opts @@ -1,4 +1,2 @@ --reporter dot --ui tdd ---check-leaks ---globals regeneratorRuntime diff --git a/test/traceur.js b/test/traceur.js index 2dd598ffe8..20a395d198 100644 --- a/test/traceur.js +++ b/test/traceur.js @@ -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"]; + } }); diff --git a/test/transformation.js b/test/transformation.js index 8fa8d298ad..642604401e 100644 --- a/test/transformation.js +++ b/test/transformation.js @@ -1 +1,3 @@ -require("./_transformation-helper")("transformation"); +require("./_transformation-helper")({ + name: "transformation" +});