Enable babel-register tests again (#7487)

This commit is contained in:
Daniel Tschinder 2018-03-05 10:47:00 +01:00 committed by GitHub
parent 653318b7e4
commit f43bf7fcd5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 98 additions and 72 deletions

View File

@ -0,0 +1,5 @@
{
"plugins": [
"@babel/transform-modules-commonjs"
]
}

View File

@ -1,4 +0,0 @@
/* eslint-disable */
module.exports = () => { 'use strict'; let error; try { const impossible_result = ''.toFixed(); } catch (e) { error = e; } return error.stack.toString().replace('\n', ''); }

View File

@ -28,13 +28,13 @@ function resetCache() {
process.env.BABEL_DISABLE_CACHE = oldBabelDisableCacheValue; process.env.BABEL_DISABLE_CACHE = oldBabelDisableCacheValue;
} }
describe.skip("@babel/register - caching", () => { describe("@babel/register - caching", () => {
describe("cache", () => { describe("cache", () => {
let load, get, save; let load, get, save;
beforeEach(() => { beforeEach(() => {
// Since lib/cache is a singleton we need to fully reload it // Since lib/cache is a singleton we need to fully reload it
delete require.cache[require.resolve("../lib/cache")]; jest.resetModuleRegistry();
const cache = require("../lib/cache"); const cache = require("../lib/cache");
load = cache.load; load = cache.load;

View File

@ -1,31 +1,46 @@
import sourceMapSupport from "source-map-support"; import fs from "fs";
const DATA_ES2015 = require.resolve("./__data__/es2015"); let currentHook;
const GEN_ERROR = require.resolve("./__data__/gen_error"); let currentOptions;
let sourceMapSupport = false;
describe.skip("@babel/register", function() { const registerFile = require.resolve("../lib/node");
const testFile = require.resolve("./__data__/es2015");
const testFileContent = fs.readFileSync(testFile);
jest.mock("pirates", () => {
return {
addHook(hook, opts) {
currentHook = hook;
currentOptions = opts;
return () => {
currentHook = null;
currentOptions = null;
};
},
};
});
jest.mock("source-map-support", () => {
return {
install() {
sourceMapSupport = true;
},
};
});
const defaultOptions = {
exts: [".js", ".jsx", ".es6", ".es", ".mjs"],
ignoreNodeModules: false,
};
describe("@babel/register", function() {
let babelRegister; let babelRegister;
let oldCompiler;
function setupRegister(config = {}) { function setupRegister(config = { babelrc: false }) {
babelRegister = require("../lib/node"); babelRegister = require(registerFile);
babelRegister.default( babelRegister.default(config);
Object.assign(
{
plugins: [
{
visitor: {
ImportDeclaration(path) {
path.remove();
},
},
},
],
babelrc: false,
},
config,
),
);
} }
function revertRegister() { function revertRegister() {
@ -35,69 +50,79 @@ describe.skip("@babel/register", function() {
} }
} }
beforeAll(() => {
const js = require("default-require-extensions/js");
oldCompiler = require.extensions[".js"];
require.extensions[".js"] = js;
sourceMapSupport.install({
emptyCacheBetweenOperations: true,
});
});
afterAll(() => {
require.extensions[".js"] = oldCompiler;
});
afterEach(() => { afterEach(() => {
revertRegister(); revertRegister();
delete require.cache[DATA_ES2015]; currentHook = null;
delete require.cache[GEN_ERROR]; currentOptions = null;
sourceMapSupport = false;
jest.resetModuleRegistry();
}); });
it("registers correctly", () => { test("registers hook correctly", () => {
setupRegister(); setupRegister();
expect(require(DATA_ES2015)).toBeTruthy(); expect(typeof currentHook).toBe("function");
expect(currentOptions).toEqual(defaultOptions);
}); });
it("reverts correctly", () => { test("unregisters hook correctly", () => {
setupRegister(); setupRegister();
expect(require(DATA_ES2015)).toBeTruthy();
delete require.cache[DATA_ES2015];
revertRegister(); revertRegister();
expect(() => { expect(currentHook).toBeNull();
require(DATA_ES2015); expect(currentOptions).toBeNull();
}).toThrow(SyntaxError);
}); });
it("does not install source map support if asked not to", () => { test("installs source map support by default", () => {
setupRegister();
currentHook("const a = 1;", testFile);
expect(sourceMapSupport).toBe(true);
});
test("installs source map support when requested", () => {
setupRegister({ setupRegister({
babelrc: false,
sourceMaps: true,
});
currentHook("const a = 1;", testFile);
expect(sourceMapSupport).toBe(true);
});
test("does not install source map support if asked not to", () => {
setupRegister({
babelrc: false,
sourceMaps: false, sourceMaps: false,
}); });
let gen_error; currentHook("const a = 1;", testFile);
expect((gen_error = require(GEN_ERROR))).toBeDefined();
expect(gen_error()).toEqual(/gen_error\.js:8:34/); expect(sourceMapSupport).toBe(false);
}); });
it("installs source map support by default", () => { test("hook transpiles with config", () => {
setupRegister();
let gen_error;
expect((gen_error = require(GEN_ERROR))).toBeDefined();
expect(gen_error()).toEqual(/gen_error\.js:2:86/);
});
it("installs source map support when requested", () => {
setupRegister({ setupRegister({
sourceMaps: "both", babelrc: false,
sourceMaps: false,
plugins: ["@babel/transform-modules-commonjs"],
}); });
let gen_error; const result = currentHook(testFileContent, testFile);
expect((gen_error = require(GEN_ERROR))).toBeDefined();
expect(gen_error()).toEqual(/gen_error\.js:2:86/); expect(result).toBe('"use strict";\n\nrequire("assert");');
});
test("hook transpiles with babelrc", () => {
setupRegister({
babelrc: true,
sourceMaps: false,
});
const result = currentHook(testFileContent, testFile);
expect(result).toBe('"use strict";\n\nrequire("assert");');
}); });
}); });