mirror of
https://github.com/meshtastic/firmware.git
synced 2026-05-24 00:35:30 -04:00
* Add USB camera and uhubctl support for new test suite. Also added some bug fixes * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Refactor test messages for clarity and consistency in regex tests --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
"""Recovery-tier gating + shared helpers.
|
|
|
|
Session-scoped guard skips the whole tier when uhubctl isn't installed.
|
|
Tests under this directory assume uhubctl is callable AND that at least
|
|
one hub role is detected on a PPPS-capable port.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import pytest
|
|
|
|
|
|
@pytest.fixture(scope="session", autouse=True)
|
|
def _recovery_tier_guard() -> None:
|
|
"""Skip the tier when uhubctl is unavailable OR no device is on a
|
|
PPPS-capable hub. Prints the specific reason so operators know what
|
|
to fix."""
|
|
from tests import _power
|
|
|
|
if not _power.is_uhubctl_available():
|
|
pytest.skip(
|
|
"uhubctl not installed; recovery tier needs it. "
|
|
"Install via `brew install uhubctl` or `apt install uhubctl`.",
|
|
allow_module_level=True,
|
|
)
|
|
|
|
# Probe: can we even list hubs? (A macOS user without sudo gets a
|
|
# permission error here — we'd rather find out once at tier-start than
|
|
# 6 tests later.)
|
|
from meshtastic_mcp import uhubctl
|
|
|
|
try:
|
|
hubs = uhubctl.list_hubs()
|
|
except uhubctl.UhubctlError as exc:
|
|
pytest.skip(
|
|
f"uhubctl list failed: {exc}. Try the udev rules or `sudo` as a fallback.",
|
|
allow_module_level=True,
|
|
)
|
|
|
|
if not any(h["ppps"] for h in hubs):
|
|
pytest.skip(
|
|
"no PPPS-capable hubs detected — recovery tier has nothing to exercise.",
|
|
allow_module_level=True,
|
|
)
|