Skip to content

Commit 8704f12

Browse files
committed
fix some of the failing tests
1 parent e94d14c commit 8704f12

File tree

4 files changed

+77
-5
lines changed

4 files changed

+77
-5
lines changed

cmd/evm/main.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ var (
147147
t8ntool.OutputBasedir,
148148
t8ntool.OutputAllocFlag,
149149
t8ntool.OutputBTFlag,
150-
t8ntool.OutputWitnessFlag,
151150
t8ntool.OutputResultFlag,
152151
t8ntool.OutputBodyFlag,
153152
t8ntool.InputAllocFlag,

core/genesis_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -308,7 +308,7 @@ func TestVerkleGenesisCommit(t *testing.T) {
308308
},
309309
}
310310

311-
expected := common.FromHex("018d20eebb130b5e2b796465fe36aafab650650729a92435aec071bf2386f080")
311+
expected := common.FromHex("19056b480530799a4fdaa9fd9407043b965a3a5c37b4d2a1a9a4f3395a327561")
312312
got := genesis.ToBlock().Root().Bytes()
313313
if !bytes.Equal(got, expected) {
314314
t.Fatalf("invalid genesis state root, expected %x, got %x", expected, got)

trie/bintrie/hashed_node.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ func (h HashedNode) InsertValuesAtStem(stem []byte, values [][]byte, resolver No
5353
return nil, fmt.Errorf("InsertValuesAtStem path generation error: %w", err)
5454
}
5555

56+
if resolver == nil {
57+
return nil, errors.New("InsertValuesAtStem resolve error: resolver is nil")
58+
}
59+
5660
// Step 2: Resolve the hashed node to get the actual node data
5761
data, err := resolver(path, common.Hash(h))
5862
if err != nil {
@@ -77,7 +81,7 @@ func (h HashedNode) toDot(parent string, path string) string {
7781
}
7882

7983
func (h HashedNode) CollectNodes([]byte, NodeFlushFn) error {
80-
return errors.New("collectNodes not implemented for hashed node")
84+
return nil
8185
}
8286

8387
func (h HashedNode) GetHeight() int {

trie/bintrie/hashed_node_test.go

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package bintrie
1818

1919
import (
20+
"bytes"
2021
"testing"
2122

2223
"github.com/ethereum/go-ethereum/common"
@@ -94,14 +95,82 @@ func TestHashedNodeInsertValuesAtStem(t *testing.T) {
9495
stem := make([]byte, StemSize)
9596
values := make([][]byte, StemNodeWidth)
9697

98+
// Test 1: nil resolver should return an error
9799
_, err := node.InsertValuesAtStem(stem, values, nil, 0)
98100
if err == nil {
99-
t.Fatal("Expected error for InsertValuesAtStem on HashedNode")
101+
t.Fatal("Expected error for InsertValuesAtStem on HashedNode with nil resolver")
100102
}
101103

102-
if err.Error() != "insertValuesAtStem not implemented for hashed node" {
104+
if err.Error() != "InsertValuesAtStem resolve error: resolver is nil" {
103105
t.Errorf("Unexpected error message: %v", err)
104106
}
107+
108+
// Test 2: mock resolver returning invalid data should return deserialization error
109+
mockResolver := func(path []byte, hash common.Hash) ([]byte, error) {
110+
// Return invalid/nonsense data that cannot be deserialized
111+
return []byte{0xff, 0xff, 0xff}, nil
112+
}
113+
114+
_, err = node.InsertValuesAtStem(stem, values, mockResolver, 0)
115+
if err == nil {
116+
t.Fatal("Expected error for InsertValuesAtStem on HashedNode with invalid resolver data")
117+
}
118+
119+
expectedPrefix := "InsertValuesAtStem node deserialization error:"
120+
if len(err.Error()) < len(expectedPrefix) || err.Error()[:len(expectedPrefix)] != expectedPrefix {
121+
t.Errorf("Expected deserialization error, got: %v", err)
122+
}
123+
124+
// Test 3: mock resolver returning valid serialized node should succeed
125+
stem = make([]byte, StemSize)
126+
stem[0] = 0xaa
127+
var originalValues [StemNodeWidth][]byte
128+
originalValues[0] = common.HexToHash("0x1111111111111111111111111111111111111111111111111111111111111111").Bytes()
129+
originalValues[1] = common.HexToHash("0x2222222222222222222222222222222222222222222222222222222222222222").Bytes()
130+
131+
originalNode := &StemNode{
132+
Stem: stem,
133+
Values: originalValues[:],
134+
depth: 0,
135+
}
136+
137+
// Serialize the node
138+
serialized := SerializeNode(originalNode)
139+
140+
// Create a mock resolver that returns the serialized node
141+
validResolver := func(path []byte, hash common.Hash) ([]byte, error) {
142+
return serialized, nil
143+
}
144+
145+
var newValues [StemNodeWidth][]byte
146+
newValues[2] = common.HexToHash("0x3333333333333333333333333333333333333333333333333333333333333333").Bytes()
147+
148+
resolvedNode, err := node.InsertValuesAtStem(stem, newValues[:], validResolver, 0)
149+
if err != nil {
150+
t.Fatalf("Expected successful resolution and insertion, got error: %v", err)
151+
}
152+
153+
resultStem, ok := resolvedNode.(*StemNode)
154+
if !ok {
155+
t.Fatalf("Expected resolved node to be *StemNode, got %T", resolvedNode)
156+
}
157+
158+
if !bytes.Equal(resultStem.Stem, stem) {
159+
t.Errorf("Stem mismatch: expected %x, got %x", stem, resultStem.Stem)
160+
}
161+
162+
// Verify the original values are preserved
163+
if !bytes.Equal(resultStem.Values[0], originalValues[0]) {
164+
t.Errorf("Original value at index 0 not preserved: expected %x, got %x", originalValues[0], resultStem.Values[0])
165+
}
166+
if !bytes.Equal(resultStem.Values[1], originalValues[1]) {
167+
t.Errorf("Original value at index 1 not preserved: expected %x, got %x", originalValues[1], resultStem.Values[1])
168+
}
169+
170+
// Verify the new value was inserted
171+
if !bytes.Equal(resultStem.Values[2], newValues[2]) {
172+
t.Errorf("New value at index 2 not inserted correctly: expected %x, got %x", newValues[2], resultStem.Values[2])
173+
}
105174
}
106175

107176
// TestHashedNodeToDot tests the toDot method for visualization

0 commit comments

Comments
 (0)