Documentation ¶
Overview ¶
The ethtest package provides helpers for testing Ethereum smart contracts.
The ethtest package provides helpers for testing Ethereum smart contracts.
Index ¶
- Constants
- Variables
- func Comparers(extra ...cmp.Option) []cmp.Option
- func ExecutionErrData(err error) (interface{}, bool)
- func LogGas(tb testing.TB, tx *types.Transaction, prefix string)
- type MockedEntity
- type SimulatedBackend
- func (sb *SimulatedBackend) Acc(account int) *bind.TransactOpts
- func (sb *SimulatedBackend) Addr(account int) common.Address
- func (sb *SimulatedBackend) AsMockedEntity(mock MockedEntity, fn func(*bind.TransactOpts) error) error
- func (sb *SimulatedBackend) BalanceOf(ctx context.Context, tb testing.TB, addr common.Address) *big.Int
- func (sb *SimulatedBackend) BlockNumber() *big.Int
- func (sb *SimulatedBackend) CallFrom(account int) *bind.CallOpts
- func (sb *SimulatedBackend) FastForward(blockNumber *big.Int) bool
- func (sb *SimulatedBackend) GasSpent(ctx context.Context, tb testing.TB, tx *types.Transaction) *big.Int
- func (sb *SimulatedBackend) Must(tb testing.TB, descFormat string, descArgs ...interface{}) func(*types.Transaction, error) *types.Transaction
- func (sb *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
- func (sb *SimulatedBackend) WithValueFrom(account int, value *big.Int) *bind.TransactOpts
Constants ¶
const ( OpenSea = MockedEntity("OpenSea") Chainlink = MockedEntity("Chainlink") Ethier = MockedEntity("Ethier") )
Mocked entities.
Variables ¶
var GasPrice uint64 = 200
GasPrice is the assumed gas price, in GWei, when logging transaction costs.
Functions ¶
func Comparers ¶
Comparers returns `extra`, appended with common comparison Options for cmp.Diff(); e.g. for big.Int,
func ExecutionErrData ¶
ExecutionErrData checks if err is both an rpc.Error and rpc.DataError, and returns err.ErrorData() iff err.ErrorCode()==3 (i.e. an Execution error under the JSON RPC error codes IP).
Types ¶
type MockedEntity ¶ added in v0.12.0
type MockedEntity string
A MockedEntity mocks a real-world entity such as Uniswap or Opensea with deterministically generated accounts (and therefore contract addresses).
type SimulatedBackend ¶
type SimulatedBackend struct { *backends.SimulatedBackend AutoCommit bool // contains filtered or unexported fields }
A SimulatedBackend embeds a go-ethereum SimulatedBackend and extends its functionality to simplify standard testing.
func NewSimulatedBackend ¶
func NewSimulatedBackend(numAccounts int) (*SimulatedBackend, error)
NewSimulatedBackend returns a new simulated ETH backend with the specified number of accounts. Transactions are automatically committed unless. Close() must be called to free resources after use.
Accounts are deterministically generated so have identical addresses between backends, but balances are coupled to the specific instance of the backend.
func NewSimulatedBackendTB ¶
func NewSimulatedBackendTB(tb testing.TB, numAccounts int) *SimulatedBackend
NewSimulatedBackendTB calls NewSimulatedBackend(), reports any errors with tb.Fatal, and calls Close() with tb.Cleanup().
func (*SimulatedBackend) Acc ¶
func (sb *SimulatedBackend) Acc(account int) *bind.TransactOpts
Acc returns a TransactOpts signing as the specified account number.
func (*SimulatedBackend) Addr ¶ added in v0.10.0
func (sb *SimulatedBackend) Addr(account int) common.Address
Addr returns the Address of the specified account number.
func (*SimulatedBackend) AsMockedEntity ¶ added in v0.12.0
func (sb *SimulatedBackend) AsMockedEntity(mock MockedEntity, fn func(*bind.TransactOpts) error) error
AsMockedEntity calls the provided function with the mocked entity's account if it is supported, propagating any returned error.
MockedEntity accounts SHOULD NOT be used in general tests; prefer provided packages like openseatest to using AsMockedEntity() directly.
func (*SimulatedBackend) BalanceOf ¶
func (sb *SimulatedBackend) BalanceOf(ctx context.Context, tb testing.TB, addr common.Address) *big.Int
BalanceOf returns the current balance of the address, calling tb.Fatalf on error.
func (*SimulatedBackend) BlockNumber ¶
func (sb *SimulatedBackend) BlockNumber() *big.Int
BlockNumber returns the current block number.
func (*SimulatedBackend) CallFrom ¶
func (sb *SimulatedBackend) CallFrom(account int) *bind.CallOpts
CallFrom returns a CallOpts from the specified account number.
func (*SimulatedBackend) FastForward ¶
func (sb *SimulatedBackend) FastForward(blockNumber *big.Int) bool
FastForward calls sb.Commit() until sb.BlockNumber() >= blockNumber. It returns whether fast-forwarding was required; i.e. false if the requested block number is current or in the past.
NOTE: FastForward is O(curr - requested).
func (*SimulatedBackend) GasSpent ¶
func (sb *SimulatedBackend) GasSpent(ctx context.Context, tb testing.TB, tx *types.Transaction) *big.Int
GasSpent returns the gas spent (i.e. used*cost) by the transaction.
func (*SimulatedBackend) Must ¶ added in v0.10.0
func (sb *SimulatedBackend) Must(tb testing.TB, descFormat string, descArgs ...interface{}) func(*types.Transaction, error) *types.Transaction
Must returns a function that ensures a successful transaction, reporting any error on tb.Fatal, or propagating the transaction.
Intended usage:
sb.Must(t, "ContractFunc()")(foo.ContractFunc(sim.Acc(<acc>), …))
The description format and associated args will be used as a prefix in any reported errors. The returned function MUST be used immediately, and can only be used once.
func (*SimulatedBackend) SendTransaction ¶
func (sb *SimulatedBackend) SendTransaction(ctx context.Context, tx *types.Transaction) error
SendTransaction functions pipes its parameters to the embedded backend and also calls Commit() if sb.AutoCommit==true.
func (*SimulatedBackend) WithValueFrom ¶
func (sb *SimulatedBackend) WithValueFrom(account int, value *big.Int) *bind.TransactOpts
WithValueFrom returns a TransactOpts that sends the specified value from the account. If value==0, sb.Acc(account) can be used directly.
Directories ¶
Path | Synopsis |
---|---|
Package chainlinktest provides test doubles for Chainlinks's VRF.
|
Package chainlinktest provides test doubles for Chainlinks's VRF. |
chainlinktestabi
Package chainlinktestabi is a generated package providing test doubles and real implementations of Chainlink contracts.
|
Package chainlinktestabi is a generated package providing test doubles and real implementations of Chainlink contracts. |
The factorytest package provides test doubles for ethier factory contracts.
|
The factorytest package provides test doubles for ethier factory contracts. |
factorytestabi
Package factorytestabi is a generated package providing test doubles of ethier factory contracts.
|
Package factorytestabi is a generated package providing test doubles of ethier factory contracts. |
Package openseatest provides test doubles for OpenSea's Wyvern protocol.
|
Package openseatest provides test doubles for OpenSea's Wyvern protocol. |
openseatestabi
Package openseatestabi is a generated package providing test doubles of OpenSea contracts.
|
Package openseatestabi is a generated package providing test doubles of OpenSea contracts. |
Package revert provides means for testing Ethereum reverted execution.
|
Package revert provides means for testing Ethereum reverted execution. |