From 5d9f4b072c4f97ccdf3bc0f75b2528b6e880829c Mon Sep 17 00:00:00 2001 From: Hsiao-Wei Wang Date: Tue, 16 Mar 2021 00:38:30 +0800 Subject: [PATCH] Update genesis testgen and format --- tests/formats/genesis/initialization.md | 1 + tests/formats/genesis/validity.md | 8 ++++ tests/generators/genesis/main.py | 51 +++++++++---------------- 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/tests/formats/genesis/initialization.md b/tests/formats/genesis/initialization.md index 4b365c2ef..7a791dcfa 100644 --- a/tests/formats/genesis/initialization.md +++ b/tests/formats/genesis/initialization.md @@ -17,6 +17,7 @@ An integer. The timestamp of the block, in seconds. A yaml file to help read the deposit count: ```yaml +description: string -- Optional. Description of test case, purely for debugging purposes. deposits_count: int -- Amount of deposits. ``` diff --git a/tests/formats/genesis/validity.md b/tests/formats/genesis/validity.md index f2e91222a..15236c3ba 100644 --- a/tests/formats/genesis/validity.md +++ b/tests/formats/genesis/validity.md @@ -4,6 +4,14 @@ Tests if a genesis state is valid, i.e. if it counts as trigger to launch. ## Test case format +### `meta.yaml` + +A yaml file to help read the deposit count: + +```yaml +description: string -- Optional. Description of test case, purely for debugging purposes. +``` + ### `genesis.ssz_snappy` An SSZ-snappy encoded `BeaconState`, the state to validate as genesis candidate. diff --git a/tests/generators/genesis/main.py b/tests/generators/genesis/main.py index 854af6572..4fede298f 100644 --- a/tests/generators/genesis/main.py +++ b/tests/generators/genesis/main.py @@ -1,37 +1,24 @@ -from typing import Iterable - -from eth2spec.test.context import PHASE0 -from eth2spec.test.phase0.genesis import test_initialization, test_validity - -from eth2spec.gen_helpers.gen_base import gen_runner, gen_typing -from eth2spec.gen_helpers.gen_from_tests.gen import generate_from_tests -from eth2spec.phase0 import spec as spec -from importlib import reload -from eth2spec.config import config_util -from eth2spec.utils import bls +from eth2spec.gen_helpers.gen_from_tests.gen import run_state_test_generators +from eth2spec.phase0 import spec as spec_phase0 +from eth2spec.altair import spec as spec_altair +from eth2spec.phase1 import spec as spec_phase1 +from eth2spec.test.context import PHASE0, PHASE1, ALTAIR -def create_provider(handler_name: str, tests_src, config_name: str) -> gen_typing.TestProvider: - - def prepare_fn(configs_path: str) -> str: - config_util.prepare_config(configs_path, config_name) - reload(spec) - bls.use_milagro() - return config_name - - def cases_fn() -> Iterable[gen_typing.TestCase]: - return generate_from_tests( - runner_name='genesis', - handler_name=handler_name, - src=tests_src, - fork_name=PHASE0, - ) - - return gen_typing.TestProvider(prepare=prepare_fn, make_cases=cases_fn) +specs = (spec_phase0, spec_altair, spec_phase1) if __name__ == "__main__": - gen_runner.run_generator("genesis", [ - create_provider('initialization', test_initialization, 'minimal'), - create_provider('validity', test_validity, 'minimal'), - ]) + phase_0_mods = {key: 'eth2spec.test.phase0.genesis.test_' + key for key in [ + 'initialization', + 'validity', + ]} + altair_mods = phase_0_mods + phase_1_mods = phase_0_mods + all_mods = { + PHASE0: phase_0_mods, + ALTAIR: altair_mods, + PHASE1: phase_1_mods, + } + + run_state_test_generators(runner_name="genesis", specs=specs, all_mods=all_mods)