Files
reverse-engineering-anything/tests/boundary/filesystem/referenceSourceLoaderConstructors.test.ts
T
morlutoandShuaixinHuang b46f4fcebd fix(javascript): preserve loader authority for exact suffixes (#9477)
* fix(javascript): require exact loader suffix case

* fix(javascript): share exact loader mode across import resolution

* test(process): align symlink fixture with filesystem checkpoints

* test(javascript): normalize the module resolution oracle path separators

* test(frida): assert the CLI spawn Evidence contract

* test(mcp): use an unsupported analysis-view parent

* test(browser): separate source-location line bounds from parity

* fix(javascript): preserve uncertain loader provenance

* test(javascript): cover uncertain require resolution

* fix(javascript): retain conditional Electron evidence

* fix(javascript): preserve timed semantic provenance

* fix(javascript): retain conditional builtin effects

* test(javascript): distinguish bundled host authority

* fix(javascript): preserve nested loader invocation identity

* test(javascript): qualify Electron fixture authority

* fix(javascript): preserve loader invocation authority

* fix(javascript): respect source order for resolver escapes

* fix(javascript): check nested loader callable mutations

* fix(javascript): retain conditional constructor requests

* fix(reference): retain constructor loader relationships

* fix(reference): follow nested loader callable paths

* refactor(javascript): share callable mutation interpretation

* fix(javascript): require exact package loader suffixes

* refactor(javascript): unify conditional relation evidence

* refactor(javascript): unify conditional node evidence

* fix(javascript): retain unknown authority for mixed case sources

* fix(javascript): preserve loader uncertainty for dotfiles

* fix(reference): classify javascript suffix dotfiles

* test(reference): cover suffix dotfiles through cli

* fix(javascript): retain equivalent conditional built-in origins

* fix(javascript): preserve wrapped resolver operation

* fix(javascript): retain nested conditional built-in receivers

* test(javascript): declare CommonJS in native addon fixtures

* fix(javascript): retain wrapped resolver candidates

* style: format merged native command schema

* fix(javascript): preserve uncertain loader authority

* test(javascript): require candidate preload evidence

* test(javascript): cover reference loader member writes

---------

Co-authored-by: ShuaixinHuang <1836656514@qq.com>
2026-11-09 13:21:24 +08:00

162 lines
4.8 KiB
TypeScript

import { writeFile } from "node:fs/promises";
import { join } from "node:path";
import { expect, it } from "vitest";
import { createTestTempDirectory } from "../../fixtures/temporaryDirectory.js";
import { importReferenceSource } from "../../support/referenceSourceResourceScope.js";
it("retains constructor loader requests without inventing host authority", async () => {
const root = await createTestTempDirectory("rea-reference-loader-new-");
await Promise.all([
writeFile(
join(root, ".MJS"),
'import {join} from "node:path"; require("./dep.cjs");',
),
writeFile(
join(root, ".TS"),
'import {join} from "node:path"; require("./dep.cjs");',
),
writeFile(
join(root, "child-call.cjs"),
'require.call.extra=1; require.call(null,"./dep.cjs");',
),
writeFile(
join(root, "child-apply.cjs"),
'require.apply.extra=1; require.apply(null,["./dep.cjs"]);',
),
writeFile(
join(root, "child-resolve.cjs"),
'require.resolve.extra=1; require.resolve("./dep.cjs");',
),
writeFile(join(root, "direct.cjs"), 'new require("./dep.cjs");'),
writeFile(join(root, "wrapped.cts"), 'new (require as any)("./dep.cjs");'),
writeFile(join(root, "wrapped-call.cts"), '(require as any)("./dep.cjs");'),
writeFile(
join(root, "alias-direct.cjs"),
'const box={load:require};box.load("./dep.cjs");',
),
writeFile(
join(root, "alias-direct-replaced.cjs"),
'const box={load:require};box.load=()=>0;box.load("./dep.cjs");',
),
writeFile(
join(root, "alias-direct-deferred.cjs"),
'const box={load:require};function replace(){box.load=()=>0} replace();box.load("./dep.cjs");',
),
writeFile(
join(root, "nested-call.cjs"),
'const box={load:require};box.load.call(null,"./dep.cjs");',
),
writeFile(
join(root, "nested-mutated.cjs"),
'const box={load:require};box.load.call=()=>0;box.load.call(null,"./dep.cjs");',
),
writeFile(
join(root, "nested-parent.cjs"),
'const box={load:require};box.load=()=>0;box.load.call(null,"./dep.cjs");',
),
writeFile(
join(root, "nested-child.cjs"),
'const box={load:require};box.load.call.extra=1;box.load.call(null,"./dep.cjs");',
),
writeFile(
join(root, "nested-apply.cjs"),
'const box={load:require};box.load.apply(null,["./dep.cjs"]);',
),
writeFile(
join(root, "nested-unknown.MJS"),
'const box={load:require};box.load.call(null,"./dep.cjs");',
),
writeFile(
join(root, "wrapped-receiver.TS"),
'(require as any).resolve("./dep.cjs");',
),
writeFile(
join(root, "wrapped-resolve.cts"),
'(require as any).resolve("./dep.cjs");',
),
writeFile(
join(root, "wrapped-mutated.cts"),
'require.call=()=>0; (require.call as any)(null,"./dep.cjs");',
),
writeFile(
join(root, "alias.MJS"),
'const load=require; new load("./dep.cjs");',
),
writeFile(
join(root, "shadow.MJS"),
'const require=function() {}; new require("./dep.cjs");',
),
writeFile(join(root, "dep.cjs"), "module.exports = {};"),
]);
const result = await importReferenceSource({
root,
caller: "reference-loader-constructor-test",
policy: { secretPatterns: [] },
});
if (!result.ok) throw result.error;
expect(result.value.parse_failures).toEqual([]);
expect(result.value.entries).toEqual(
expect.arrayContaining([
expect.objectContaining({
path: ".MJS",
language: "JavaScript",
classifications: ["source"],
}),
expect.objectContaining({
path: ".TS",
language: "TypeScript",
classifications: ["source"],
}),
]),
);
for (const from_path of [
"direct.cjs",
"child-call.cjs",
"child-apply.cjs",
"child-resolve.cjs",
"wrapped.cts",
"wrapped-call.cts",
"nested-call.cjs",
"alias-direct.cjs",
"nested-child.cjs",
"nested-apply.cjs",
"wrapped-resolve.cts",
]) {
expect(result.value.relationships).toContainEqual({
from_path,
to: "dep.cjs",
kind: "requires",
resolution: "internal",
parse_state: "parsed",
});
}
for (const from_path of [
"nested-unknown.MJS",
"alias.MJS",
".MJS",
".TS",
"wrapped-receiver.TS",
"alias-direct-replaced.cjs",
"alias-direct-deferred.cjs",
]) {
expect(result.value.relationships).toContainEqual({
from_path,
to: "./dep.cjs",
kind: "requires",
resolution: "unknown",
parse_state: "partial",
});
}
expect(
result.value.relationships.some(({ from_path }) =>
[
"shadow.MJS",
"wrapped-mutated.cts",
"nested-mutated.cjs",
"nested-parent.cjs",
].includes(from_path),
),
).toBe(false);
});