diff --git a/internal/test/test.go b/internal/test/test.go index 2bdebe4a7..12108360b 100644 --- a/internal/test/test.go +++ b/internal/test/test.go @@ -214,10 +214,6 @@ func testCode( return network.Host, true } - runner := cdcTests.NewTestRunner(). - WithLogger(logger). - WithNetworkResolver(resolveNetworkFromState) - // Configure fork mode if requested var effectiveForkHost string @@ -257,7 +253,6 @@ func testCode( ForkHeight: flags.ForkHeight, } forkCfg = &cfg - runner = runner.WithFork(cfg) // Map chain ID to a sensible network label if not provided explicitly if strings.TrimSpace(flags.Fork) == "" { @@ -270,9 +265,6 @@ func testCode( } } - // Apply the network label on the base runner now that it is known - runner = runner.WithNetworkLabel(networkLabel) - var coverageReport *runtime.CoverageReport if flags.Cover { coverageReport = state.CreateCoverageReport("testing") @@ -287,16 +279,13 @@ func testCode( }, ) } - runner = runner.WithCoverageReport(coverageReport) } var seed int64 if flags.Seed > 0 { seed = flags.Seed - runner = runner.WithRandomSeed(seed) } else if flags.Random { seed = int64(rand.Intn(150000)) - runner = runner.WithRandomSeed(seed) } testResults := make(map[string]cdcTests.Results, 0) @@ -305,7 +294,12 @@ func testCode( // Set current test file for network resolution tracking currentTestFile = scriptPath - fileRunner := runner. + // Create a new test runner per file to ensure complete isolation. + // Each file gets its own runner with its own backend state. + fileRunner := cdcTests.NewTestRunner(). + WithLogger(logger). + WithNetworkResolver(resolveNetworkFromState). + WithNetworkLabel(networkLabel). WithImportResolver(importResolver(scriptPath, state)). WithFileResolver(fileResolver(scriptPath, state)). WithContractAddressResolver(func(network string, contractName string) (common.Address, error) { @@ -328,11 +322,15 @@ func testCode( return common.Address{}, fmt.Errorf("no address for contract %s on network %s", contractName, network) }) - // Ensure the file runner has the correct network label and fork config - fileRunner = fileRunner.WithNetworkLabel(networkLabel) if forkCfg != nil { fileRunner = fileRunner.WithFork(*forkCfg) } + if coverageReport != nil { + fileRunner = fileRunner.WithCoverageReport(coverageReport) + } + if seed > 0 { + fileRunner = fileRunner.WithRandomSeed(seed) + } if flags.Name != "" { testFunctions, err := fileRunner.GetTests(string(code))