Skip to content

Commit

Permalink
Test Post Release PR
Browse files Browse the repository at this point in the history
Test Post Release PR
  • Loading branch information
spencer-tb authored Feb 20, 2024
2 parents 6d91ee9 + f685b90 commit 95dc410
Show file tree
Hide file tree
Showing 10 changed files with 129 additions and 4 deletions.
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
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 = v2.1.0
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

0 comments on commit 95dc410

Please sign in to comment.