extract out mocha fixtures and resolve utils
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
if (process.env.running_under_istanbul) return;
|
||||
|
||||
var readdir = require("fs-readdir-recursive");
|
||||
var helper = require("../../babel/test/_helper");
|
||||
var helper = require("mocha-fixtures");
|
||||
var assert = require("assert");
|
||||
var rimraf = require("rimraf");
|
||||
var outputFileSync = require("output-file-sync");
|
||||
|
||||
@@ -72,6 +72,7 @@
|
||||
"source-map-support": "^0.2.10",
|
||||
"strip-json-comments": "^1.0.2",
|
||||
"to-fast-properties": "^1.0.0",
|
||||
"trim-right": "^1.0.0"
|
||||
"trim-right": "^1.0.0",
|
||||
"try-resolve": "^1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
var fs = require("fs");
|
||||
var cache = require("../test/_helper").cache;
|
||||
fs.writeFileSync(__dirname + "/../tests.json", JSON.stringify(cache));
|
||||
0
packages/babel/scripts/postpublish.js
Normal file → Executable file
0
packages/babel/scripts/postpublish.js
Normal file → Executable file
@@ -11,6 +11,7 @@ import codeFrame from "../../helpers/code-frame";
|
||||
import defaults from "lodash/object/defaults";
|
||||
import includes from "lodash/collection/includes";
|
||||
import traverse from "../../traversal";
|
||||
import resolve from "try-resolve";
|
||||
import Logger from "./logger";
|
||||
import Plugin from "../plugin";
|
||||
import parse from "../../helpers/parse";
|
||||
@@ -486,7 +487,7 @@ export default class File {
|
||||
var ModuleFormatter = isFunction(type) ? type : moduleFormatters[type];
|
||||
|
||||
if (!ModuleFormatter) {
|
||||
var loc = util.resolveRelative(type);
|
||||
var loc = resolve.relative(type);
|
||||
if (loc) ModuleFormatter = require(loc);
|
||||
}
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@ import Transformer from "../transformer";
|
||||
import Plugin from "../plugin";
|
||||
import * as types from "../../types";
|
||||
import * as messages from "../../messages";
|
||||
import resolve from "try-resolve";
|
||||
import traverse from "../../traversal";
|
||||
import parse from "../../helpers/parse";
|
||||
|
||||
@@ -18,8 +19,6 @@ var context = {
|
||||
traverse
|
||||
};
|
||||
|
||||
import * as util from "../../util";
|
||||
|
||||
/**
|
||||
* [Please add a description.]
|
||||
*/
|
||||
@@ -78,7 +77,7 @@ export default class PluginManager {
|
||||
var match = name.match(/^(.*?):(after|before)$/);
|
||||
if (match) [, name, position] = match;
|
||||
|
||||
var loc = util.resolveRelative(`babel-plugin-${name}`) || util.resolveRelative(name);
|
||||
var loc = resolve.relative(`babel-plugin-${name}`) || resolve.relative(name);
|
||||
if (loc) {
|
||||
var plugin = require(loc);
|
||||
return {
|
||||
|
||||
@@ -32,7 +32,8 @@ export const STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
|
||||
export const FLATTENABLE_KEYS = ["body", "expressions"];
|
||||
export const FOR_INIT_KEYS = ["left", "init"];
|
||||
export const COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
|
||||
export const INHERIT_KEYS = {
|
||||
|
||||
export const INHERIT_KEYS = {
|
||||
optional: ["typeAnnotation", "typeParameters", "returnType"],
|
||||
force: ["_scopeInfo", "_paths", "range", "start", "loc", "end"]
|
||||
};
|
||||
|
||||
@@ -36,40 +36,6 @@ export function canCompile(filename: string, altExts?: Array<string>) {
|
||||
|
||||
canCompile.EXTENSIONS = [".js", ".jsx", ".es6", ".es"];
|
||||
|
||||
/**
|
||||
* Module resolver that swallows errors.
|
||||
*/
|
||||
|
||||
export function resolve(loc: string) {
|
||||
try {
|
||||
return require.resolve(loc);
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
var relativeMod;
|
||||
|
||||
/**
|
||||
* Resolve a filename relative to the current working directory.
|
||||
*/
|
||||
|
||||
export function resolveRelative(loc: string) {
|
||||
// we're in the browser, probably
|
||||
if (typeof Module === "object") return null;
|
||||
|
||||
if (!relativeMod) {
|
||||
relativeMod = new Module;
|
||||
relativeMod.paths = Module._nodeModulePaths(process.cwd());
|
||||
}
|
||||
|
||||
try {
|
||||
return Module._resolveFilename(loc, relativeMod);
|
||||
} catch (err) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create an array from any value, splitting strings by ",".
|
||||
*/
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
var pathExists = require("path-exists");
|
||||
var util = require("../lib/util");
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
var _ = require("lodash");
|
||||
|
||||
var humanize = function (val, noext) {
|
||||
if (noext) val = path.basename(val, path.extname(val));
|
||||
return val.replace(/-/g, " ");
|
||||
};
|
||||
|
||||
var readFile = exports.readFile = function (filename) {
|
||||
if (pathExists.sync(filename)) {
|
||||
var file = fs.readFileSync(filename, "utf8").trim();
|
||||
file = file.replace(/\r\n/g, "\n");
|
||||
return file;
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
};
|
||||
|
||||
exports.assertVendor = function (name) {
|
||||
if (!pathExists.sync(__dirname + "/../../../vendor/" + name)) {
|
||||
console.error("No vendor/" + name + " - run `make bootstrap`");
|
||||
process.exit(1);
|
||||
}
|
||||
};
|
||||
|
||||
exports.get = function (entryName, entryLoc) {
|
||||
if (exports.cache[entryName]) return exports.cache[entryName];
|
||||
|
||||
var suites = [];
|
||||
var entryLoc = entryLoc || __dirname + "/fixtures/" + entryName;
|
||||
|
||||
_.each(fs.readdirSync(entryLoc), function (suiteName) {
|
||||
if (suiteName[0] === ".") return;
|
||||
|
||||
var suite = {
|
||||
options: {},
|
||||
tests: [],
|
||||
title: humanize(suiteName),
|
||||
filename: entryLoc + "/" + suiteName
|
||||
};
|
||||
suites.push(suite);
|
||||
|
||||
var suiteOptsLoc = util.resolve(suite.filename + "/options");
|
||||
if (suiteOptsLoc) suite.options = require(suiteOptsLoc);
|
||||
|
||||
if (fs.statSync(suite.filename).isFile()) {
|
||||
push(suiteName, suite.filename);
|
||||
} else {
|
||||
_.each(fs.readdirSync(suite.filename), function (taskName) {
|
||||
var taskDir = suite.filename + "/" + taskName;
|
||||
push(taskName, taskDir);
|
||||
});
|
||||
}
|
||||
|
||||
function push(taskName, taskDir) {
|
||||
// tracuer error tests
|
||||
if (taskName.indexOf("Error_") >= 0) return;
|
||||
|
||||
var actualLocAlias = suiteName + "/" + taskName + "/actual.js";
|
||||
var expectLocAlias = suiteName + "/" + taskName + "/expected.js";
|
||||
var execLocAlias = suiteName + "/" + taskName + "/exec.js";
|
||||
|
||||
var actualLoc = taskDir + "/actual.js";
|
||||
var expectLoc = taskDir + "/expected.js";
|
||||
var execLoc = taskDir + "/exec.js";
|
||||
|
||||
if (fs.statSync(taskDir).isFile()) {
|
||||
var ext = path.extname(taskDir);
|
||||
if (ext !== ".js" && ext !== ".module.js") return;
|
||||
|
||||
execLoc = taskDir;
|
||||
}
|
||||
|
||||
var taskOpts = _.merge({
|
||||
filenameRelative: expectLocAlias,
|
||||
sourceFileName: actualLocAlias,
|
||||
sourceMapName: expectLocAlias
|
||||
}, _.cloneDeep(suite.options));
|
||||
|
||||
var taskOptsLoc = util.resolve(taskDir + "/options");
|
||||
if (taskOptsLoc) _.merge(taskOpts, require(taskOptsLoc));
|
||||
|
||||
var test = {
|
||||
title: humanize(taskName, true),
|
||||
disabled: taskName[0] === ".",
|
||||
options: taskOpts,
|
||||
exec: {
|
||||
loc: execLoc,
|
||||
code: readFile(execLoc),
|
||||
filename: execLocAlias,
|
||||
},
|
||||
actual: {
|
||||
loc: actualLoc,
|
||||
code: readFile(actualLoc),
|
||||
filename: actualLocAlias,
|
||||
},
|
||||
expect: {
|
||||
loc: expectLoc,
|
||||
code: readFile(expectLoc),
|
||||
filename: expectLocAlias
|
||||
}
|
||||
};
|
||||
|
||||
// traceur checks
|
||||
|
||||
var shouldSkip = function (code) {
|
||||
return code.indexOf("// Error:") >= 0 || code.indexOf("// Skip.") >= 0;
|
||||
};
|
||||
|
||||
if (shouldSkip(test.actual.code) || shouldSkip(test.exec.code)) {
|
||||
return;
|
||||
} else if (test.exec.code.indexOf("// Async.") >= 0) {
|
||||
//test.options.asyncExec = true;
|
||||
return;
|
||||
}
|
||||
|
||||
suite.tests.push(test);
|
||||
|
||||
var sourceMappingsLoc = taskDir + "/source-mappings.json";
|
||||
if (pathExists.sync(sourceMappingsLoc)) {
|
||||
test.options.sourceMap = true;
|
||||
test.sourceMappings = require(sourceMappingsLoc);
|
||||
}
|
||||
|
||||
var sourceMap = taskDir + "/source-map.json";
|
||||
if (pathExists.sync(sourceMap)) {
|
||||
test.options.sourceMap = true;
|
||||
test.sourceMap = require(sourceMap);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return exports.cache[entryName] = suites;
|
||||
};
|
||||
|
||||
try {
|
||||
exports.cache = require("../tests.json");
|
||||
} catch (err) {
|
||||
if (err.code !== "MODULE_NOT_FOUND") throw err;
|
||||
|
||||
var cache = exports.cache = {};
|
||||
cache.transformation = exports.get("transformation");
|
||||
cache.generation = exports.get("generation");
|
||||
cache.esnext = exports.get("esnext");
|
||||
}
|
||||
@@ -1,15 +1,19 @@
|
||||
var transform = require("../lib/transformation");
|
||||
var buildExernalHelpers = require("../lib/tools/build-external-helpers");
|
||||
var getFixtures = require("mocha-fixtures");
|
||||
var transform = require("../lib/transformation");
|
||||
var sourceMap = require("source-map");
|
||||
var codeFrame = require("../lib/helpers/code-frame");
|
||||
var Module = require("module");
|
||||
var helper = require("./_helper");
|
||||
var assert = require("assert");
|
||||
var chai = require("chai");
|
||||
var path = require("path");
|
||||
var util = require("../lib/util");
|
||||
var _ = require("lodash");
|
||||
|
||||
exports.fixtures = getFixtures(__dirname + "/fixtures", function () {
|
||||
return require("../test-fixtures.json");
|
||||
});
|
||||
|
||||
require("../lib/polyfill");
|
||||
|
||||
eval(buildExernalHelpers());
|
||||
@@ -54,7 +58,8 @@ var run = function (task, done) {
|
||||
var getOpts = function (self) {
|
||||
return _.merge({
|
||||
suppressDeprecationMessages: true,
|
||||
filename: self.loc
|
||||
filename: self.loc,
|
||||
sourceMap: !!(task.sourceMappings || test.sourceMap)
|
||||
}, opts);
|
||||
};
|
||||
|
||||
@@ -115,13 +120,14 @@ var run = function (task, done) {
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = function (suiteOpts, taskOpts, dynamicOpts) {
|
||||
exports.run = function (name, suiteOpts, taskOpts, dynamicOpts) {
|
||||
suiteOpts = suiteOpts || {};
|
||||
taskOpts = taskOpts || {};
|
||||
|
||||
_.each(helper.get(suiteOpts.name, suiteOpts.loc), function (testSuite) {
|
||||
_.each(exports.fixtures[name], function (testSuite) {
|
||||
if (_.contains(suiteOpts.ignoreSuites, testSuite.title)) return;
|
||||
|
||||
suite(suiteOpts.name + "/" + testSuite.title, function () {
|
||||
suite(name + "/" + testSuite.title, function () {
|
||||
setup(function () {
|
||||
require("../register")(taskOpts);
|
||||
});
|
||||
|
||||
@@ -1,3 +1 @@
|
||||
require("./_transformation-helper")({
|
||||
name: "esnext"
|
||||
});
|
||||
require("./_transformation-helper").run("esnext");
|
||||
|
||||
1
packages/babel/test/fixtures/traceur
vendored
Symbolic link
1
packages/babel/test/fixtures/traceur
vendored
Symbolic link
@@ -0,0 +1 @@
|
||||
../../../../vendor/traceur/test/feature
|
||||
@@ -1,6 +1,6 @@
|
||||
var generate = require("../lib/generation");
|
||||
var fixtures = require("mocha-fixtures");
|
||||
var assert = require("assert");
|
||||
var helper = require("./_helper");
|
||||
var parse = require("../lib/helpers/parse");
|
||||
var chai = require("chai");
|
||||
var t = require("../lib/types");
|
||||
@@ -19,7 +19,7 @@ suite("generation", function () {
|
||||
});
|
||||
});
|
||||
|
||||
_.each(helper.get("generation"), function (testSuite) {
|
||||
_.each(require("./_transformation-helper").fixtures.generation, function (testSuite) {
|
||||
suite("generation/" + testSuite.title, function () {
|
||||
_.each(testSuite.tests, function (task) {
|
||||
test(task.title, !task.disabled && function () {
|
||||
|
||||
@@ -1,12 +1,7 @@
|
||||
require("./_helper").assertVendor("traceur");
|
||||
|
||||
var fs = require("fs");
|
||||
var _ = require("lodash");
|
||||
|
||||
require("./_transformation-helper")({
|
||||
name: "traceur",
|
||||
loc: __dirname + "/../../../vendor/traceur/test/feature",
|
||||
|
||||
require("./_transformation-helper").run("traceur", {
|
||||
ignoreSuites: [
|
||||
// weird environmental issue make these hard to test
|
||||
"Modules",
|
||||
@@ -69,6 +64,7 @@ require("./_transformation-helper")({
|
||||
|
||||
// TODO: investigate
|
||||
"Classes/ExtendStrange",
|
||||
"Math/fround.module",
|
||||
|
||||
// these are the responsibility of core-js
|
||||
"Spread/Type",
|
||||
|
||||
@@ -1,3 +1 @@
|
||||
require("./_transformation-helper")({
|
||||
name: "transformation"
|
||||
});
|
||||
require("./_transformation-helper").run("transformation");
|
||||
|
||||
Reference in New Issue
Block a user