Skip to content

Tests

Tests #3487

Workflow file for this run

name: Tests
on:
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: "0 0 * * 0"
concurrency:
group: tests-${{ github.ref }}
cancel-in-progress: true
jobs:
lint:
name: Lint
runs-on: ubuntu-latest
env:
ENV: dev
steps:
- uses: actions/checkout@v4
with:
# This is needed for gitlint to work
fetch-depth: 0
- name: Install poetry
run: pipx install poetry
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.9"
cache: "poetry"
- name: Set UID
run: echo "UID=$(id --user)" > .env
- name: Install dependencies
run: poetry install
- name: Run gitlint
run: poetry run gitlint --contrib contrib-title-conventional-commits
- name: Check code format
run: poetry run ruff format --check .
- name: Check code style
run: poetry run ruff check .
- name: Run migration check
run: poetry run python manage.py makemigrations --check --dry-run --no-input
- name: Run reuse
run: poetry run reuse lint
docker-tests:
name: Docker tests
needs: [lint]
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Build the project
run: |
echo "UID=$(id --user)" > .env
docker compose up -d --build
- name: Run tests
run: docker compose exec -T caluma poetry run pytest --no-cov-on-fail --cov --create-db -vv
package-tests:
name: Package tests
needs: [lint]
runs-on: ubuntu-latest
env:
ENV: dev
services:
postgres:
image: postgres:14-alpine
env:
POSTGRES_USER: caluma
POSTGRES_PASSWORD: caluma
options: >-
--health-cmd pg_isready
--health-interval 10s
--health-timeout 5s
--health-retries 5
ports:
- 5432:5432
steps:
- uses: actions/checkout@v4
- name: Install poetry
run: pipx install poetry
- name: Setup python
uses: actions/setup-python@v5
with:
python-version: "3.9"
cache: "poetry"
- name: Set UID
run: echo "UID=$(id --user)" > .env
- name: Install dependencies
run: poetry install
- name: Build and install package
run: |
poetry build
pip install dist/caluma-*.whl
- name: Run tests
run: poetry run pytest --no-cov-on-fail --cov --create-db -vv
compatibility-tests-postgres-12:
name: "Compatibility tests"
uses: ./.github/workflows/compatibility-tests.yml
needs: [lint]
with:
postgres: "12"
compatibility-tests-postgres-13:
name: "Compatibility tests"
uses: ./.github/workflows/compatibility-tests.yml
needs: [lint]
with:
postgres: "13"
compatibility-tests-postgres-14:
name: "Compatibility tests"
uses: ./.github/workflows/compatibility-tests.yml
needs: [lint]
with:
postgres: "14"
compatibility-tests-postgres-15:
name: "Compatibility tests"
uses: ./.github/workflows/compatibility-tests.yml
needs: [lint]
with:
postgres: "15"
compatibility-tests-postgres-16:
name: "Compatibility tests"
uses: ./.github/workflows/compatibility-tests.yml
needs: [lint]
with:
postgres: "16"