diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 14a5203..e6d6b49 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -27,17 +27,7 @@ jobs: run: uv sync --all-extras - name: Run unit tests - run: | - uv run pytest tests/unit/ -m "not integration" \ - --cov=python_repositories \ - --cov-report= - - - name: Upload unit coverage - uses: actions/upload-artifact@v3 - with: - name: coverage-unit - path: .coverage - retention-days: 1 + run: uv run pytest tests/unit/ -m "not integration" -v integration-tests: runs-on: ubuntu-latest @@ -62,17 +52,7 @@ jobs: run: docker info - name: Run integration tests - run: | - uv run pytest -m integration \ - --cov=python_repositories \ - --cov-report= - - - name: Upload integration coverage - uses: actions/upload-artifact@v3 - with: - name: coverage-integration - path: .coverage - retention-days: 1 + run: uv run pytest -m integration -v coverage-report: needs: [unit-tests, integration-tests] @@ -95,22 +75,17 @@ jobs: UV_LINK_MODE: copy run: uv sync --all-extras - - name: Download unit coverage - uses: actions/download-artifact@v3 - with: - name: coverage-unit - path: coverage-unit - - - name: Download integration coverage - uses: actions/download-artifact@v3 - with: - name: coverage-integration - path: coverage-integration - - - name: Combine coverage report + # Gitea Actions lacks cross-job artifact download APIs; re-run tests here + # with --cov-append on one runner for an accurate combined report. + - name: Run tests with combined coverage run: | - uv run coverage combine coverage-unit/.coverage coverage-integration/.coverage - uv run coverage report -m --include='python_repositories/*' > coverage.txt + uv run pytest tests/unit/ -m "not integration" \ + --cov=python_repositories \ + --cov-report= + uv run pytest -m integration \ + --cov=python_repositories \ + --cov-append \ + --cov-report=term-missing > coverage.txt cat coverage.txt - name: Post coverage summary to PR diff --git a/README.md b/README.md index 8cc4587..09d26eb 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ uv run pytest -v # full suite (requires Doc Integration tests are marked with `@pytest.mark.integration` and require Docker (testcontainers). Run unit tests alone for quick local feedback. -CI runs unit and integration tests in parallel, then merges coverage into a single report (see [`.gitea/workflows/test.yml`](.gitea/workflows/test.yml)). +CI runs unit and integration tests in parallel for fast feedback; a follow-up job re-runs both suites with `--cov-append` to produce a combined coverage report (Gitea Actions does not support cross-job artifact download yet). `pre-commit` is included in the dev dependency group. `uv sync` installs the CLI, but git does not run hooks until you install them with `pre-commit install` (one time per clone). After that, commits run the checks defined in [`.pre-commit-config.yaml`](.pre-commit-config.yaml) (ruff, mypy, pyupgrade, prettier, and general file hygiene).