From c867bcd0aadd63473865f9a328459e0db3c89565 Mon Sep 17 00:00:00 2001 From: morluto <76467478+morluto@users.noreply.github.com> Date: Sat, 10 Oct 2026 02:21:54 +0800 Subject: [PATCH] test(javascript): share primitive expansion producer fixtures --- .../JavaScriptSemanticGraphBuilder.test.ts | 11 ++------- .../javascriptIntegrityPolicy.test.ts | 20 +++++----------- .../javascriptArtifactReconstruction.test.ts | 23 +++++-------------- .../fixtures/javascriptPrimitiveExpansion.ts | 21 +++++++++++++++++ 4 files changed, 35 insertions(+), 40 deletions(-) create mode 100644 tests/fixtures/javascriptPrimitiveExpansion.ts diff --git a/src/application/javascript/JavaScriptSemanticGraphBuilder.test.ts b/src/application/javascript/JavaScriptSemanticGraphBuilder.test.ts index 54ecec21ed..43d63a7d05 100644 --- a/src/application/javascript/JavaScriptSemanticGraphBuilder.test.ts +++ b/src/application/javascript/JavaScriptSemanticGraphBuilder.test.ts @@ -1,3 +1,4 @@ +import { primitiveByteExpansionSource } from "../../../tests/fixtures/javascriptPrimitiveExpansion.js"; import * as t from "@babel/types"; import { expect, it } from "vitest"; @@ -111,15 +112,7 @@ it("preserves primitive candidate budget unknowns in semantic graph coverage", ( }); it("preserves derived string-byte limit reasons in semantic graph unknowns", () => { - const declarations = ['const value0 = "x";']; - for (let index = 1; index <= 30; index += 1) { - const previous = `value${String(index - 1)}`; - declarations.push( - `const value${String(index)} = ${previous} + ${previous};`, - ); - } - declarations.push("const answer = value30;"); - const source = declarations.join("\n"); + const source = primitiveByteExpansionSource(); const ir = analyzeJavaScriptSemantics(source); const graph = graphFor(source, ir); diff --git a/tests/boundary/filesystem/javascriptIntegrityPolicy.test.ts b/tests/boundary/filesystem/javascriptIntegrityPolicy.test.ts index 7291d888e2..9fd482ec27 100644 --- a/tests/boundary/filesystem/javascriptIntegrityPolicy.test.ts +++ b/tests/boundary/filesystem/javascriptIntegrityPolicy.test.ts @@ -1,3 +1,7 @@ +import { + primitiveCandidateExpansionSource, + primitiveByteExpansionSource, +} from "../../fixtures/javascriptPrimitiveExpansion.js"; import { createHash } from "node:crypto"; import { mkdir, readFile, writeFile } from "node:fs/promises"; import { join } from "node:path"; @@ -102,21 +106,9 @@ it("keeps a contradicted nested ASAR opaque during JavaScript reconstruction", a }); it("retains semantic resource limits alongside recorded integrity contradictions", async () => { - const expression = Array.from( - { length: 20 }, - () => '(true ? "a" : "b")', - ).join(" + "); - const declarations = ['const value0 = "x";']; - for (let index = 1; index <= 30; index += 1) { - const previous = `value${String(index - 1)}`; - declarations.push( - `const value${String(index)} = ${previous} + ${previous};`, - ); - } - declarations.push("const answer = value30;"); const { archive } = await createStrippedAsarAddon([ - { path: "app.js", contents: `const answer = { nested: ${expression} };` }, - { path: "growth.js", contents: declarations.join("\n") }, + { path: "app.js", contents: primitiveCandidateExpansionSource() }, + { path: "growth.js", contents: primitiveByteExpansionSource() }, ]); const analyzed = await analyzeJavaScriptApplication({ input_path: archive, diff --git a/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts b/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts index 2775b0cb84..4bbc2eb367 100644 --- a/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts +++ b/tests/composition/javascript-applications/javascriptArtifactReconstruction.test.ts @@ -1,3 +1,7 @@ +import { + primitiveCandidateExpansionSource, + primitiveByteExpansionSource, +} from "../../fixtures/javascriptPrimitiveExpansion.js"; import { createHash } from "node:crypto"; import { mkdir, rm, writeFile } from "node:fs/promises"; import { join } from "node:path"; @@ -102,23 +106,8 @@ it("preserves graph commitments and export shapes when consuming file-local IR", it("reports semantic value resource limits in application graph coverage", async () => { const root = await createTestTempDirectory("rea-javascript-semantic-limit-"); - const expression = Array.from( - { length: 20 }, - () => '(true ? "a" : "b")', - ).join(" + "); - await writeFile( - join(root, "app.js"), - `const answer = { nested: ${expression} };`, - ); - const declarations = ['const value0 = "x";']; - for (let index = 1; index <= 30; index += 1) { - const previous = `value${String(index - 1)}`; - declarations.push( - `const value${String(index)} = ${previous} + ${previous};`, - ); - } - declarations.push("const answer = value30;"); - await writeFile(join(root, "growth.js"), declarations.join("\n")); + await writeFile(join(root, "app.js"), primitiveCandidateExpansionSource()); + await writeFile(join(root, "growth.js"), primitiveByteExpansionSource()); const snapshot = await scanCanonicalArtifactInventory(root, {}); const reader = createJavaScriptArtifactReader(root, "directory"); try { diff --git a/tests/fixtures/javascriptPrimitiveExpansion.ts b/tests/fixtures/javascriptPrimitiveExpansion.ts new file mode 100644 index 0000000000..1189dc9025 --- /dev/null +++ b/tests/fixtures/javascriptPrimitiveExpansion.ts @@ -0,0 +1,21 @@ +/** Source whose concatenated alternatives exceed primitive candidate storage. */ +export const primitiveCandidateExpansionSource = (): string => { + const expression = Array.from( + { length: 20 }, + () => '(true ? "a" : "b")', + ).join(" + "); + return `const answer = { nested: ${expression} };`; +}; + +/** Source whose repeated doubling exceeds derived primitive string storage. */ +export const primitiveByteExpansionSource = (): string => { + const declarations = ['const value0 = "x";']; + for (let index = 1; index <= 30; index += 1) { + const previous = `value${String(index - 1)}`; + declarations.push( + `const value${String(index)} = ${previous} + ${previous};`, + ); + } + declarations.push("const answer = value30;"); + return declarations.join("\n"); +};