diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index a0cb25d..b7e1c9c 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -2,8 +2,75 @@ name: Run Tests on: [push] jobs: - tests: - name: ${{ matrix.target }} tests + lint: + name: Lint + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Export PYTHONPATH + shell: bash + run: | + set -euo pipefail + echo "PYTHONPATH=${{ github.workspace }}" >> "$GITHUB_ENV" + + - name: Prepare Python environment + uses: ./.gitea/actions/setup-python-env + with: + use-system-python: 'true' + run-db-setup: 'false' + + - name: Run lint checks + run: ruff check . + + unit: + name: Unit Tests + runs-on: ubuntu-latest + env: + DATABASE_DRIVER: postgresql + DATABASE_HOST: postgres + DATABASE_PORT: '5432' + DATABASE_NAME: calminer_ci + DATABASE_USER: calminer + DATABASE_PASSWORD: secret + DATABASE_SCHEMA: public + DATABASE_SUPERUSER: calminer + DATABASE_SUPERUSER_PASSWORD: secret + DATABASE_SUPERUSER_DB: calminer_ci + DATABASE_URL: postgresql+psycopg2://calminer:secret@postgres:5432/calminer_ci + services: + postgres: + image: postgres:16 + env: + POSTGRES_DB: calminer_ci + POSTGRES_USER: calminer + POSTGRES_PASSWORD: secret + options: >- + --health-cmd "pg_isready -U calminer -d calminer_ci" + --health-interval 10s + --health-timeout 5s + --health-retries 10 + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Export PYTHONPATH + shell: bash + run: | + set -euo pipefail + echo "PYTHONPATH=${{ github.workspace }}" >> "$GITHUB_ENV" + + - name: Prepare Python environment + uses: ./.gitea/actions/setup-python-env + with: + use-system-python: 'true' + + - name: Run unit tests + run: pytest tests/unit + + e2e: + name: E2E Tests runs-on: ubuntu-latest container: mcr.microsoft.com/playwright/python:v1.55.0-jammy env: @@ -18,10 +85,6 @@ jobs: DATABASE_SUPERUSER_PASSWORD: secret DATABASE_SUPERUSER_DB: calminer_ci DATABASE_URL: postgresql+psycopg2://calminer:secret@postgres:5432/calminer_ci - strategy: - fail-fast: false - matrix: - target: [unit, e2e, lint] services: postgres: image: postgres:16 @@ -50,29 +113,13 @@ jobs: shell: bash run: | set -euo pipefail - echo "PYTHONPATH=/workspace/allucanget/calminer" >> "$GITHUB_ENV" - - # - name: Cache pip dependencies - # uses: actions/cache@v4 - # with: - # path: ~/.cache/pip - # key: ${{ runner.os }}-pip-${{ hashFiles('requirements.txt', 'requirements-test.txt') }} - # restore-keys: | - # ${{ runner.os }}-pip- + echo "PYTHONPATH=${{ github.workspace }}" >> "$GITHUB_ENV" - name: Prepare Python environment uses: ./.gitea/actions/setup-python-env with: - install-playwright: ${{ matrix.target == 'e2e' }} use-system-python: 'true' - run-db-setup: ${{ matrix.target != 'lint' }} + install-playwright: 'true' - - name: Run tests - run: | - if [ "${{ matrix.target }}" = "unit" ]; then - pytest tests/unit - elif [ "${{ matrix.target }}" = "lint" ]; then - ruff check . - else - pytest tests/e2e - fi + - name: Run e2e tests + run: pytest tests/e2e