주기 회기 검증 격리 보강
This commit is contained in:
parent
9a7dd98cb6
commit
4cd354881f
10 changed files with 181 additions and 69 deletions
|
|
@ -30,6 +30,68 @@ class PeriodicRunnerStaticContractTests(unittest.TestCase):
|
|||
def test_browser_failures_are_not_retried_automatically(self) -> None:
|
||||
self.assertEqual(runner.PLAYWRIGHT_RETRIES, 0)
|
||||
|
||||
def test_browser_gates_prepare_distinct_zero_state_fixtures(self) -> None:
|
||||
class FixtureController(FakeController):
|
||||
def run(self, stage, argv, **kwargs):
|
||||
result = super().run(stage, argv, **kwargs)
|
||||
if stage.startswith("prepare_"):
|
||||
output = Path(argv[argv.index("--out") + 1])
|
||||
output.write_text(
|
||||
json.dumps(
|
||||
{
|
||||
"fixture_id": stage,
|
||||
"setup_proof": {
|
||||
"source_review_ready": True,
|
||||
"follow_up_review_ready": True,
|
||||
"distinct_persona": True,
|
||||
"initial_runtime_observation_count": 0,
|
||||
"initial_actual_transfer_execution_count": 0,
|
||||
}
|
||||
}
|
||||
),
|
||||
encoding="utf-8",
|
||||
)
|
||||
return result
|
||||
|
||||
with tempfile.TemporaryDirectory() as raw:
|
||||
root = Path(raw)
|
||||
fake = FixtureController()
|
||||
periodic = runner.PeriodicRunner(config(root / "receipt.json"), fake)
|
||||
stack_env = {
|
||||
"VIGNETTE_PRACTICE_INTERNAL_TOKEN": "practice-token",
|
||||
"VIGNETTE_CALIBRATION_TRANSFER_INTERNAL_TOKEN": "transfer-token",
|
||||
}
|
||||
periodic_path = root / "periodic.json"
|
||||
regression_path = root / "regression.json"
|
||||
periodic_proof = periodic._prepare_returned_practice_fixture(
|
||||
stage="prepare_periodic_learner_fixture",
|
||||
base_url="http://127.0.0.1:18080",
|
||||
database_url="postgresql://app:secret@127.0.0.1:15439/vignette",
|
||||
database_admin_url="postgresql://owner:secret@127.0.0.1:15439/vignette",
|
||||
stack_env=stack_env,
|
||||
fixture_path=periodic_path,
|
||||
)
|
||||
regression_proof = periodic._prepare_returned_practice_fixture(
|
||||
stage="prepare_returned_regression_fixture",
|
||||
base_url="http://127.0.0.1:18080",
|
||||
database_url="postgresql://app:secret@127.0.0.1:15439/vignette",
|
||||
database_admin_url="postgresql://owner:secret@127.0.0.1:15439/vignette",
|
||||
stack_env=stack_env,
|
||||
fixture_path=regression_path,
|
||||
)
|
||||
|
||||
self.assertNotEqual(periodic_path.name, regression_path.name)
|
||||
self.assertEqual(
|
||||
[stage for stage, _ in fake.commands if stage.startswith("prepare_")],
|
||||
["prepare_periodic_learner_fixture", "prepare_returned_regression_fixture"],
|
||||
)
|
||||
self.assertEqual(periodic_proof["initial_runtime_observation_count"], 0)
|
||||
self.assertEqual(regression_proof["initial_actual_transfer_execution_count"], 0)
|
||||
self.assertNotEqual(
|
||||
periodic_proof["fixture_sha256"],
|
||||
regression_proof["fixture_sha256"],
|
||||
)
|
||||
|
||||
|
||||
class FakeController:
|
||||
def __init__(self, *, tracked_status: str = "") -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue