Harden high-rigor Jyotish timing workflow
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
#!/usr/bin/env python3
|
||||
"""Runtime checks for BPHS validation and D9 entrypoint consistency."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import subprocess
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[1]
|
||||
ENGINE = ROOT / "scripts" / "jyotish_engine.py"
|
||||
BASE_BIRTH_ARGS = [
|
||||
"--year",
|
||||
"1990",
|
||||
"--month",
|
||||
"1",
|
||||
"--day",
|
||||
"1",
|
||||
"--hour",
|
||||
"12",
|
||||
"--minute",
|
||||
"0",
|
||||
"--lat",
|
||||
"39.9",
|
||||
"--lon",
|
||||
"116.4",
|
||||
"--tz",
|
||||
"8",
|
||||
]
|
||||
|
||||
|
||||
def _run_engine(*args: str) -> dict:
|
||||
completed = subprocess.run(
|
||||
[sys.executable, str(ENGINE), *args],
|
||||
cwd=ROOT,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=True,
|
||||
)
|
||||
return json.loads(completed.stdout)
|
||||
|
||||
|
||||
def test_validate_bphs_invariants_uses_repo_varga_and_reports_zero_failures() -> None:
|
||||
completed = subprocess.run(
|
||||
[sys.executable, "scripts/validate_bphs_invariants.py"],
|
||||
cwd=ROOT,
|
||||
text=True,
|
||||
capture_output=True,
|
||||
check=False,
|
||||
)
|
||||
|
||||
assert completed.returncode == 0, completed.stdout + completed.stderr
|
||||
assert "失败: 0" in completed.stdout
|
||||
assert ".workbuddy/skills/jyotish-vedic-astrology/scripts" not in completed.stdout
|
||||
|
||||
|
||||
def test_varga_cli_d9_uses_same_navamsa_mapping_as_varga_full() -> None:
|
||||
short = _run_engine("varga", *BASE_BIRTH_ARGS, "--d9")["divisional_charts"]["D9_Navamsa"]
|
||||
full = _run_engine("varga-full", *BASE_BIRTH_ARGS, "--divisions", "9")["D9_Navamsa"]
|
||||
|
||||
assert short["ascendant"] == full["Ascendant"]["sign"]
|
||||
for planet in ["Sun", "Moon", "Mars", "Mercury", "Jupiter", "Venus", "Saturn", "Rahu", "Ketu"]:
|
||||
assert short[planet]["sign"] == full[planet]["sign"]
|
||||
Reference in New Issue
Block a user