107 lines
2.3 KiB
JavaScript

import sourceMapSupport from "source-map-support";
import chai from "chai";
const DATA_ES2015 = require.resolve("./__data__/es2015");
const GEN_ERROR = require.resolve("./__data__/gen_error");
describe("@babel/register", function() {
let babelRegister;
let oldCompiler;
function setupRegister(config = {}) {
babelRegister = require("../lib/node");
babelRegister.default(
Object.assign(
{
plugins: [
{
visitor: {
ImportDeclaration(path) {
path.remove();
},
},
},
],
babelrc: false,
},
config,
),
);
}
function revertRegister() {
if (babelRegister) {
babelRegister.revert();
babelRegister = null;
}
}
before(() => {
const js = require("default-require-extensions/js");
oldCompiler = require.extensions[".js"];
require.extensions[".js"] = js;
sourceMapSupport.install({
emptyCacheBetweenOperations: true,
});
});
after(() => {
require.extensions[".js"] = oldCompiler;
});
afterEach(() => {
revertRegister();
delete require.cache[DATA_ES2015];
delete require.cache[GEN_ERROR];
});
it("registers correctly", () => {
setupRegister();
chai.expect(require(DATA_ES2015)).to.be.ok;
});
it("reverts correctly", () => {
setupRegister();
chai.expect(require(DATA_ES2015)).to.be.ok;
delete require.cache[DATA_ES2015];
revertRegister();
chai
.expect(() => {
require(DATA_ES2015);
})
.to.throw(SyntaxError);
});
it("does not install source map support if asked not to", () => {
setupRegister({
sourceMaps: false,
});
let gen_error;
chai.expect((gen_error = require(GEN_ERROR))).to.be.ok;
chai.expect(gen_error()).to.match(/gen_error\.js:8:34/);
});
it("installs source map support by default", () => {
setupRegister();
let gen_error;
chai.expect((gen_error = require(GEN_ERROR))).to.be.ok;
chai.expect(gen_error()).to.match(/gen_error\.js:2:86/);
});
it("installs source map support when requested", () => {
setupRegister({
sourceMaps: "both",
});
let gen_error;
chai.expect((gen_error = require(GEN_ERROR))).to.be.ok;
chai.expect(gen_error()).to.match(/gen_error\.js:2:86/);
});
});