Development #770
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' | |
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' | |
services: | |
postgres: | |
image: 'postgres:14-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 | |
mysql: | |
image: 'mysql:8' | |
ports: | |
- 3306 | |
env: | |
MYSQL_DATABASE: test_dsmrreader | |
MYSQL_ALLOW_EMPTY_PASSWORD: yes | |
options: --health-cmd="mysqladmin ping" --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: Run MySQL 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.mysql | |
DJANGO_DATABASE_HOST: 127.0.0.1 | |
DJANGO_DATABASE_PORT: '${{ job.services.mysql.ports[3306] }}' | |
DJANGO_DATABASE_NAME: dsmrreader # NOT a typo, django prefixes "test_" automatically. | |
DJANGO_DATABASE_USER: root | |
DJANGO_DATABASE_PASSWORD: '' | |
- name: Code coverage upload | |
uses: codecov/codecov-action@v3 | |
# 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.7' | |
- '3.8' | |
- '3.9' | |
- '3.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/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 |