Don't mutate @babel/register options (#14107)

This commit is contained in:
Nicolò Ribaudo 2022-01-06 18:37:45 +01:00 committed by GitHub
parent ed3036d11c
commit d158a48945
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 57 additions and 2 deletions

View File

@ -5,7 +5,10 @@
const hook = require("./hook"); const hook = require("./hook");
const { LocalClient } = require("./worker-client"); 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, { module.exports = Object.assign(register, {
revert: hook.revert, revert: hook.revert,

View File

@ -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();
});
}); });
} }
@ -344,6 +370,32 @@ describe("@babel/register", function () {
expect(convertSourceMap).toMatch("/* transformed */"); 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 }; return { setupRegister, revertRegister };
} }
}); });