Skip to content

Commit d3c0dcc

Browse files
authored
docs: update changelog for release v2; fix nested lists in online doc (#403)
* chore(docs): clean-up v2.0.0 changelog test cases section * chore(docs): further clean-up of changelog test cases section * chore(docs): add initial changelog v2.0.0 intro * chore(docs): improve nested lists * fix(docs): fix nested lists in online doc Solution found via this old issue mkdocs/mkdocs#545 * docs: add changelog entry for fixing nested lists
1 parent 10d045f commit d3c0dcc

File tree

3 files changed

+86
-78
lines changed

3 files changed

+86
-78
lines changed

docs/CHANGELOG.md

Lines changed: 82 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -4,111 +4,115 @@ Test fixtures for use by clients are available for each release on the [Github r
44

55
**Key:** ✨ = New, 🐞 = Fixed, 🔀 = Changed, 💥 = Breaking change.
66

7-
## 🔜 [Unreleased - v1.0.7](https://github.com/ethereum/execution-spec-tests/releases/tag/v1.0.7) - 2023-XX-XX: 🐍
7+
## [v2.0.0](https://github.com/ethereum/execution-spec-tests/releases/tag/v2.0.0) - 2024-01-25: 🐍🏖️ Cancun
8+
9+
Release [v2.0.0](https://github.com/ethereum/execution-spec-tests/releases/tag/v2.0.0) contains many important framework changes, including introduction of the `StateTest` format, and some additional Cancun and other test coverage.
10+
11+
Due to changes in the framework, there is a breaking change in the directory structure in the release tarball, please see the dedicated "💥 Breaking Changes" section below for more information.
812

913
### 🧪 Test Cases
1014

11-
- ✨ Add tests for the MODEXP precompile ([#364](https://github.com/ethereum/execution-spec-tests/pull/364))
12-
- 🔀 Add reentrancy suicide revert test ([#372](https://github.com/ethereum/execution-spec-tests/pull/372)).
13-
- 🔀 BlockchainTests converted to StateTest (also automatically generate BlockchainTest) ([#368](https://github.com/ethereum/execution-spec-tests/pull/368), [#370](https://github.com/ethereum/execution-spec-tests/pull/370)):
14-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_invalid_normal_gas
15-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_insufficient_balance_blob_tx
16-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_invalid_tx_blob_count
17-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_invalid_blob_hash_versioning_single_tx
18-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_tx_attribute_opcodes
19-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_tx_attribute_value_opcode
20-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_tx_attribute_calldata_opcodes
21-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_tx_attribute_gasprice_opcode
22-
- tests/cancun/eip4844_blobs/test_blob_txs.py::test_blob_type_tx_pre_fork
23-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile_gas.py::test_point_evaluation_precompile_gas_usage
24-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_valid_precompile_calls
25-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_invalid_precompile_calls
26-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_point_evaluation_precompile_external_vectors
27-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_point_evaluation_precompile_calls
28-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_point_evaluation_precompile_gas_tx_to
29-
- tests/cancun/eip4844_blobs/test_point_evaluation_precompile.py::test_point_evaluation_precompile_before_fork
30-
- tests/cancun/eip7516_blobgasfee/test_blobgasfee_opcode.py::test_blobbasefee_before_fork
31-
- tests/shanghai/eip3860_initcode/test_initcode.py::test_contract_creating_tx
32-
- tests/shanghai/eip3860_initcode/test_initcode.py::TestContractCreationGasUsage
33-
- 🐞 Fixed `tests/cancun/eip4844_blobs/test_blob_txs.py:test_invalid_tx_max_fee_per_blob_gas` to account for extra gas required in the case where the account is incorrectly deduced the balance as if it had the correct block blob gas fee ([#370](https://github.com/ethereum/execution-spec-tests/pull/370)).
34-
- 🐞 Fixed `tests/cancun/eip4844_blobs/test_blob_txs.py:test_insufficient_balance_blob_tx` to correctly calculate the minimum balance required for the accounts ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
35-
- ✨ Add `tests/cancun/eip4844_blobs/test_blob_txs.py::test_sufficient_balance_blob_tx` and `tests/cancun/eip4844_blobs/test_blob_txs.py::test_sufficient_balance_blob_tx_pre_fund_tx` ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
36-
- 🐞 Fix and enable `tests/cancun/eip4844_blobs/test_blob_txs.py::test_invalid_blob_tx_contract_creation` ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
37-
- ✨ Adds a callcode gas test when call stipend is applied to gas limit. Covers a bug found in the EthereumJS EVM. ([#371](https://github.com/ethereum/execution-spec-tests/pull/371))
38-
-[EIP-1153](https://eips.ethereum.org/EIPS/eip-1153): Add `test_run_until_out_of_gas` for transient storage opcodes ([#401](https://github.com/ethereum/execution-spec-tests/pull/401)).
15+
-[EIP-4844](https://eips.ethereum.org/EIPS/eip-4844): Add `test_sufficient_balance_blob_tx()` and `test_sufficient_balance_blob_tx_pre_fund_tx()` ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
16+
-[EIP-6780](https://eips.ethereum.org/EIPS/eip-6780): Add a reentrancy suicide revert test ([#372](https://github.com/ethereum/execution-spec-tests/pull/372)).
17+
-[EIP-1153](https://eips.ethereum.org/EIPS/eip-1153): Add `test_run_until_out_of_gas()` for transient storage opcodes ([#401](https://github.com/ethereum/execution-spec-tests/pull/401)).
18+
-[EIP-198](https://eips.ethereum.org/EIPS/eip-198): Add tests for the MODEXP precompile ([#364](https://github.com/ethereum/execution-spec-tests/pull/364)).
19+
- ✨ Tests for nested `CALL` and `CALLCODE` gas consumption with a positive value transfer (previously lacking coverage) ([#371](https://github.com/ethereum/execution-spec-tests/pull/371)).
20+
- 🐞 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844): Fixed `test_invalid_tx_max_fee_per_blob_gas()` to account for extra gas required in the case where the account is incorrectly deduced the balance as if it had the correct block blob gas fee ([#370](https://github.com/ethereum/execution-spec-tests/pull/370)).
21+
- 🐞 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844): Fixed `test_insufficient_balance_blob_tx()` to correctly calculate the minimum balance required for the accounts ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
22+
- 🐞 [EIP-4844](https://eips.ethereum.org/EIPS/eip-4844): Fix and enable `test_invalid_blob_tx_contract_creation` ([#379](https://github.com/ethereum/execution-spec-tests/pull/379)).
23+
- 🔀 Convert all eligible `BlockchainTest`s to `StateTest`s (and additionally generate corresponding `BlockchainTest`s) ([#368](https://github.com/ethereum/execution-spec-tests/pull/368), [#370](https://github.com/ethereum/execution-spec-tests/pull/370)).
3924

4025
### 🛠️ Framework
4126

42-
- ✨ Add a `--single-fixture-per-file` flag to generate one fixture JSON file per test case ([#331](https://github.com/ethereum/execution-spec-tests/pull/331)).
43-
- 🔀 Rename test fixtures names to match the corresponding pytest node ID as generated using `fill` ([#342](https://github.com/ethereum/execution-spec-tests/pull/342)).
44-
- 💥 Replace "=" with "_" in pytest node ids and test fixture names ([#342](https://github.com/ethereum/execution-spec-tests/pull/342)).
45-
- ✨ Add `evm_bytes_to_python` command which converts EVM bytes to Python Opcodes ([#357](https://github.com/ethereum/execution-spec-tests/pull/357)).
46-
- 🔀 Locally calculate the transactions list's root instead of using the one returned by t8n when producing BlockchainTests ([#353](https://github.com/ethereum/execution-spec-tests/pull/353)).
27+
- ✨ Add `StateTest` fixture format generation; `StateTests` now generate a `StateTest` and a corresponding `BlockchainTest` test fixture, previously only `BlockchainTest` fixtures were generated ([#368](https://github.com/ethereum/execution-spec-tests/pull/368)).
28+
- ✨ Add `StateTestOnly` fixture format is now available and its only difference with `StateTest` is that it does not produce a `BlockchainTest` ([#368](https://github.com/ethereum/execution-spec-tests/pull/368)).
29+
- ✨ Add `evm_bytes_to_python` command-line utility which converts EVM bytecode to Python Opcodes ([#357](https://github.com/ethereum/execution-spec-tests/pull/357)).
4730
- ✨ Fork objects used to write tests can now be compared using the `>`, `>=`, `<`, `<=` operators, to check for a fork being newer than, newer than or equal, older than, older than or equal, respectively when compared against other fork ([#367](https://github.com/ethereum/execution-spec-tests/pull/367)).
48-
- 🐞 Storage type iterator is now fixed ([#369](https://github.com/ethereum/execution-spec-tests/pull/369)).
49-
- 💥 Removed `--enable-hive` parameter, now all test types are generated by default ([#358](https://github.com/ethereum/execution-spec-tests/pull/358)).
50-
- 💥 `StateTest`, spec format used to write tests, is now limited to a single transaction per test ([#361](https://github.com/ethereum/execution-spec-tests/pull/361)).
51-
-`StateTestOnly`, spec format is now available and its only difference with `StateTest` is that it does not produce a `BlockchainTest` ([#368](https://github.com/ethereum/execution-spec-tests/pull/368)).
31+
- ✨ Add [solc 0.8.23](https://github.com/ethereum/solidity/releases/tag/v0.8.23) support ([#373](https://github.com/ethereum/execution-spec-tests/pull/373)).
32+
- ✨ Add framework unit tests for post state exception verification ([#350](https://github.com/ethereum/execution-spec-tests/pull/350)).
5233
- ✨ Add a helper class `ethereum_test_tools.TestParameterGroup` to define test parameters as dataclasses and auto-generate test IDs ([#364](https://github.com/ethereum/execution-spec-tests/pull/364)).
34+
- ✨ Add a `--single-fixture-per-file` flag to generate one fixture JSON file per test case ([#331](https://github.com/ethereum/execution-spec-tests/pull/331)).
35+
- 🐞 Storage type iterator is now fixed ([#369](https://github.com/ethereum/execution-spec-tests/pull/369)).
36+
- 🐞 Fix type coercion in `FixtureHeader.join()` ([#398](https://github.com/ethereum/execution-spec-tests/pull/398)).
37+
- 🔀 Locally calculate the transactions list's root instead of using the one returned by t8n when producing BlockchainTests ([#353](https://github.com/ethereum/execution-spec-tests/pull/353)).
5338
- 🔀 Change custom exception classes to dataclasses to improve testability ([#386](https://github.com/ethereum/execution-spec-tests/pull/386)).
54-
- 🔀 Updates fork name from Merge to Paris ([#363](https://github.com/ethereum/execution-spec-tests/pull/363)).
55-
- ✨ Add framework unit tests for post state exception verification ([#350](https://github.com/ethereum/execution-spec-tests/pull/350)).
56-
- ✨ Add [solc 0.8.23](https://github.com/ethereum/solidity/releases/tag/v0.8.23) support ([#373](https://github.com/ethereum/execution-spec-tests/pull/373)).
39+
- 🔀 Update fork name from "Merge" to "Paris" used within the framework and tests ([#363](https://github.com/ethereum/execution-spec-tests/pull/363)).
40+
- 💥 Replace `=` with `_` in pytest node ids and test fixture names ([#342](https://github.com/ethereum/execution-spec-tests/pull/342)).
41+
- 💥 The `StateTest`, spec format used to write tests, is now limited to a single transaction per test ([#361](https://github.com/ethereum/execution-spec-tests/pull/361)).
5742
- 💥 Tests must now use `BlockException` and `TransactionException` to define the expected exception of a given test, which can be used to test whether the client is hitting the proper exception when processing the block or transaction ([#384](https://github.com/ethereum/execution-spec-tests/pull/384)).
58-
59-
### 🔧 EVM Tools
43+
- 💥 `fill`: Remove the `--enable-hive` flag; now all test types are generated by default ([#358](https://github.com/ethereum/execution-spec-tests/pull/358)).
44+
- 💥 Rename test fixtures names to match the corresponding pytest node ID as generated using `fill` ([#342](https://github.com/ethereum/execution-spec-tests/pull/342)).
6045

6146
### 📋 Misc
6247

63-
- 🔀 Docs: Update `t8n` tool branch to fill tests for development features in the [readme](https://github.com/ethereum/execution-spec-test) ([#338](https://github.com/ethereum/execution-spec-tests/pull/338)).
64-
- 🔀 Filling tool: Updated filling tool to go-ethereum@master ([#368](https://github.com/ethereum/execution-spec-tests/pull/368)).
6548
- ✨ Docs: Add a ["Consuming Tests"](https://ethereum.github.io/execution-spec-tests/main/consuming_tests/) section to the docs, where each test fixture format is described, along with the steps to consume them, and the description of the structures used in each format ([#375](https://github.com/ethereum/execution-spec-tests/pull/375)).
49+
- 🔀 Docs: Update `t8n` tool branch to fill tests for development features in the [readme](https://github.com/ethereum/execution-spec-test) ([#338](https://github.com/ethereum/execution-spec-tests/pull/338)).
50+
- 🔀 Filling tool: Updated the default filling tool (`t8n`) to go-ethereum@master ([#368](https://github.com/ethereum/execution-spec-tests/pull/368)).
6651
- 🐞 Docs: Fix error banner in online docs due to mermaid syntax error ([#398](https://github.com/ethereum/execution-spec-tests/pull/398)).
52+
- 🐞 Docs: Fix incorrectly formatted nested lists in online doc ([#403](https://github.com/ethereum/execution-spec-tests/pull/403)).
6753

68-
## Breaking Changes
54+
### 💥 Breaking Changes
6955

70-
1. Fixture output, including release tarballs, now contain subdirectories for different test types:
71-
- `blockchain_tests`: Contains BlockchainTest formatted tests
72-
- `blockchain_tests_hive`: Contains BlockchainTest with Engine API call directives for use in hive
73-
- `state_tests`: Contains StateTest formatted tests
74-
2. `StateTest`, spec format used to write tests, is now limited to a single transaction per test.
75-
3. In this release the pytest node ID is now used for fixture names (previously only the test parameters were used), this should not be breaking. However, "=" in both node IDs and therefore fixture names, have been replaced with "_", which may break tooling that depends on the "=" character.
56+
A concrete example of the test name renaming and change in directory structure is provided below.
7657

77-
Pytest node ID example:
58+
1. Fixture output, including release tarballs, now contain subdirectories for different test types:
7859

79-
- Previous node ID: `tests/frontier/opcodes/test_dup.py::test_dup[fork=Frontier]`
80-
- New node ID: `tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]`
60+
1. `blockchain_tests`: Contains `BlockchainTest` formatted tests
61+
2. `blockchain_tests_hive`: Contains `BlockchainTest` with Engine API call directives for use in hive
62+
3. `state_tests`: Contains `StateTest` formatted tests
8163

82-
Fixture name example:
83-
- Previous fixture name: `fork=Frontier`
84-
- New fixture name: `fork_Frontier`
64+
2. `StateTest`, spec format used to write tests, is now limited to a single transaction per test.
65+
3. In this release the pytest node ID is now used for fixture names (previously only the test parameters were used), this should not be breaking. However, `=` in both node IDs (and therefore fixture names) have been replaced with `_`, which may break tooling that depends on the `=` character.
8566
4. Produced `blockchain_tests` fixtures and their corresponding `blockchain_tests_hive` fixtures now contain the named exceptions `BlockException` and `TransactionException` as strings in the `expectException` and `validationError` fields, respectively. These exceptions can be used to test whether the client is hitting the proper exception when processing an invalid block.
8667

87-
Blockchain test:
68+
Blockchain test:
8869

89-
```json
90-
"blocks": [
91-
{
70+
```json
71+
"blocks": [
72+
{
73+
...
74+
"expectException": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS",
75+
...
76+
}
9277
...
93-
"expectException": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS",
78+
]
79+
```
80+
81+
Blockchain hive test:
82+
83+
```json
84+
"engineNewPayloads": [
85+
{
86+
...
87+
"validationError": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS",
88+
...
89+
}
9490
...
95-
}
96-
...
97-
]
98-
```
91+
]
92+
```
9993

100-
Blockchain hive test:
94+
#### Renaming and Release Tarball Directory Structure Change Example
10195

102-
```json
103-
"engineNewPayloads": [
104-
{
105-
...
106-
"validationError": "TransactionException.INSUFFICIENT_ACCOUNT_FUNDS",
107-
...
108-
}
109-
...
110-
]
111-
```
96+
The fixture renaming provides a more consistent naming scheme between the pytest node ID and fixture name and allows the fixture name to be provided directly to pytest 5on the command line to execute individual tests in isolation, e.g. `pytest tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]`.
97+
98+
1. Pytest node ID example:
99+
100+
1. Previous node ID: `tests/frontier/opcodes/test_dup.py::test_dup[fork=Frontier]`.
101+
2. New node ID: `tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]`.
102+
103+
2. Fixture name example:
104+
105+
1. Previous fixture name: `000-fork=Frontier`
106+
2. New fixture name: `tests/frontier/opcodes/test_dup.py::test_dup[fork_Frontier]` (now the same as the pytest node ID).
107+
108+
3. Fixture JSON file name example (within the release tarball):
109+
110+
1. Previous fixture file name: `fixtures/frontier/opcodes/dup/dup.json` (`BlockChainTest` format).
111+
2. New fixture file names (all present within the release tarball):
112+
113+
- `fixtures/state_tests/frontier/opcodes/dup/dup.json` (`StateTest` format).
114+
- `fixtures/blockchain_tests/frontier/opcodes/dup/dup.json` (`BlockChainTest` format).
115+
- `fixtures/blockchain_tests_hive/frontier/opcodes/dup/dup.json` (a blockchain test in `HiveFixture` format).
112116

113117
## [v1.0.6](https://github.com/ethereum/execution-spec-tests/releases/tag/v1.0.6) - 2023-10-19: 🐍🏖️ Cancun Devnet 10
114118

mkdocs.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ markdown_extensions:
106106
- pymdownx.tasklist:
107107
custom_checkbox: true
108108
- pymdownx.tilde
109+
# support pad width = 2
110+
- mdx_truly_sane_lists
111+
109112

110113
extra:
111114
version:

setup.cfg

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ docs =
8181
mkdocs-material-extensions>=1.1.1,<2
8282
mkdocstrings>=0.21.2,<1
8383
mkdocstrings-python>=1.0.0,<2
84+
mdx-truly-sane-lists>=1.3.0,<2
8485
pillow>=10.0.1,<11 # required for social plugin (material)
8586
pyspelling>=2.8.2,<3
8687

0 commit comments

Comments
 (0)