ethtest

package
v0.55.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 27, 2023 License: MIT Imports: 18 Imported by: 2

Documentation

Overview

The ethtest package provides helpers for testing Ethereum smart contracts.

The ethtest package provides helpers for testing Ethereum smart contracts.

Index

Constants

View Source
const (
	OpenSea   = MockedEntity("OpenSea")
	Chainlink = MockedEntity("Chainlink")
	Ethier    = MockedEntity("Ethier")
	WETH      = MockedEntity("wETH")
)

Mocked entities.

Variables

View Source
var GasPrice uint64 = 200

GasPrice is the assumed gas price, in GWei, when logging transaction costs.

Functions

func Comparers

func Comparers(extra ...cmp.Option) []cmp.Option

Comparers returns `extra`, appended with common comparison Options for cmp.Diff(); e.g. for big.Int,

func ExecutionErrData

func ExecutionErrData(err error) (interface{}, bool)

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).

func LogGas

func LogGas(tb testing.TB, tx *types.Transaction, prefix string)

LogGas logs the amount and cost of the Transaction's gas. See GasPrice.

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) CoverageReport added in v0.31.0

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 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) PrivateKey added in v0.42.0

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.

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.
Package openseatest provides a test double for wETH.
Package openseatest provides a test double for wETH.
wethtestabi
Package wethtestabi is a generated package providing test doubles of the wETH contract.
Package wethtestabi is a generated package providing test doubles of the wETH contract.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL