Skip to content

Commit

Permalink
Don't mutate @babel/register options (#14107)
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolo-ribaudo committed Jan 6, 2022
1 parent ed3036d commit d158a48
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 2 deletions.
5 changes: 4 additions & 1 deletion packages/babel-register/src/node.js
Expand Up @@ -5,7 +5,10 @@
const hook = require("./hook");
const { LocalClient } = require("./worker-client");

const register = hook.register.bind(null, new LocalClient());
const client = new LocalClient();
function register(opts = {}) {
return hook.register(client, { ...opts });
}

module.exports = Object.assign(register, {
revert: hook.revert,
Expand Down
54 changes: 53 additions & 1 deletion packages/babel-register/test/index.js
Expand Up @@ -118,7 +118,33 @@ describe("@babel/register", function () {
});
}

buildTests(require.resolve(".."));
const { setupRegister } = buildTests(require.resolve(".."));

it("does not mutate options", () => {
const proxyHandler = {
defineProperty: jest.fn(Reflect.defineProperty),
deleteProperty: jest.fn(Reflect.deleteProperty),
set: jest.fn(Reflect.set),
};

setupRegister(
new Proxy(
{
babelrc: true,
sourceMaps: false,
cwd: path.dirname(testFileMjs),
extensions: [".js"],
},
proxyHandler,
),
);

currentHook(testFileContent, testFile);

expect(proxyHandler.defineProperty).not.toHaveBeenCalled();
expect(proxyHandler.deleteProperty).not.toHaveBeenCalled();
expect(proxyHandler.set).not.toHaveBeenCalled();
});
});
}

Expand Down Expand Up @@ -344,6 +370,32 @@ describe("@babel/register", function () {
expect(convertSourceMap).toMatch("/* transformed */");
});

test("does not mutate options", () => {
const proxyHandler = {
defineProperty: jest.fn(Reflect.defineProperty),
deleteProperty: jest.fn(Reflect.deleteProperty),
set: jest.fn(Reflect.set),
};

setupRegister(
new Proxy(
{
babelrc: true,
sourceMaps: false,
cwd: path.dirname(testFileMjs),
extensions: [".js"],
},
proxyHandler,
),
);

currentHook(testFileContent, testFile);

expect(proxyHandler.defineProperty).not.toHaveBeenCalled();
expect(proxyHandler.deleteProperty).not.toHaveBeenCalled();
expect(proxyHandler.set).not.toHaveBeenCalled();
});

return { setupRegister, revertRegister };
}
});
Expand Down

0 comments on commit d158a48

Please sign in to comment.