name: Test package on: push: pull_request: workflow_dispatch: jobs: prepare: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Create matrix uses: fabiocaccamo/create-matrix-action@v3 id: create_matrix with: matrix: | python-version {3.8}, django-version {3.0, 3.1, 3.2, 4.0, 4.1, 4.2}, database {sqlite, postgres} python-version {3.9}, django-version {3.0, 3.1, 3.2, 4.0, 4.1, 4.2}, database {sqlite, postgres} python-version {3.10}, django-version {3.2, 4.0, 4.1, 4.2}, database {sqlite, postgres} python-version {3.11}, django-version {4.1, 4.2}, database {sqlite, postgres} outputs: matrix: ${{ steps.create_matrix.outputs.matrix }} lint: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.x' cache: 'pip' - name: Install tools needed run: | sudo apt install gettext python -m pip install --upgrade pip pip install tox - name: Check migrations run: | tox -e migrations - name: Check translations run: | tox -e translations test: needs: [prepare] runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: ${{fromJson(needs.prepare.outputs.matrix)}} services: postgres: image: postgres:latest env: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres POSTGRES_DB: postgres ports: - 5432:5432 # needed because the postgres container does not provide a healthcheck options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 steps: - uses: actions/checkout@v4 - name: Install psycopg2 prerequisites run: sudo apt install libpq-dev - name: Set up Python ${{ matrix.python-version }} uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} # cache: 'pip' - name: Cache virtualenv uses: actions/cache@v3 with: key: venv-${{ runner.os }}-${{ matrix.python-version }}-${{ hashFiles('requirements.txt') }}-${{ hashFiles('requirements-test.txt') }} path: ./venv - name: Create virtualenv run: | python -m venv ./venv source ./venv/bin/activate echo "$VIRTUAL_ENV/bin" >> $GITHUB_PATH echo "VIRTUAL_ENV=$VIRTUAL_ENV" >> $GITHUB_ENV - name: Upgrade pip version run: | pip install pip --upgrade - name: Install django run: | pip install "Django == ${{ matrix.django-version }}.*" - name: Install requirements run: | pip install -r requirements.txt pip install -r requirements-test.txt - name: Run tests env: DATABASE_ENGINE: ${{ matrix.database }} run: | coverage run --append --source=admin_interface runtests.py coverage report --show-missing coverage xml -o ./coverage.xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v3 with: fail_ci_if_error: false files: ./coverage.xml flags: unittests verbose: true