forked from cerc-io/plugeth
cmd/evm: output stateroot in statetest result (#26297)
This adds stateRoot as a field in the JSON output.
This commit is contained in:
parent
1f35988a00
commit
41306b0af3
@ -22,12 +22,12 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/ethereum/go-ethereum/common"
|
||||||
"github.com/ethereum/go-ethereum/core/state"
|
"github.com/ethereum/go-ethereum/core/state"
|
||||||
"github.com/ethereum/go-ethereum/core/vm"
|
"github.com/ethereum/go-ethereum/core/vm"
|
||||||
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
"github.com/ethereum/go-ethereum/eth/tracers/logger"
|
||||||
"github.com/ethereum/go-ethereum/log"
|
"github.com/ethereum/go-ethereum/log"
|
||||||
"github.com/ethereum/go-ethereum/tests"
|
"github.com/ethereum/go-ethereum/tests"
|
||||||
|
|
||||||
"github.com/urfave/cli/v2"
|
"github.com/urfave/cli/v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -41,11 +41,12 @@ var stateTestCommand = &cli.Command{
|
|||||||
// StatetestResult contains the execution status after running a state test, any
|
// StatetestResult contains the execution status after running a state test, any
|
||||||
// error that might have occurred and a dump of the final state if requested.
|
// error that might have occurred and a dump of the final state if requested.
|
||||||
type StatetestResult struct {
|
type StatetestResult struct {
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
Pass bool `json:"pass"`
|
Pass bool `json:"pass"`
|
||||||
Fork string `json:"fork"`
|
Root *common.Hash `json:"stateRoot,omitempty"`
|
||||||
Error string `json:"error,omitempty"`
|
Fork string `json:"fork"`
|
||||||
State *state.Dump `json:"state,omitempty"`
|
Error string `json:"error,omitempty"`
|
||||||
|
State *state.Dump `json:"state,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func stateTestCmd(ctx *cli.Context) error {
|
func stateTestCmd(ctx *cli.Context) error {
|
||||||
@ -100,8 +101,12 @@ func stateTestCmd(ctx *cli.Context) error {
|
|||||||
result := &StatetestResult{Name: key, Fork: st.Fork, Pass: true}
|
result := &StatetestResult{Name: key, Fork: st.Fork, Pass: true}
|
||||||
_, s, err := test.Run(st, cfg, false)
|
_, s, err := test.Run(st, cfg, false)
|
||||||
// print state root for evmlab tracing
|
// print state root for evmlab tracing
|
||||||
if ctx.Bool(MachineFlag.Name) && s != nil {
|
if s != nil {
|
||||||
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%x\"}\n", s.IntermediateRoot(false))
|
root := s.IntermediateRoot(false)
|
||||||
|
result.Root = &root
|
||||||
|
if ctx.Bool(MachineFlag.Name) {
|
||||||
|
fmt.Fprintf(os.Stderr, "{\"stateRoot\": \"%#x\"}\n", root)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// Test failed, mark as so and dump any state to aid debugging
|
// Test failed, mark as so and dump any state to aid debugging
|
||||||
|
Loading…
Reference in New Issue
Block a user