Fix CI tests for WIP branch #1196 #809
This file contains 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: Automated tests | |
on: | |
push: | |
branches: | |
- 'v*' | |
- 'development' | |
- 'work-in-progress/*' # Future TODO: Remove me | |
pull_request: | |
branches-ignore: | |
- 'dependabot/' | |
jobs: | |
# The most verbose and complete job. | |
main_test: | |
name: 'Python ${{ matrix.python-version }}' | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 # Don't run forever when stale | |
strategy: | |
matrix: | |
python-version: | |
- '3.11' # @TODO: Bump me to 3.12 later | |
services: | |
postgres: | |
image: 'postgres:15-alpine' | |
ports: | |
- 5432 | |
env: | |
POSTGRES_USER: root | |
POSTGRES_DB: test_dsmrreader | |
POSTGRES_PASSWORD: testpasswd | |
options: --health-cmd pg_isready --health-interval 5s --health-timeout 1s --health-retries 10 | |
env: | |
# Do not log verbosely | |
DSMRREADER_LOGLEVEL: ERROR | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install APT dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gettext libgettextpo-dev libmariadb-dev-compat libmariadb-dev | |
- name: Cached dependencies & virtualenv | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cache/pypoetry/ | |
~/dsmr-reader/.venv | |
key: dependencies-update-check-${{ hashFiles('poetry.lock') }} | |
- name: Install dependencies | |
run: | | |
pip install --upgrade pip poetry | |
poetry config virtualenvs.in-project true | |
poetry check | |
poetry run pip install -r $GITHUB_WORKSPACE/dsmrreader/provisioning/requirements/base.txt -r $GITHUB_WORKSPACE/dsmrreader/provisioning/requirements/dev.txt | |
- name: Check flake8 | |
run: poetry run flake8 | |
- name: Check translation status | |
run: sphinx-intl stat -d dsmrreader/locales/ -d docs/_locale/ | grep -v "0 fuzzy, 0 untranslated" | grep -v changelog.po | wc -l | grep -e '^0$' | |
- name: Run SQLite tests | |
run: poetry run py.test --cov --cov-report=xml | |
env: | |
DJANGO_SETTINGS_MODULE: dsmrreader.config.test | |
DJANGO_SECRET_KEY: non-production-value | |
DJANGO_DATABASE_ENGINE: django.db.backends.sqlite3 | |
- name: Run PostgreSQL tests | |
run: poetry run py.test | |
env: | |
DJANGO_SETTINGS_MODULE: dsmrreader.config.test | |
DJANGO_SECRET_KEY: unsafe-test-value | |
DJANGO_DATABASE_ENGINE: django.db.backends.postgresql | |
DJANGO_DATABASE_HOST: 127.0.0.1 | |
DJANGO_DATABASE_PORT: '${{ job.services.postgres.ports[5432] }}' | |
DJANGO_DATABASE_NAME: test_dsmrreader | |
DJANGO_DATABASE_USER: root | |
DJANGO_DATABASE_PASSWORD: testpasswd | |
- name: Code coverage upload | |
uses: codecov/codecov-action@v4 | |
# Shallow tests for (older) supported Python versions. | |
matrix_tests: | |
needs: main_test | |
name: 'Python ${{ matrix.python-version }}' | |
runs-on: ubuntu-latest | |
timeout-minutes: 10 | |
strategy: | |
matrix: | |
python-version: | |
- '3.11' | |
env: | |
# Do not log verbosely | |
DSMRREADER_LOGLEVEL: ERROR | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install APT dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install -y gettext libgettextpo-dev libmariadb-dev-compat libmariadb-dev | |
- name: Cached dependencies & virtualenv | |
uses: actions/cache@v4 | |
with: | |
path: | | |
~/.cache/pypoetry/ | |
~/dsmr-reader/dsmr-reader/.venv | |
key: dependencies-update-check-${{ hashFiles('poetry.lock') }} | |
- name: Install dependencies | |
run: | | |
pip install --upgrade pip poetry | |
poetry config virtualenvs.in-project true | |
poetry check | |
poetry install | |
- name: Run SQLite tests | |
run: poetry run py.test --cov --cov-report=xml | |
env: | |
DJANGO_SETTINGS_MODULE: dsmrreader.config.test | |
DJANGO_SECRET_KEY: non-production-value | |
DJANGO_DATABASE_ENGINE: django.db.backends.sqlite3 |