- critical: listen_port по умолчанию 0 (эфемерный) — несколько ConfigEntry не конфликтуют; тест двух записей на дефолтном порту - manifest: добавлен обязательный ключ codeowners - unload: set_log_handler(None) вынесен в executor (не блокирует loop); рефкаунт лог-пампа без гонки (старт после успешного setup) - config flow: возврат введённого в форму при ошибке (add_suggested_values_to_schema; секреты исключены), YAML-import подключён через async_setup + SOURCE_IMPORT, ProvisionError.kind вместо разбора русского текста, валидация device_port/key_id из JSON - trial: требует получения всех базовых свойств шаблона (не пустой ok), безопасное создание Session - py-ci.sh: отсутствие .venv-ha — ошибка (PY_CI_SKIP_HA=1 для пропуска); pytest.ini testpaths
40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
#!/bin/bash
|
||
# CI python-части репозитория: pyfglair + HA-компонент.
|
||
# scripts/py-ci.sh --setup # venv для pyfglair-тестов
|
||
# scripts/py-ci.sh --setup-ha # venv с homeassistant/pytest-плагином (тяжёлый)
|
||
# scripts/py-ci.sh # pytest: tests/pyfglair + tests/components (если есть venv)
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")/.."
|
||
|
||
VENV="${PY_VENV:-.venv}"
|
||
HA_VENV="${HA_VENV:-.venv-ha}"
|
||
|
||
case "${1:-}" in
|
||
--setup)
|
||
python3 -m venv "$VENV"
|
||
"$VENV/bin/pip" install -q --upgrade pip
|
||
"$VENV/bin/pip" install -q cffi aiohttp pytest pytest-asyncio
|
||
;;
|
||
--setup-ha)
|
||
python3 -m venv "$HA_VENV"
|
||
"$HA_VENV/bin/pip" install -q --upgrade pip
|
||
"$HA_VENV/bin/pip" install -q -r tests/components/requirements.txt
|
||
;;
|
||
esac
|
||
|
||
if [ ! -x "$VENV/bin/python" ]; then
|
||
echo "py-ci: нет $VENV (запустите: scripts/py-ci.sh --setup)" >&2
|
||
exit 1
|
||
fi
|
||
|
||
"$VENV/bin/python" -m pytest tests/pyfglair -q
|
||
|
||
if [ -x "$HA_VENV/bin/python" ]; then
|
||
"$HA_VENV/bin/python" -m pytest tests/components -q
|
||
elif [ "${PY_CI_SKIP_HA:-0}" = "1" ]; then
|
||
echo "py-ci: HA-тесты пропущены (PY_CI_SKIP_HA=1)"
|
||
else
|
||
echo "py-ci: нет $HA_VENV — запустите scripts/py-ci.sh --setup-ha" >&2
|
||
exit 1
|
||
fi
|