Skip to content

Merge commit '8e5c2f0e61600b8f06540d37d8a70051e1b6f777' into develop #9

Merge commit '8e5c2f0e61600b8f06540d37d8a70051e1b6f777' into develop

Merge commit '8e5c2f0e61600b8f06540d37d8a70051e1b6f777' into develop #9

Workflow file for this run

name: CI
on:
push:
branches:
- main
- develop
tags-ignore:
- "**"
pull_request:
workflow_dispatch:
env:
DEFAULT_PYTHON: "3.12"
jobs:
info:
name: Collect information
outputs:
python_cache_key: ${{ steps.generate_python_cache_key.outputs.key }}
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v4.2.2
- name: Generate Python venv restore key
id: generate_python_cache_key
run: |
echo "key=venv-${{
hashFiles('requirements.test.txt') }}-${{
hashFiles('requirements.txt') }}" >> $GITHUB_OUTPUT
homeassistant:
name: HA validation
runs-on: ubuntu-latest
steps:
- name: HACS
uses: hacs/action@main
with:
category: integration
- name: Check out code
uses: actions/checkout@v4
- name: hassfest
uses: home-assistant/actions/hassfest@master
prepare:
name: Prepare
runs-on: ubuntu-latest
needs:
- info
steps:
- name: Check out code
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore Python virtual environment
id: cache-venv
uses: actions/cache@v4.2.0
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ needs.info.outputs.python_cache_key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python --version
pip install -r requirements.txt
pip install -r requirements.test.txt
mypy:
name: Check mypy
runs-on: ubuntu-latest
needs:
- info
- prepare
steps:
- name: Check out code
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v4.2.0
with:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ needs.info.outputs.python_cache_key }}
- name: Register mypy problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/mypy.json"
- name: Run mypy
run: |
. venv/bin/activate
python --version
mypy custom_components tests
pytest:
name: Run tests
runs-on: ubuntu-latest
needs:
- info
- prepare
- mypy
steps:
- name: Check out code from GitHub
uses: actions/checkout@v4.2.2
- name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/setup-python@v5.3.0
with:
python-version: ${{ env.DEFAULT_PYTHON }}
- name: Restore Python ${{ env.DEFAULT_PYTHON }} virtual environment
id: cache-venv
uses: actions/cache/restore@v4.2.0
with:
path: venv
fail-on-cache-miss: true
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-venv-${{ needs.info.outputs.python_cache_key }}
- name: Register Python problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/python.json"
- name: Register pytest slow test problem matcher
run: |
echo "::add-matcher::.github/workflows/matchers/pytest-slow.json"
- name: Run pytest
timeout-minutes: 60
id: pytest
env:
PYTHONDONTWRITEBYTECODE: 1
run: |
. venv/bin/activate
python --version
set -o pipefail
pytest \
--durations=2 \
--numprocesses auto \
--dist=loadfile \
--cov=custom_components/volvo_cars \
--cov-report=xml \
-o console_output_style=count \
-p no:sugar \
-vv \
./tests/
2>&1 | tee pytest-${{ steps.python.outputs.python-version }}.txt
- name: Upload pytest output
if: success() || failure() && steps.pytest.conclusion == 'failure'
uses: actions/upload-artifact@v4.6.0
with:
name: pytest-${{ steps.python.outputs.python-version }}
path: pytest.txt
overwrite: true
- name: Upload coverage artifact
uses: actions/upload-artifact@v4.6.0
with:
name: coverage-${{ steps.python.outputs.python-version }}
path: coverage.xml
overwrite: true