From c86c5f3388ee02c2d13cb9bf09699aaacd014900 Mon Sep 17 00:00:00 2001 From: MariusVanDerWijden Date: Wed, 15 Oct 2025 14:21:50 +0200 Subject: [PATCH] cmd/evm: remove superflous result struct (again) --- cmd/evm/blockrunner.go | 52 +++++++++++------------------------------- cmd/evm/main.go | 5 ++++ 2 files changed, 18 insertions(+), 39 deletions(-) diff --git a/cmd/evm/blockrunner.go b/cmd/evm/blockrunner.go index df37d34f31..305a370a62 100644 --- a/cmd/evm/blockrunner.go +++ b/cmd/evm/blockrunner.go @@ -28,6 +28,7 @@ import ( "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/core" "github.com/ethereum/go-ethereum/core/rawdb" + "github.com/ethereum/go-ethereum/log" "github.com/ethereum/go-ethereum/tests" "github.com/urfave/cli/v2" ) @@ -42,6 +43,7 @@ var blockTestCommand = &cli.Command{ HumanReadableFlag, RunFlag, WitnessCrossCheckFlag, + FuzzFlag, }, traceFlags), } @@ -75,46 +77,14 @@ func blockTestCmd(ctx *cli.Context) error { if err != nil { return err } - report(ctx, results) + // During fuzzing, we report the result after every block + if !ctx.IsSet(FuzzFlag.Name) { + report(ctx, results) + } } return nil } -// traceEndMarker represents the final status of a blocktest when tracing is enabled. -// It is written as the last line of trace output in JSONL format to signal completion. -type traceEndMarker struct { - TestEnd traceEndDetails `json:"testEnd"` -} - -type traceEndDetails struct { - Name string `json:"name"` - Pass bool `json:"pass"` - Fork string `json:"fork"` - Root string `json:"root,omitempty"` - Error string `json:"error,omitempty"` -} - -// writeTraceEndMarker writes a blocktest end marker to stderr in JSONL format. -// This provides a clear delimiter for trace parsers (e.g., goevmlab) to know when -// the trace output for a specific test is complete, enabling proper batched processing. -func writeTraceEndMarker(name string, pass bool, fork string, root *common.Hash, errMsg string) { - details := traceEndDetails{ - Name: name, - Pass: pass, - Fork: fork, - } - if root != nil { - details.Root = root.Hex() - } - if !pass && errMsg != "" { - details.Error = errMsg - } - marker := traceEndMarker{TestEnd: details} - if data, err := json.Marshal(marker); err == nil { - fmt.Fprintf(os.Stderr, "%s\n", data) - } -} - func runBlockTest(ctx *cli.Context, fname string) ([]testResult, error) { src, err := os.ReadFile(fname) if err != nil { @@ -130,6 +100,11 @@ func runBlockTest(ctx *cli.Context, fname string) ([]testResult, error) { } tracer := tracerFromFlags(ctx) + // Suppress INFO logs during fuzzing + if ctx.IsSet(FuzzFlag.Name) { + log.SetDefault(log.NewLogger(log.DiscardHandler())) + } + // Pull out keys to sort and ensure tests are run in order. keys := slices.Sorted(maps.Keys(tests)) @@ -165,10 +140,9 @@ func runBlockTest(ctx *cli.Context, fname string) ([]testResult, error) { } // When tracing, write end marker to delimit trace output for this test - if tracer != nil { - writeTraceEndMarker(result.Name, result.Pass, result.Fork, finalRoot, result.Error) + if ctx.IsSet(FuzzFlag.Name) { + report(ctx, []testResult{*result}) } - results = append(results, *result) } return results, nil diff --git a/cmd/evm/main.go b/cmd/evm/main.go index bf5be9a359..84dca16bff 100644 --- a/cmd/evm/main.go +++ b/cmd/evm/main.go @@ -55,6 +55,11 @@ var ( Usage: "benchmark the execution", Category: flags.VMCategory, } + FuzzFlag = &cli.BoolFlag{ + Name: "fuzz", + Usage: "adepts output format for fuzzing", + Category: flags.VMCategory, + } WitnessCrossCheckFlag = &cli.BoolFlag{ Name: "cross-check", Aliases: []string{"xc"},