add SREBOT, SHARED, TSSBOT contents (fixup for #1223)
PR #1223 only staged the deletions of the old paths because the new top-level directories were still untracked when the commit was authored. This commit adds the actual restructured tree: SREBOT/ (existing bot), SHARED/ (vromfs, data_parser, ICONS/MAPS/FONTS, DAGOR_FILES, update_game_files), and TSSBOT/ (skeleton). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,81 @@
|
||||
"""
|
||||
Smoke test for BOT/render_recap.py in --mode player.
|
||||
|
||||
Usage:
|
||||
source .venv/bin/activate && python BOT/tests/smoke_player_recap.py
|
||||
"""
|
||||
|
||||
import sqlite3
|
||||
import os
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
|
||||
_storage_env = os.environ.get("SREBOT_STORAGE_VOL_PATH", "").strip()
|
||||
if not _storage_env:
|
||||
raise RuntimeError("SREBOT_STORAGE_VOL_PATH must be set")
|
||||
STORAGE = Path(_storage_env)
|
||||
SEASON_START = "1772348400"
|
||||
SEASON_END = "1777852799"
|
||||
SEASON = "2026-II"
|
||||
|
||||
|
||||
def pick_uid() -> str:
|
||||
conn = sqlite3.connect(f"file:{STORAGE/'sq_battles.db'}?mode=ro", uri=True)
|
||||
cur = conn.execute(
|
||||
"SELECT UID FROM player_games_hist "
|
||||
"WHERE endtime_unix BETWEEN ? AND ? "
|
||||
"GROUP BY UID ORDER BY COUNT(*) DESC LIMIT 1",
|
||||
(int(SEASON_START), int(SEASON_END)),
|
||||
)
|
||||
row = cur.fetchone()
|
||||
conn.close()
|
||||
return row[0] if row else ""
|
||||
|
||||
|
||||
def run_smoke(uid: str, theme: str = "dark", lang: str = "en") -> int:
|
||||
with tempfile.TemporaryDirectory() as tmp:
|
||||
out = Path(tmp) / f"player-{theme}-{lang}.png"
|
||||
cmd = [
|
||||
sys.executable,
|
||||
"BOT/render_recap.py",
|
||||
"--mode", "player",
|
||||
"--uid", uid,
|
||||
"--season", SEASON,
|
||||
"--season-start", SEASON_START,
|
||||
"--season-end", SEASON_END,
|
||||
"--theme", theme,
|
||||
"--lang", lang,
|
||||
"--out", str(out),
|
||||
]
|
||||
print("Running:", " ".join(cmd))
|
||||
result = subprocess.run(cmd, capture_output=True, text=True)
|
||||
print("stdout:", result.stdout)
|
||||
print("stderr:", result.stderr)
|
||||
if result.returncode != 0:
|
||||
print(f"FAIL: exit={result.returncode}")
|
||||
return result.returncode
|
||||
size = out.stat().st_size if out.exists() else 0
|
||||
if size < 10_000:
|
||||
print(f"FAIL: suspicious size {size} bytes at {out}")
|
||||
return 1
|
||||
print(f"OK: wrote {size} bytes ({theme}/{lang})")
|
||||
return 0
|
||||
|
||||
|
||||
def main() -> int:
|
||||
uid = pick_uid()
|
||||
if not uid:
|
||||
print("FAIL: no UID with season activity available for smoke test")
|
||||
return 1
|
||||
print(f"Using UID {uid}")
|
||||
code = 0
|
||||
for theme in ("light", "dark"):
|
||||
for lang in ("en", "ru"):
|
||||
code |= run_smoke(uid, theme=theme, lang=lang)
|
||||
return code
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user