mirror of
https://github.com/basnijholt/adaptive-lighting.git
synced 2026-09-19 02:04:05 +02:00
fix: restore hassfest and Home Assistant CI
## Summary - fix hassfest validation by replacing raw options-description URLs with Home Assistant translation placeholders - extend the pytest CI matrix to cover the latest patch release for each Home Assistant month, plus dev - align CI/dev container Python versions and tests with newer Home Assistant behavior ## Validation - GitHub Actions pytest matrix passed for 2024.12.5 through 2026.4.3 plus dev - Docker passed for linux/amd64 and linux/arm64 - hassfest, HACS validation, pre-commit, pre-commit.ci, markdown-code-runner, docs build, and Release Drafter passed
This commit is contained in:
parent
6cebe14a69
commit
c4b8e28ea8
28 changed files with 104 additions and 42 deletions
|
|
@ -9,6 +9,30 @@ sed -i '/^mypy-dev/d' core/requirements_test.txt
|
|||
|
||||
uv pip install -r core/requirements.txt
|
||||
uv pip install -r core/requirements_test.txt
|
||||
|
||||
# HA 2026.4+ imports aiohasupervisor from tests/components/conftest.py
|
||||
# but pins it in requirements_test_all.txt instead of requirements_test.txt.
|
||||
aiohasupervisor_req=""
|
||||
if [[ -f core/requirements_test_all.txt ]]; then
|
||||
aiohasupervisor_req="$(grep -m1 '^aiohasupervisor' core/requirements_test_all.txt || true)"
|
||||
fi
|
||||
if [[ -n "${aiohasupervisor_req}" ]]; then
|
||||
uv pip install "${aiohasupervisor_req}"
|
||||
fi
|
||||
|
||||
# HA 2026.4+ validates service translations through translations/en.json.
|
||||
# The core checkout keeps English source strings in strings.json, so seed en.json
|
||||
# in the temporary CI checkout before tests load integrations.
|
||||
for strings_file in core/homeassistant/components/*/strings.json; do
|
||||
[[ -f "${strings_file}" ]] || continue
|
||||
translations_dir="$(dirname "${strings_file}")/translations"
|
||||
en_translation="${translations_dir}/en.json"
|
||||
if [[ ! -f "${en_translation}" ]]; then
|
||||
mkdir -p "${translations_dir}"
|
||||
cp "${strings_file}" "${en_translation}"
|
||||
fi
|
||||
done
|
||||
|
||||
uv pip install -e core/
|
||||
uv pip install ulid-transform # this is in Adaptive-lighting's manifest.json
|
||||
uv pip install $(python test_dependencies.py)
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ pip install \
|
|||
|
||||
pip cache purge
|
||||
|
||||
uv venv --clear --python 3.13
|
||||
uv venv --clear --python 3.14.2
|
||||
./scripts/setup-dependencies
|
||||
./scripts/setup-symlinks
|
||||
uv run pre-commit install-hooks
|
||||
|
|
|
|||
|
|
@ -82,9 +82,13 @@ def get_python_version(ha_version: str) -> str:
|
|||
"""Determine Python version based on HA Core version."""
|
||||
parts = ha_version.split(".")
|
||||
year, month = int(parts[0]), int(parts[1])
|
||||
# 2024.x and 2025.1 use Python 3.12, 2025.2+ use Python 3.13
|
||||
# 2024.x and 2025.1 use Python 3.12.
|
||||
# 2025.2 through 2026.2 use Python 3.13.
|
||||
# 2026.3+ uses Python 3.14.
|
||||
if year == 2024 or (year == 2025 and month == 1):
|
||||
return "3.12"
|
||||
if year > 2026 or (year == 2026 and month >= 3):
|
||||
return "3.14.2"
|
||||
return "3.13"
|
||||
|
||||
|
||||
|
|
@ -97,7 +101,7 @@ def generate_matrix_yaml(versions: list[str]) -> str:
|
|||
lines.append(f' python-version: "{python_ver}"')
|
||||
# Add dev version
|
||||
lines.append(' - core-version: "dev"')
|
||||
lines.append(' python-version: "3.13"')
|
||||
lines.append(' python-version: "3.14.2"')
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue