name: "Test suite" on: push: branches: - main - master pull_request: branches: - main - master workflow_call: defaults: run: shell: bash jobs: pytest: name: "🧪 Test package using pytest" runs-on: ubuntu-latest if: ${{ github.event_name == 'push' || github.event_name == 'pull_request' || github.event_name == 'workflow_dispatch' }} # If you need a database to perform your tests # services: # postgres: # image: postgres # env: # POSTGRES_USER: username # POSTGRES_PASSWORD: password # POSTGRES_DB: db # options: >- # --health-cmd pg_isready # --health-interval 10s # --health-timeout 5s # --health-retries 5 # ports: # - "5432:5432" steps: - name: "⬇️ Checkout repository" uses: actions/checkout@v4 - name: "🔨 Setup Python" uses: actions/setup-python@v3 - name: "🔨 Setup Poetry" uses: abatilo/actions-poetry@v2.4.0 - name: "🔨 Setup Poetry Python environment" id: pyenv uses: Steffo99/actions-poetry-deps@v0.2.5 - name: "🧪 Run tests" run: | source ${{ steps.pyenv.outputs.pyenv }}/activate pytest --verbose --cov=. --cov-report=html - name: "⬆️ Upload coverage" uses: actions/upload-artifact@v4 with: name: "Coverage" path: htmlcov