Quick Start¶
Testing features under active development
The EVM features under test must be implemented in the evm
tool and solc
executables that are used by the execution-spec-tests framework. The following guide installs the stable version of the geth evm
; solc
will be installed by the fill
command.
To test features under active development, start with this base configuration and then follow the steps in executing tests for features under development.
The following requires a Python 3.10, 3.11 or 3.12 installation.
-
Ensure
go-ethereum
'sevm
tool is in your path. Either build the required version, or alternatively:More help:sudo add-apt-repository -y ppa:ethereum/ethereum sudo apt-get update sudo apt-get install ethereum
More help:brew update brew upgrade brew tap ethereum/ethereum brew install ethereum solidity
-
Clone the execution-spec-tests repo and install its dependencies (it's recommended to use a virtual environment for the installation):
git clone https://github.com/ethereum/execution-spec-tests cd execution-spec-tests pip install uv # or curl -LsSf https://astral.sh/uv/install.sh | sh uv sync --all-extras uv run solc-select use 0.8.24 --always-install source .venv/bin/activate # or run `uv run fill ...`
-
Verify installation:
-
Explore test cases:
fill --collect-only
Expected console output:
-
Execute the test cases (verbosely) in the
./tests/berlin/eip2930_access_list/test_acl.py
module:fill -v tests/berlin/eip2930_access_list/test_acl.py
Expected console output: Check:
- The versions of the
evm
tool is as expected (your versions may differ from those in the highlighted box). - The generated HTML test report by clicking the link at the bottom of the console output.
-
The corresponding fixture file has been generated:
head fixtures/blockchain_tests/berlin/eip2930_access_list/acl/access_list.json
- The versions of the
-
Installation Troubleshooting¶
If you encounter issues during installation, see the Installation Troubleshooting guide.
Next Steps¶
- Learn useful command-line flags.
- Execute tests for features under development via the
--fork
flag. - Optional: Configure VS Code to auto-format Python code and execute tests within VS Code.
- Implement a new test case, see Writing Tests.