mirror of
https://github.com/ksyasuda/SubMiner.git
synced 2026-09-11 05:16:27 -07:00
test: clone VM results across Electron boundaries
- Clone tokenizer VM results into the host realm - Expect null-prototype profile maps in IPC validation tests
This commit is contained in:
@@ -1037,7 +1037,13 @@ test('registerIpcHandlers accepts per-controller profile config updates', async
|
||||
},
|
||||
};
|
||||
await saveHandler({}, update);
|
||||
assert.deepEqual(controllerSaves, [update]);
|
||||
assert.deepEqual(controllerSaves, [
|
||||
{
|
||||
...update,
|
||||
// Validation uses a null prototype to safely store arbitrary profile IDs.
|
||||
profiles: { __proto__: null, ...update.profiles },
|
||||
},
|
||||
]);
|
||||
|
||||
await assert.rejects(async () => {
|
||||
await saveHandler(
|
||||
|
||||
@@ -396,7 +396,8 @@ function createInjectedScriptVm(store: ReplayMessageStore): (script: string) =>
|
||||
Set,
|
||||
String,
|
||||
});
|
||||
return async (script: string) => await vm.runInContext(script, context);
|
||||
// Clone results into the host realm, matching Electron's process boundary.
|
||||
return async (script: string) => structuredClone(await vm.runInContext(script, context));
|
||||
}
|
||||
|
||||
export function createReplayTokenizerDeps(fixture: GoldenFixture): TokenizerServiceDeps {
|
||||
|
||||
@@ -64,7 +64,8 @@ export async function runInjectedYomitanScript(
|
||||
script: string,
|
||||
handler: (action: string, params: unknown) => unknown,
|
||||
): Promise<unknown> {
|
||||
return await vm.runInNewContext(script, createYomitanScriptSandbox(handler));
|
||||
// Clone results into the host realm, matching Electron's process boundary.
|
||||
return structuredClone(await vm.runInNewContext(script, createYomitanScriptSandbox(handler)));
|
||||
}
|
||||
|
||||
// Persistent page context shared across executeJavaScript calls, matching the
|
||||
@@ -75,7 +76,8 @@ function createPersistentYomitanScriptRunner(
|
||||
handler: (action: string, params: unknown) => unknown,
|
||||
): (script: string) => Promise<unknown> {
|
||||
const context = vm.createContext(createYomitanScriptSandbox(handler));
|
||||
return async (script: string) => await vm.runInContext(script, context);
|
||||
// Clone results into the host realm, matching Electron's process boundary.
|
||||
return async (script: string) => structuredClone(await vm.runInContext(script, context));
|
||||
}
|
||||
|
||||
// Deps whose parser window executes every injected script (profile metadata,
|
||||
|
||||
Reference in New Issue
Block a user