54 lines
1.3 KiB
Python
54 lines
1.3 KiB
Python
#!/usr/bin/env python3
|
|
"""
|
|
Verify update UI timing constants so update indicators are visible long enough.
|
|
"""
|
|
|
|
from pathlib import Path
|
|
import re
|
|
import sys
|
|
|
|
|
|
ROOT = Path(__file__).resolve().parents[1]
|
|
TIMING_FILE = ROOT / "Sources" / "Update" / "UpdateTiming.swift"
|
|
|
|
|
|
def read_constants(text: str) -> dict[str, float]:
|
|
constants = {}
|
|
pattern = re.compile(r"static let (\w+): TimeInterval = ([0-9.]+)")
|
|
for match in pattern.finditer(text):
|
|
constants[match.group(1)] = float(match.group(2))
|
|
return constants
|
|
|
|
|
|
def main() -> int:
|
|
if not TIMING_FILE.exists():
|
|
print(f"Missing {TIMING_FILE}")
|
|
return 1
|
|
|
|
constants = read_constants(TIMING_FILE.read_text())
|
|
required = {
|
|
"minimumCheckDisplayDuration": 2.0,
|
|
"noUpdateDisplayDuration": 5.0,
|
|
}
|
|
|
|
failures = []
|
|
for name, expected in required.items():
|
|
actual = constants.get(name)
|
|
if actual is None:
|
|
failures.append(f"{name} missing")
|
|
continue
|
|
if actual != expected:
|
|
failures.append(f"{name} = {actual} (expected {expected})")
|
|
|
|
if failures:
|
|
print("Update timing test failed:")
|
|
for failure in failures:
|
|
print(f" - {failure}")
|
|
return 1
|
|
|
|
print("Update timing test passed.")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|