mirror of
https://github.com/morluto/rea.git
synced 2026-11-09 08:17:02 +00:00
fix(javascript): recognize unchanged var and let Electron aliases
This commit is contained in:
1 parent
e4a8e0b728
commit
0d2082d36b
2 files changed
+67
-3
No files matched your search
@@ -116,6 +116,18 @@ describe("static Electron application analysis", () => {
|
||||
expect(handledChannels.sort()).toEqual(["rea:read", "rea:write"]);
|
||||
});
|
||||
|
||||
it("maps unchanged var and let require aliases while excluding reassigned bindings", async () => {
|
||||
const root = await requireAliasFixtureDirectory();
|
||||
|
||||
const result = await reconstructJavaScriptArtifact({ input_path: root });
|
||||
|
||||
expect(result.electron_summary.ipc).toMatchObject({
|
||||
main_handlers: 2,
|
||||
paired_renderer_transmissions: 2,
|
||||
unpaired_literal_renderer_transmissions: 0,
|
||||
});
|
||||
});
|
||||
|
||||
it("returns a tagged cancellation without executing application code", async () => {
|
||||
const root = await fixtureDirectory();
|
||||
const controller = new AbortController();
|
||||
@@ -326,6 +338,50 @@ const fixtureDirectory = async (): Promise<string> => {
|
||||
return root;
|
||||
};
|
||||
|
||||
const requireAliasFixtureDirectory = async (): Promise<string> => {
|
||||
const root = await createTestTempDirectory("rea-electron-require-aliases-");
|
||||
await Promise.all([
|
||||
writeFile(
|
||||
join(root, "package.json"),
|
||||
JSON.stringify({
|
||||
name: "rea-electron-require-aliases",
|
||||
main: "main.cjs",
|
||||
}),
|
||||
),
|
||||
writeFile(
|
||||
join(root, "main.cjs"),
|
||||
String.raw`
|
||||
var { ipcMain: main } = require("electron");
|
||||
let listener = require("electron/main").ipcMain;
|
||||
main.handle("rea:read", async () => "value");
|
||||
listener.on("rea:write", () => undefined);
|
||||
|
||||
let replaced = require("electron").ipcMain;
|
||||
replaced = { handle() {} };
|
||||
replaced.handle("rea:reassigned", () => undefined);
|
||||
|
||||
var assignedLater;
|
||||
assignedLater.handle("rea:before-assignment", () => undefined);
|
||||
assignedLater = require("electron").ipcMain;
|
||||
|
||||
if (globalThis.registerIpc) {
|
||||
var conditional = require("electron").ipcMain;
|
||||
}
|
||||
conditional.handle("rea:conditional", () => undefined);
|
||||
`,
|
||||
),
|
||||
writeFile(
|
||||
join(root, "preload.cjs"),
|
||||
String.raw`
|
||||
const { ipcRenderer } = require("electron");
|
||||
ipcRenderer.invoke("rea:read");
|
||||
ipcRenderer.send("rea:write", "value");
|
||||
`,
|
||||
),
|
||||
]);
|
||||
return root;
|
||||
};
|
||||
|
||||
const renamedBindingFixtureDirectory = async (): Promise<string> => {
|
||||
const root = await createTestTempDirectory("rea-electron-renamed-");
|
||||
await Promise.all([
|
||||
|
||||
Reference in new issue
Block a user