ethclient: fix error handling for header test (#22514)
The wantErr field was disused, and the error returned by HeaderByNumber was not properly tested. This simplifies the error checking using errors.Is and asserts that getting an expected missing header returns ethereum.NotFound. Also adds a nil check condition for header.Number before using big.Int's Sign method.
This commit is contained in:
@ -288,8 +288,9 @@ func testHeader(t *testing.T, chain []*types.Block, client *rpc.Client) {
|
|||||||
want: chain[1].Header(),
|
want: chain[1].Header(),
|
||||||
},
|
},
|
||||||
"future_block": {
|
"future_block": {
|
||||||
block: big.NewInt(1000000000),
|
block: big.NewInt(1000000000),
|
||||||
want: nil,
|
want: nil,
|
||||||
|
wantErr: ethereum.NotFound,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for name, tt := range tests {
|
for name, tt := range tests {
|
||||||
@ -299,10 +300,10 @@ func testHeader(t *testing.T, chain []*types.Block, client *rpc.Client) {
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
|
|
||||||
got, err := ec.HeaderByNumber(ctx, tt.block)
|
got, err := ec.HeaderByNumber(ctx, tt.block)
|
||||||
if tt.wantErr != nil && (err == nil || err.Error() != tt.wantErr.Error()) {
|
if !errors.Is(err, tt.wantErr) {
|
||||||
t.Fatalf("HeaderByNumber(%v) error = %q, want %q", tt.block, err, tt.wantErr)
|
t.Fatalf("HeaderByNumber(%v) error = %q, want %q", tt.block, err, tt.wantErr)
|
||||||
}
|
}
|
||||||
if got != nil && got.Number.Sign() == 0 {
|
if got != nil && got.Number != nil && got.Number.Sign() == 0 {
|
||||||
got.Number = big.NewInt(0) // hack to make DeepEqual work
|
got.Number = big.NewInt(0) // hack to make DeepEqual work
|
||||||
}
|
}
|
||||||
if !reflect.DeepEqual(got, tt.want) {
|
if !reflect.DeepEqual(got, tt.want) {
|
||||||
|
Reference in New Issue
Block a user