fix: stabilize test suite and repair frontend/backend wiring

- meshcore pin >=2.3.0 (EventType.STATS_CORE floor); setup.sh derives
  optional packages from requirements.txt; Python 3.10 warning
- agent-mode wifi clients proxy route + bare-array response handling
- remove dead AIS/ACARS/VDL2 SPA wiring and orphaned partials/CSS
- agent TLE download to data/tle/ (was littering repo root as gp.php)
- gate deferred background init off under pytest (mock-pollution race)
- complete Popen mocks (context manager protocol, communicate tuples)
- real pipe fds in weather-sat decoder tests (fd 10/11 collision caused
  10s SQLite stalls); satellite tests no longer rewrite data/satellites.py
- register 'live' pytest marker, excluded by default
- update stale test assertions to current APIs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
James Smith
2026-06-11 16:42:33 +01:00
parent b68a53eb53
commit d4652017f5
27 changed files with 3128 additions and 4029 deletions
+2 -13
View File
@@ -35,21 +35,10 @@ def is_meshcore_available() -> bool:
return HAS_MESHCORE
# Try to import ContactType for repeater detection
try:
from meshcore import ContactType as _ContactType
_REPEATER_TYPE = getattr(_ContactType, "REPEATER", None)
except Exception:
_ContactType = None
_REPEATER_TYPE = None
def _is_repeater_contact(contact_dict: dict) -> bool:
"""Return True if this contact is a repeater node."""
if _REPEATER_TYPE is not None:
return contact_dict.get("type") == _REPEATER_TYPE
# Fallback: meshcore repeaters have type==2 by convention
# meshcore exports no ContactType enum (checked through 2.3.7);
# repeaters have type==2 by library convention
return contact_dict.get("type") == 2