Skip to content
This repository was archived by the owner on Nov 25, 2025. It is now read-only.

Commit 2773bbb

Browse files
committed
chore(accounts/abi/bind): improve TestGetSenderNativeAssetCall
- Use hyperlink config in comment - Use constants when possible instead of variables - Use `require` to shorten test - Check errors returned - Use t.Cleanup instead of defer - Use `any` instead of `interface{}` like we're in Go 1.17 days!
1 parent 65b7b2f commit 2773bbb

File tree

1 file changed

+24
-28
lines changed

1 file changed

+24
-28
lines changed

accounts/abi/bind/bind_extra_test.go

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ import (
1818
"github.com/ava-labs/coreth/params"
1919
"github.com/ava-labs/libevm/common"
2020
"github.com/ava-labs/libevm/crypto"
21+
"github.com/stretchr/testify/require"
2122
)
2223

2324
// TestGetSenderNativeAssetCall checks that the NativeAssetCall proxies the
2425
// caller address This behavior is disabled on the network and is only to test
25-
// previous behavior. Note the test uses ApricotPhase2Config.
26+
// previous behavior. Note the test uses [params.TestApricotPhase2Config].
2627
func TestGetSenderNativeAssetCall(t *testing.T) {
2728
// pragma solidity >=0.8.0 <0.9.0;
2829
// contract GetSenderNativeAssetCall {
@@ -34,7 +35,7 @@ func TestGetSenderNativeAssetCall(t *testing.T) {
3435
// _sender = msg.sender;
3536
// }
3637
// }
37-
rawABI := `[
38+
const rawABI = `[
3839
{
3940
"inputs": [],
4041
"name": "getSender",
@@ -51,17 +52,17 @@ func TestGetSenderNativeAssetCall(t *testing.T) {
5152
}
5253
]`
5354
bytecode := common.FromHex(`6080604052348015600f57600080fd5b506101608061001f6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c806350c36a521461003b5780635e01eb5a14610045575b600080fd5b610043610063565b005b61004d6100a5565b60405161005a919061010f565b60405180910390f35b336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006100f9826100ce565b9050919050565b610109816100ee565b82525050565b60006020820190506101246000830184610100565b9291505056fea26469706673582212209023ce54f38e749b58f44e8da750354578080ce16df95037b7305ed7e480c36d64736f6c634300081b0033`)
54-
setSenderMethodName := "setSender"
55-
getSenderMethodName := "getSender"
55+
const setSenderMethodName = "setSender"
56+
const getSenderMethodName = "getSender"
5657

5758
parsedABI, err := abi.JSON(bytes.NewReader([]byte(rawABI)))
58-
if err != nil {
59-
t.Fatalf("Failed to parse ABI: %v", err)
60-
}
59+
require.NoError(t, err, "Failed to parse ABI")
6160

6261
// Generate a new random account and a funded simulator
63-
key, _ := crypto.GenerateKey()
64-
auth, _ := bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337))
62+
key, err := crypto.GenerateKey()
63+
require.NoError(t, err, "Failed to generate key")
64+
auth, err := bind.NewKeyedTransactorWithChainID(key, big.NewInt(1337))
65+
require.NoError(t, err, "Failed to create transactor")
6566
alloc := types.GenesisAlloc{auth.From: {Balance: big.NewInt(1000000000000000000)}}
6667
atApricotPhase2 := func(nodeConf *node.Config, ethConf *ethconfig.Config) {
6768
chainConfig := *params.TestApricotPhase2Config
@@ -73,13 +74,14 @@ func TestGetSenderNativeAssetCall(t *testing.T) {
7374
Backend: b,
7475
Client: b.Client(),
7576
}
76-
defer sim.Close()
77+
t.Cleanup(func() {
78+
err = sim.Close()
79+
require.NoError(t, err, "Failed to close simulator")
80+
})
7781

7882
// Deploy the get/setSender contract
7983
_, _, interactor, err := bind.DeployContract(auth, parsedABI, bytecode, sim)
80-
if err != nil {
81-
t.Fatalf("Failed to deploy interactor contract: %v", err)
82-
}
84+
require.NoError(t, err, "Failed to deploy interactor contract")
8385
sim.Commit(false)
8486

8587
// Setting NativeAssetCall in the transact opts will proxy the call through
@@ -91,21 +93,15 @@ func TestGetSenderNativeAssetCall(t *testing.T) {
9193
AssetAmount: big.NewInt(0),
9294
},
9395
}
94-
if _, err := interactor.Transact(opts, setSenderMethodName); err != nil {
95-
t.Fatalf("Failed to set sender: %v", err)
96-
}
96+
_, err = interactor.Transact(opts, setSenderMethodName)
97+
require.NoError(t, err, "Failed to set sender")
9798
sim.Commit(true)
9899

99-
var results []interface{}
100-
if err := interactor.Call(nil, &results, getSenderMethodName); err != nil {
101-
t.Fatalf("Failed to get sender: %v", err)
102-
}
103-
if len(results) != 1 {
104-
t.Fatalf("Expected one result, got %d", len(results))
105-
}
106-
if addr, ok := results[0].(common.Address); !ok {
107-
t.Fatalf("Expected address, got %T", results[0])
108-
} else if addr != auth.From {
109-
t.Fatalf("Address mismatch: have '%v'", addr)
110-
}
100+
var results []any
101+
err = interactor.Call(nil, &results, getSenderMethodName)
102+
require.NoError(t, err, "Failed to get sender")
103+
require.Len(t, results, 1)
104+
addr, ok := results[0].(common.Address)
105+
require.Truef(t, ok, "Expected %T, got %T", common.Address{}, results[0])
106+
require.Equal(t, addr, auth.From, "Address mismatch")
111107
}

0 commit comments

Comments
 (0)