@@ -0,0 +1,54 @@
|
||||
"""Общие хуки pytest для WESP."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import os
|
||||
from pathlib import Path
|
||||
|
||||
import pytest
|
||||
|
||||
_FIXTURES = Path(__file__).resolve().parent / "fixtures"
|
||||
_WEAK_CREDENTIALS_FILE = _FIXTURES / "weak_credentials.txt"
|
||||
|
||||
_HARDWARE_IGNORE = {
|
||||
"tests/test_gpio_controller.py",
|
||||
"tests/test_hx711_wrapper.py",
|
||||
}
|
||||
|
||||
|
||||
def pytest_collection_modifyitems(config, items):
|
||||
"""Дублирует ignore из pytest.ini при явном указании путей."""
|
||||
ignored: list[pytest.Item] = []
|
||||
kept: list[pytest.Item] = []
|
||||
for item in items:
|
||||
rel = item.nodeid.split("::", 1)[0].replace("\\", "/")
|
||||
if rel in _HARDWARE_IGNORE:
|
||||
ignored.append(item)
|
||||
else:
|
||||
kept.append(item)
|
||||
# Убираем GPIO/HX711 только при смешанном прогоне (например «all»), не при явном выборе набора.
|
||||
if ignored and kept:
|
||||
items[:] = kept
|
||||
|
||||
|
||||
def pytest_configure(config):
|
||||
"""Минимальный список слабых логинов/паролей для тестов валидации admin/setup."""
|
||||
os.environ.setdefault(
|
||||
"WESP_WEAK_CREDENTIALS_BUILTIN_PATH",
|
||||
str(_WEAK_CREDENTIALS_FILE),
|
||||
)
|
||||
from app.services.weak_password_blocklist import reload_weak_blocklist_for_tests
|
||||
|
||||
reload_weak_blocklist_for_tests()
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def _reset_global_auto_updater():
|
||||
"""Глобальный update.auto_updater не должен перетекать между unittest-приложениями."""
|
||||
yield
|
||||
try:
|
||||
from app.services.auto_update_runtime import stop_update_checker
|
||||
|
||||
stop_update_checker()
|
||||
except Exception:
|
||||
pass
|
||||
Reference in New Issue
Block a user