mirror of
https://github.com/rr-/pq-cli.git
synced 2026-11-12 22:40:36 -07:00
tests: add a recipe to re-record parity traces
This commit is contained in:
3 files changed
+21
-8
No files matched your search
@@ -15,3 +15,7 @@ basic *args:
|
|||||||
# Run the test suite; extra arguments go to pytest
|
# Run the test suite; extra arguments go to pytest
|
||||||
test *args:
|
test *args:
|
||||||
uv run pytest {{args}}
|
uv run pytest {{args}}
|
||||||
|
|
||||||
|
# Re-record the gameplay parity fixtures (only when gameplay should change)
|
||||||
|
record-traces:
|
||||||
|
uv run python tests/game_trace.py
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
import datetime
|
import datetime
|
||||||
import typing as T
|
import typing as T
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
from pqcli import random
|
from pqcli import random
|
||||||
from pqcli.config import StatType
|
from pqcli.config import StatType
|
||||||
@@ -67,3 +68,15 @@ def run_trace(seed: str, ticks: int = 3000) -> T.List[str]:
|
|||||||
for quest in player.quest_book.quests:
|
for quest in player.quest_book.quests:
|
||||||
lines.append(f"quest: {quest}")
|
lines.append(f"quest: {quest}")
|
||||||
return lines
|
return lines
|
||||||
|
|
||||||
|
|
||||||
|
SEEDS = ["alpha", "beta", "gamma"]
|
||||||
|
FIXTURES = Path(__file__).parent / "fixtures"
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
# Re-record the parity fixtures. Only do this on purpose, when a change
|
||||||
|
# is meant to alter gameplay.
|
||||||
|
for seed in SEEDS:
|
||||||
|
lines = run_trace(seed)
|
||||||
|
(FIXTURES / f"parity_{seed}.txt").write_text("\n".join(lines) + "\n")
|
||||||
@@ -1,14 +1,10 @@
|
|||||||
from pathlib import Path
|
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from game_trace import run_trace
|
from game_trace import FIXTURES, SEEDS, run_trace
|
||||||
|
|
||||||
FIXTURES = Path(__file__).parent / "fixtures"
|
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.parametrize("seed", ["alpha", "beta", "gamma"])
|
@pytest.mark.parametrize("seed", SEEDS)
|
||||||
def test_gameplay_matches_recorded_trace(seed: str) -> None:
|
def test_gameplay_matches_recorded_trace(seed: str) -> None:
|
||||||
# The fixtures were recorded before the word lists moved to data files;
|
# The fixtures pin down gameplay, RNG stream included. When a change is
|
||||||
# stock data must reproduce them exactly, RNG stream included.
|
# meant to alter gameplay, re-record them with `just record-traces`.
|
||||||
expected = (FIXTURES / f"parity_{seed}.txt").read_text().splitlines()
|
expected = (FIXTURES / f"parity_{seed}.txt").read_text().splitlines()
|
||||||
assert run_trace(seed) == expected
|
assert run_trace(seed) == expected
|
||||||
Reference in new issue
Block a user