mirror of
https://github.com/priyanshujain/sanderling.git
synced 2026-10-04 20:17:09 +00:00
fix(spec): read the injected seed per call
Binding it at module scope bound it to whenever the module was first imported, so a test file that imported the runtime before setting SANDERLING_SEED froze the seed at zero for every file after it. The bundler still replaces the expression with a literal.
This commit is contained in:
1 parent
a5d358e24e
commit
bf3f230b1b
1 file changed
+8
-2
@@ -70,7 +70,13 @@ function seedBigInt(): bigint {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const SEED_HI = seedBigInt();
|
// Read on every call rather than once at module scope. The bundler replaces the
|
||||||
|
// seed expression with a literal, so production reads a constant either way,
|
||||||
|
// and parsing one decimal string per run costs nothing. Binding it at module
|
||||||
|
// scope bound it instead to whenever this module was first imported, which made
|
||||||
|
// the seed depend on test file ordering: a file importing this module before
|
||||||
|
// the seed was set froze it at zero, and the failure then surfaced in a
|
||||||
|
// different file that had set it correctly.
|
||||||
|
|
||||||
function noopFormula(): unknown {
|
function noopFormula(): unknown {
|
||||||
const formula: Record<string, unknown> = { __sanderlingFormula: true };
|
const formula: Record<string, unknown> = { __sanderlingFormula: true };
|
||||||
@@ -553,7 +559,7 @@ function resetTargetCache(): void {
|
|||||||
|
|
||||||
const host: Host = {
|
const host: Host = {
|
||||||
platform: () => "web",
|
platform: () => "web",
|
||||||
seedHi: () => SEED_HI,
|
seedHi: () => seedBigInt(),
|
||||||
// lo = 0 matches the goja side's rand.NewPCG(seed, 0).
|
// lo = 0 matches the goja side's rand.NewPCG(seed, 0).
|
||||||
seedLo: () => 0n,
|
seedLo: () => 0n,
|
||||||
queryTargets(): TargetElement[] {
|
queryTargets(): TargetElement[] {
|
||||||
|
|||||||
Reference in new issue
Block a user