mirror of
https://github.com/spiral-project/ihatemoney.git
synced 2025-04-28 17:32:38 +02:00

Currently, linting is done in one specific job of the big test Matrix, and it's very easy to overlook. But we want linting to be the first thing to fix. Also reorganize and rename jobs for readability. Finally, use python 3.11 for lint/docs because python 3.12 seems to break dev install.
103 lines
3.2 KiB
YAML
103 lines
3.2 KiB
YAML
name: Unit tests
|
|
|
|
on:
|
|
push:
|
|
branches: [ 'master', 'stable-*' ]
|
|
pull_request:
|
|
branches: [ 'master', 'stable-*' ]
|
|
|
|
jobs:
|
|
test:
|
|
|
|
runs-on: ubuntu-latest
|
|
|
|
# Use postgresql and MariaDB versions of Debian buster
|
|
services:
|
|
postgres:
|
|
image: postgres:11
|
|
ports:
|
|
- 5432:5432
|
|
env:
|
|
POSTGRES_USER: postgres
|
|
POSTGRES_PASSWORD: ihatemoney
|
|
POSTGRES_DB: ihatemoney_ci
|
|
options:
|
|
--health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
mariadb:
|
|
image: mariadb:10.3
|
|
env:
|
|
MARIADB_ROOT_PASSWORD: ihatemoney
|
|
MARIADB_DATABASE: ihatemoney_ci
|
|
options: >-
|
|
--health-cmd="mysqladmin ping" --health-interval=10s --health-timeout=5s --health-retries=3
|
|
ports:
|
|
- 3306:3306
|
|
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
python-version: [3.7, 3.8, 3.9, "3.10", "3.11", "3.12"]
|
|
dependencies: [normal]
|
|
database: [sqlite]
|
|
# Test other databases only with one version of Python (Debian buster has 3.7)
|
|
include:
|
|
- python-version: 3.7
|
|
dependencies: normal
|
|
database: postgresql
|
|
- python-version: 3.7
|
|
dependencies: normal
|
|
database: mariadb
|
|
# Try a few variants with the minimal versions supported
|
|
- python-version: 3.7
|
|
dependencies: minimal
|
|
database: sqlite
|
|
- python-version: 3.7
|
|
dependencies: minimal
|
|
database: postgresql
|
|
- python-version: 3.7
|
|
dependencies: minimal
|
|
database: mariadb
|
|
- python-version: 3.9
|
|
dependencies: minimal
|
|
database: sqlite
|
|
- python-version: "3.10"
|
|
dependencies: minimal
|
|
database: sqlite
|
|
- python-version: "3.11"
|
|
dependencies: minimal
|
|
database: sqlite
|
|
- python-version: "3.12"
|
|
dependencies: minimal
|
|
database: sqlite
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Set up Python ${{ matrix.python-version }}
|
|
uses: actions/setup-python@v4
|
|
with:
|
|
python-version: ${{ matrix.python-version }}
|
|
cache: 'pip'
|
|
cache-dependency-path: '**/pyproject.toml'
|
|
- name: Change dependencies to minimal supported versions
|
|
run: sed -i -e 's/>=/==/g; s/~=.*==\(.*\)/==\1/g; s/~=/==/g;' pyproject.toml
|
|
if: matrix.dependencies == 'minimal'
|
|
- name: Install dependencies
|
|
run: |
|
|
python -m pip install --upgrade pip
|
|
python -m pip install tox
|
|
# Run tox using the version of Python in `PATH`
|
|
- name: Run Tox with sqlite
|
|
run: tox -e py
|
|
if: matrix.database == 'sqlite'
|
|
env:
|
|
TESTING_SQLALCHEMY_DATABASE_URI: 'sqlite:///budget.db'
|
|
- name: Run Tox with postgresql
|
|
run: tox -e py
|
|
if: matrix.database == 'postgresql'
|
|
env:
|
|
TESTING_SQLALCHEMY_DATABASE_URI: 'postgresql+psycopg2://postgres:ihatemoney@localhost:5432/ihatemoney_ci'
|
|
- name: Run Tox with mariadb
|
|
run: tox -e py
|
|
if: matrix.database == 'mariadb'
|
|
env:
|
|
TESTING_SQLALCHEMY_DATABASE_URI: 'mysql+pymysql://root:ihatemoney@localhost:3306/ihatemoney_ci'
|