Documentation ¶
Overview ¶
Package ethtest provides functionality for Ethereum testing.
The ethtest package provides helpers for testing Ethereum smart contracts.
Index ¶
- Constants
- func NewBlock(num int64, time uint64) *types.Block
- type BlockTimes
- 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) ChainID(ctx context.Context) (*big.Int, error)
- func (sb *SimulatedBackend) CoverageReport() []byte
- 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) PrivateKey(account int) *ecdsa.PrivateKey
- 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") WETH = MockedEntity("wETH") )
Mocked entities.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type BlockTimes ¶
type BlockTimes []uint64
BlockTimes implements eth.BlockFetcher, returning Blocks with nothing but a mining time.
func (BlockTimes) BlockByNumber ¶
BlockByNumber returns the requested block.
func (BlockTimes) BlockNumber ¶
func (t BlockTimes) BlockNumber(ctx context.Context) (uint64, error)
BlockNumber returns len(t)-1.
type MockedEntity ¶
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 ¶
func (sb *SimulatedBackend) Addr(account int) common.Address
Addr returns the Address of the specified account number.
func (*SimulatedBackend) AsMockedEntity ¶
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) CoverageReport ¶
func (sb *SimulatedBackend) CoverageReport() []byte
CoverageReport returns an LCOV trace file for contracts registered mapped by an solcover.Collector() EVMLogger injected into the SimulatedBackend during construction. The report can be generated at any time that collection is not currently active (i.e. it is not threadsafe with respect to the VM). See solcover.Collector() for more information.
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 ¶
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) PrivateKey ¶
func (sb *SimulatedBackend) PrivateKey(account int) *ecdsa.PrivateKey
PrivateKey returns the private key of the specified account number.
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.