191 build - поправлены старые падения, проверены 3 матча и 6 агентов одновременных
This commit is contained in:
51
tests/timer_contract_support.py
Normal file
51
tests/timer_contract_support.py
Normal file
@@ -0,0 +1,51 @@
|
||||
"""Execute production browser functions under Node and verify the current served build."""
|
||||
from __future__ import annotations
|
||||
|
||||
import ast
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
from datetime import date
|
||||
from functools import lru_cache
|
||||
from pathlib import Path
|
||||
from tempfile import TemporaryDirectory
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
|
||||
|
||||
def run_timer_contract(scenario: str) -> None:
|
||||
node = shutil.which("node")
|
||||
assert node is not None, "Node is required for executable browser timer regressions"
|
||||
result = subprocess.run([node, str(ROOT / "tests/runtime_timer_contracts.cjs"), scenario],
|
||||
capture_output=True, text=True, timeout=15)
|
||||
assert result.returncode == 0, result.stdout + result.stderr
|
||||
assert f"PASS: {scenario}" in result.stdout
|
||||
|
||||
|
||||
@lru_cache(maxsize=1)
|
||||
def assert_current_build_contract() -> None:
|
||||
"""Check the actual assignment and rendered boot, ignoring historical comments."""
|
||||
from fastapi import FastAPI
|
||||
from fastapi.testclient import TestClient
|
||||
from ui_builder.integration import install_ui_builder
|
||||
|
||||
module = ast.parse((ROOT / "app.py").read_text(encoding="utf-8"))
|
||||
assignments = [node for node in module.body if isinstance(node, ast.Assign)
|
||||
and any(isinstance(target, ast.Name) and target.id == "BUILD_VERSION" for target in node.targets)]
|
||||
assert len(assignments) == 1
|
||||
version = ast.literal_eval(assignments[0].value)
|
||||
assert isinstance(version, str) and re.fullmatch(r"\d{4}\.\d{2}\.\d{2}\.\d+", version)
|
||||
date(*map(int, version.split(".")[:3]))
|
||||
install_calls = [node for node in ast.walk(module) if isinstance(node, ast.Call)
|
||||
and isinstance(node.func, ast.Name) and node.func.id == "install_ui_builder"]
|
||||
assert len(install_calls) == 1
|
||||
assert any(keyword.arg == "build_version" and isinstance(keyword.value, ast.Name)
|
||||
and keyword.value.id == "BUILD_VERSION" for keyword in install_calls[0].keywords)
|
||||
with TemporaryDirectory() as temporary:
|
||||
app = FastAPI()
|
||||
install_ui_builder(app, build_version=version, settings_dir=Path(temporary), data_providers={})
|
||||
with TestClient(app) as client:
|
||||
response = client.get("/")
|
||||
assert response.status_code == 200
|
||||
assert f'buildVersion: "{version}"' in response.text
|
||||
assert "__UI_BUILDER_BUILD_VERSION__" not in response.text
|
||||
Reference in New Issue
Block a user