Repository navigation
Validate #158
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Validate | |
| on: | |
| push: | |
| pull_request: | |
| schedule: | |
| - cron: "0 0 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| jobs: | |
| validate-hacs: | |
| name: HACS Validation | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: HACS validation | |
| uses: hacs/action@main | |
| with: | |
| category: integration | |
| hassfest: | |
| name: Hassfest | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Hassfest validation | |
| uses: home-assistant/actions/hassfest@master | |
| # Failure boundary 1: the STUB-BASED unit suite. It never installs Home | |
| # Assistant -- the suite runs against the fake `homeassistant.*` modules that | |
| # tests/ injects. Only the two genuine third-party libs the production modules | |
| # import are installed (see requirements-test.txt). | |
| quality-gate: | |
| name: Quality Gate | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: "3.12" | |
| cache: pip | |
| cache-dependency-path: requirements-test.txt | |
| - name: Install lightweight unit-suite dependencies | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install -r requirements-test.txt | |
| - name: Run project quality gate | |
| run: python3 tools/quality_gate.py | |
| # Failure boundary 2: the REAL Home Assistant lifecycle. The only jobs that | |
| # install Home Assistant. Two explicitly pinned lanes: the last Python 3.13 | |
| # compatibility stack (HA 2026.2) and the current production stack | |
| # (HA 2026.7 on Python 3.14). Home Assistant itself is never | |
| # installed directly -- each lane's version comes from the exact | |
| # pytest-homeassistant-custom-component pin. | |
| ha-runtime-tests: | |
| name: HA Runtime Tests (${{ matrix.lane }}) | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| include: | |
| # pytest-homeassistant-custom-component 0.13.316 -> homeassistant 2026.2.3 | |
| - lane: "2026.2" | |
| python-version: "3.13" | |
| requirements: requirements-test-ha-2026.2.txt | |
| # pytest-homeassistant-custom-component 0.13.346 -> homeassistant 2026.7.2 | |
| - lane: "2026.7" | |
| python-version: "3.14" | |
| requirements: requirements-test-ha-2026.7.txt | |
| steps: | |
| - name: Check out repository | |
| uses: actions/checkout@v6 | |
| - name: Set up Python | |
| uses: actions/setup-python@v6 | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| cache: pip | |
| cache-dependency-path: ${{ matrix.requirements }} | |
| - name: Install Home Assistant test stack | |
| run: | | |
| python3 -m pip install --upgrade pip | |
| python3 -m pip install -r ${{ matrix.requirements }} | |
| - name: Show resolved Home Assistant stack | |
| run: python3 -m pip list | grep -Ei '^(homeassistant|pytest|pytest-asyncio|pytest-socket|pytest-homeassistant-custom-component|bleak) ' | |
| - name: Run Home Assistant integration tests | |
| # Explicit -c: the repo-root pytest.ini disables the Home Assistant | |
| # plugin for the stub-based suite, which this suite must NOT inherit. | |
| run: python3 -m pytest -c tests_ha/pytest.ini tests_ha -q |