Skip to content

Commit ef336d7

Browse files
authored
Fix state leaking between test files (#2194)
1 parent 0458536 commit ef336d7

File tree

1 file changed

+12
-14
lines changed

1 file changed

+12
-14
lines changed

internal/test/test.go

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -214,10 +214,6 @@ func testCode(
214214
return network.Host, true
215215
}
216216

217-
runner := cdcTests.NewTestRunner().
218-
WithLogger(logger).
219-
WithNetworkResolver(resolveNetworkFromState)
220-
221217
// Configure fork mode if requested
222218
var effectiveForkHost string
223219

@@ -257,7 +253,6 @@ func testCode(
257253
ForkHeight: flags.ForkHeight,
258254
}
259255
forkCfg = &cfg
260-
runner = runner.WithFork(cfg)
261256

262257
// Map chain ID to a sensible network label if not provided explicitly
263258
if strings.TrimSpace(flags.Fork) == "" {
@@ -270,9 +265,6 @@ func testCode(
270265
}
271266
}
272267

273-
// Apply the network label on the base runner now that it is known
274-
runner = runner.WithNetworkLabel(networkLabel)
275-
276268
var coverageReport *runtime.CoverageReport
277269
if flags.Cover {
278270
coverageReport = state.CreateCoverageReport("testing")
@@ -287,16 +279,13 @@ func testCode(
287279
},
288280
)
289281
}
290-
runner = runner.WithCoverageReport(coverageReport)
291282
}
292283

293284
var seed int64
294285
if flags.Seed > 0 {
295286
seed = flags.Seed
296-
runner = runner.WithRandomSeed(seed)
297287
} else if flags.Random {
298288
seed = int64(rand.Intn(150000))
299-
runner = runner.WithRandomSeed(seed)
300289
}
301290

302291
testResults := make(map[string]cdcTests.Results, 0)
@@ -305,7 +294,12 @@ func testCode(
305294
// Set current test file for network resolution tracking
306295
currentTestFile = scriptPath
307296

308-
fileRunner := runner.
297+
// Create a new test runner per file to ensure complete isolation.
298+
// Each file gets its own runner with its own backend state.
299+
fileRunner := cdcTests.NewTestRunner().
300+
WithLogger(logger).
301+
WithNetworkResolver(resolveNetworkFromState).
302+
WithNetworkLabel(networkLabel).
309303
WithImportResolver(importResolver(scriptPath, state)).
310304
WithFileResolver(fileResolver(scriptPath, state)).
311305
WithContractAddressResolver(func(network string, contractName string) (common.Address, error) {
@@ -328,11 +322,15 @@ func testCode(
328322
return common.Address{}, fmt.Errorf("no address for contract %s on network %s", contractName, network)
329323
})
330324

331-
// Ensure the file runner has the correct network label and fork config
332-
fileRunner = fileRunner.WithNetworkLabel(networkLabel)
333325
if forkCfg != nil {
334326
fileRunner = fileRunner.WithFork(*forkCfg)
335327
}
328+
if coverageReport != nil {
329+
fileRunner = fileRunner.WithCoverageReport(coverageReport)
330+
}
331+
if seed > 0 {
332+
fileRunner = fileRunner.WithRandomSeed(seed)
333+
}
336334

337335
if flags.Name != "" {
338336
testFunctions, err := fileRunner.GetTests(string(code))

0 commit comments

Comments
 (0)