fix(ci): restore db safety smoke backup and sample-test skip behavior

This commit is contained in:
Jarca
2026-06-30 16:35:51 +09:00
parent 4929e52189
commit 26b815d723
3 changed files with 33 additions and 4 deletions
+12 -1
View File
@@ -9,6 +9,7 @@ from __future__ import annotations
import argparse
import json
import os
import sqlite3
import subprocess
import sys
import tempfile
@@ -35,6 +36,16 @@ def parse_json_output(output: str) -> dict[str, Any]:
return {"success": False, "error_code": "invalid_json_output"}
def copy_sqlite_backup(source: Path, backup: Path) -> None:
"""Create a standalone SQLite backup, including data still held in WAL."""
backup.parent.mkdir(parents=True, exist_ok=True)
if backup.exists():
backup.unlink()
with sqlite3.connect(f"file:{source}?mode=ro", uri=True) as source_conn:
with sqlite3.connect(backup) as backup_conn:
source_conn.backup(backup_conn)
def main() -> int:
args = parse_args()
repo = Path(__file__).resolve().parents[1]
@@ -45,7 +56,7 @@ def main() -> int:
target = tmp_path / "restored.sqlite3"
try:
fixture = create_ci_fixture_db(source)
backup.write_bytes(source.read_bytes())
copy_sqlite_backup(source, backup)
if any(path.resolve() == DEFAULT_DB_PATH.resolve() for path in [source, backup, target]):
print(json.dumps({"success": False, "gate": "db-safety-smoke", "error_code": "operating_db_path_refused"}, ensure_ascii=False))
return 20