Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(docs|fw): post v6.7.8 release changes #38

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions .github/workflows/post_release.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
name: Post Release Automation

on:
release:
types: [published]

permissions:
contents: write
pull-requests: write

jobs:
update-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0

- name: Configure git user for actions
run: |
git config --global user.email "[email protected]"
git config --global user.name "GitHub Action"

- name: Set environment variables
run: |
echo "NEW_VERSION=${{ github.event.release.tag_name }}" >> $GITHUB_ENV
echo "NEW_BRANCH=release-${{ github.event.release.tag_name }}" >> $GITHUB_ENV
echo "COMMIT_MSG=feat(docs|fw): post ${{ github.event.release.tag_name }} release changes" >> $GITHUB_ENV

- name: Bump version in setup configuration
run: |
sed -i "s/^version = .*/version = $NEW_VERSION/" setup.cfg
git add setup.cfg

- name: Update changelog with release details
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
RELEASE_DATE: $(date +'%Y-%m-%d')
run: |
# Replace unreleased link with the new release information
RELEASE_DATE=$(date +'%Y-%m-%d')
ESCAPED_LINK="https:\/\/github.com\/ethereum\/execution-spec-tests\/releases\/tag\/${NEW_VERSION}"
RELEASE_NAME=$(gh release view ${NEW_VERSION} --json body -q '.body' | grep '^#' | head -n 1 | sed 's/^# //')
sed -i "s/^## 🔜 \[Unreleased\].*/## [${NEW_VERSION}](${ESCAPED_LINK}) - ${RELEASE_DATE}: ${RELEASE_NAME}/" docs/CHANGELOG.md

# Append changelog template for the new unreleased section
{ echo ""; tail -n +5 docs/changelog_section_template.md; } > temp_template.md
sed -i '/\*\*Key:\*\*/ r temp_template.md' docs/CHANGELOG.md
rm temp_template.md

git add docs/CHANGELOG.md

- name: Create pull request with relevant changes
uses: peter-evans/create-pull-request@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
branch: ${{ env.NEW_BRANCH }}
commit-message: ${{ env.COMMIT_MSG }}
title: ${{ env.COMMIT_MSG }}
body: |
## 🗒️ Description
Post ${{ env.NEW_VERSION }} release changes:
- Bump version within `setup.cfg`.
- Update `CHANGELOG.md` and copy in `changelog_section_template.md`.
base: main
12 changes: 11 additions & 1 deletion docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,17 @@ Test fixtures for use by clients are available for each release on the [Github r

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

## 🔜 [Unreleased](https://github.com/ethereum/execution-spec-tests/releases/tag/v-Unreleased) - 2024-xx-xx
## 🔜 [Unreleased](https://github.com/ethereum/execution-spec-tests/releases/tag/version) - 2024-xx-xx

### 🧪 Test Cases

### 🛠️ Framework

### 🔧 EVM Tools

### 📋 Misc

## [v6.7.8](https://github.com/ethereum/execution-spec-tests/releases/tag/v6.7.8) - 2024-02-20: New Release Name

### 🧪 Test Cases

Expand Down
2 changes: 1 addition & 1 deletion docs/changelog_section_template.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The following can be copy-pasted into the `CHANGELOG.md` file for a new release.

## 🔜 [Unreleased]
## 🔜 [Unreleased](https://github.com/ethereum/execution-spec-tests/releases/tag/version) - 2024-xx-xx

### 🧪 Test Cases

Expand Down
5 changes: 3 additions & 2 deletions setup.cfg
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
[metadata]
name = test-filler
name = execution-spec-tests
description = Ethereum execution client test authoring framework
long_description = file: README.md
long_description_content_type = text/markdown
version = 1.0.0
version = v6.7.8
url = https://github.com/ethereum/execution-spec-tests
license_files =
LICENSE
Expand Down Expand Up @@ -67,6 +67,7 @@ lint =
flake8>=6.1.0,<7
pep8-naming==0.13.3
fname8>=0.0.3
GitPython>=3.1

docs =
cairosvg>=2.7.0,<3 # required for social plugin (material)
Expand Down
2 changes: 2 additions & 0 deletions src/ethereum_test_tools/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
TestInfo,
)
from .spec.blockchain.types import Block, Header
from .utility.helpers import get_framework_version
from .vm import Opcode, OpcodeCallArg, Opcodes

__all__ = (
Expand Down Expand Up @@ -112,5 +113,6 @@
"cost_memory_bytes",
"eip_2028_transaction_data_cost",
"eip_2028_transaction_data_cost",
"get_framework_version",
"transaction_list_root",
)
1 change: 1 addition & 0 deletions src/ethereum_test_tools/spec/__init__.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Test spec definitions and utilities.
"""

from typing import List, Type

from .base.base_test import BaseFixture, BaseTest, TestSpec, verify_post_alloc
Expand Down
3 changes: 3 additions & 0 deletions src/ethereum_test_tools/spec/base/base_test.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
"""
Base test class and helper functions for Ethereum state and blockchain tests.
"""

from abc import abstractmethod
from dataclasses import dataclass, field
from itertools import count
Expand All @@ -16,6 +17,7 @@
from ...common.json import JSONEncoder
from ...common.json import field as json_field
from ...reference_spec.reference_spec import ReferenceSpec
from ...utility.helpers import get_framework_version


def verify_transactions(txs: List[Transaction] | None, result) -> List[int]:
Expand Down Expand Up @@ -100,6 +102,7 @@ def fill_info(
self.info["filling-transition-tool"] = t8n.version()
if ref_spec is not None:
ref_spec.write_info(self.info)
self.info["framework-version"] = get_framework_version()

@abstractmethod
def to_json(self) -> Dict[str, Any]:
Expand Down
7 changes: 7 additions & 0 deletions src/ethereum_test_tools/utility/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
"""
Utility functions used within the EEST framework.
"""

from .helpers import get_framework_version

__all__ = ("get_framework_version",)
18 changes: 18 additions & 0 deletions src/ethereum_test_tools/utility/helpers.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
"""
Utility functions for the EEST framework.
"""

from importlib.metadata import version

from git import InvalidGitRepositoryError, Repo


def get_framework_version() -> str:
"""
Returns the current version of the EEST framework.
"""
try:
local_commit_hash = Repo(search_parent_directories=True).head.commit.hexsha[:7]
except InvalidGitRepositoryError: # required for some framework tests
local_commit_hash = "unknown"
return f"execution-spec-tests v{version('execution-spec-tests')}-{local_commit_hash}"
21 changes: 20 additions & 1 deletion src/pytest_plugins/test_filler/test_filler.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,14 @@
get_closest_fork_with_solc_support,
get_forks_with_solc_support,
)
from ethereum_test_tools import SPEC_TYPES, BaseTest, FixtureCollector, TestInfo, Yul
from ethereum_test_tools import (
SPEC_TYPES,
BaseTest,
FixtureCollector,
TestInfo,
Yul,
get_framework_version,
)
from evm_transition_tool import FixtureFormats, TransitionTool
from pytest_plugins.spec_version_checker.spec_version_checker import EIPSpecTestItem

Expand Down Expand Up @@ -126,6 +133,14 @@ def pytest_addoption(parser):
help="Path to dump the transition tool debug output.",
)

version_group = parser.getgroup("version_info", "Versioning of the EEST framework")
version_group.addoption(
"--version-info",
action="store_true",
default=False,
help="Displays the versioning information of the framework.",
)


@pytest.hookimpl(tryfirst=True)
def pytest_configure(config):
Expand Down Expand Up @@ -175,6 +190,10 @@ def pytest_configure(config):
f"{Frontier.solc_min_version()}",
returncode=pytest.ExitCode.USAGE_ERROR,
)
if config.getoption("version_info"):
pytest.exit(
f"'Displaying framework version information'\n" f"> {get_framework_version()}\n"
)


@pytest.hookimpl(trylast=True)
Expand Down
9 changes: 9 additions & 0 deletions stubs/git/__init__.pyi
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from typing import Any

class Repo:
def __init__(self, path: str = ..., search_parent_directories: bool = ...) -> None: ...
@property
def head(self) -> Any: ...

class InvalidGitRepositoryError(Exception):
pass