./quicktest.sh -m "not fuzzing" # standard test run (-nauto by default via setup.cfg)
./quicktest.sh tests/unit/ # unit tests only
./quicktest.sh tests/functional/ # functional tests only
./quicktest.sh tests/unit/compiler/venom/ # venom unit tests
./quicktest.sh --hevm -m hevm # hevm-based tests (needs hevm in PATH)quicktest.sh wraps pytest with -q -s --instafail -x (bail on first failure).
tests/
βββ unit/ # isolated component tests
β βββ ast/
β βββ semantics/
β βββ compiler/
β β βββ venom/ # venom pass & analysis tests
β βββ cli/
β βββ ...
βββ functional/ # end-to-end compilation & execution
β βββ builtins/
β βββ codegen/
β βββ grammar/
β βββ syntax/
β βββ venom/
βββ conftest.py # shared fixtures
βββ evm_backends/ # EVM execution backends for tests
βββ venom_utils.py # helpers for venom tests
tests/conftest.pyβ main fixtures (compiler invocation, EVM backends)tests/evm_backends/β pluggable EVM execution (pyevm, pyrevm)tests/venom_utils.pyβ helpers for constructing Venom IR in tests
- Functional tests typically compile a Vyper snippet and execute it against an EVM backend
- Venom unit tests construct IR programmatically, run passes, and assert on the result
- Use
pytest.mark.fuzzingfor slow/fuzz tests (skipped in quick runs) - Use
pytest.mark.hevmfor hevm-specific tests