diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 487d1346..bf6c5237 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -80,41 +80,9 @@ jobs: with: python-version: '3.11' cache: pip - - name: Install python dependencies - run: | - python -m pip install --upgrade pip setuptools wheel - python -m pip install --upgrade hatch + - name: Install Hatch + uses: pypa/hatch@a3c83ab3d481fbc2dc91dd0088628817488dd1d5 - name: Run test suite with coverage - run: hatch run cov-ci - - name: Upload test results - if: always() - uses: actions/upload-artifact@v4 - with: - name: test-results - retention-days: 1 - path: pytest-junit.xml - - name: Upload coverage results - if: always() - uses: actions/upload-artifact@v4 - with: - name: coverage-results - retention-days: 1 - path: pytest-cobertura.xml - - run: rm ./reports/coverage/.gitignore - - name: Generate coverage badge - if: github.ref == 'refs/heads/master' - run: hatch run cov-badge - - name: Deploy reports to GitHub Pages - if: github.ref == 'refs/heads/master' - uses: JamesIves/github-pages-deploy-action@65b5dfd4f5bcd3a7403bbc2959c144256167464e # v4.5.0 - with: - folder: ./reports - - event_file: - runs-on: ubuntu-22.04 - steps: - - uses: actions/upload-artifact@v4 - with: - name: event-file - retention-days: 1 - path: ${{ github.event_path }} + run: hatch run cov + - name: Upload coverage data to coveralls.io + uses: coverallsapp/github-action@643bc377ffa44ace6394b2b5d0d3950076de9f63 # v2.3.0 diff --git a/.github/workflows/reports.yml b/.github/workflows/reports.yml deleted file mode 100644 index 2a84c196..00000000 --- a/.github/workflows/reports.yml +++ /dev/null @@ -1,78 +0,0 @@ -name: Reports - -on: - workflow_run: - workflows: [CI] - types: - - completed -permissions: {} - -jobs: - # Ref: https://github.com/EnricoMi/publish-unit-test-result-action#support-fork-repositories-and-dependabot-branches - test-results: - runs-on: ubuntu-22.04 - if: github.event.workflow_run.conclusion != 'skipped' - permissions: - checks: write - # required to create pull request comments - pull-requests: write - # required by download step to access artifacts API - actions: read - steps: - - name: Download and Extract Artifacts - uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 - with: - run_id: ${{ github.event.workflow_run.id }} - path: artifacts - - name: Publish Test Results - uses: EnricoMi/publish-unit-test-result-action@30eadd5010312f995f0d3b3cff7fe2984f69409e # v2.16.1 - with: - comment_title: ':clipboard: Pytest Results' - commit: ${{ github.event.workflow_run.head_sha }} - event_file: artifacts/event-file/event.json - event_name: ${{ github.event.workflow_run.event }} - files: artifacts/test-results/pytest-junit.xml - - coverage-results: - runs-on: ubuntu-22.04 - if: github.event.workflow_run.conclusion != 'skipped' - permissions: - # required to create pull request comments - pull-requests: write - # required by download step to access artifacts API - actions: read - steps: - - name: Download and Extract Artifacts - uses: dawidd6/action-download-artifact@09f2f74827fd3a8607589e5ad7f9398816f540fe # v3.1.4 - with: - run_id: ${{ github.event.workflow_run.id }} - path: artifacts - # Ref: https://github.com/irongut/CodeCoverageSummary#usage - - name: Generate Code Coverage Report - uses: irongut/CodeCoverageSummary@51cc3a756ddcd398d447c044c02cb6aa83fdae95 # v1.3.0 - with: - filename: artifacts/coverage-results/pytest-cobertura.xml - badge: true - format: markdown - hide_complexity: true - output: both - - name: Add header to code coverage report - run: | - sed -i '1s/^/## :clipboard: Code Coverage\n/' code-coverage-results.md - - name: Write to Job Summary - run: | - cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY - - name: Get Pull Request number - run: | - echo "number=$(jq .pull_request.number artifacts/event-file/event.json)" >> $GITHUB_OUTPUT - id: get-pr-number - # Ref: https://github.com/marocchino/sticky-pull-request-comment#inputs - - name: Add Code Coverage PR Comment - if: ${{ steps.get-pr-number.outputs.number }} != null - uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 # v2.9.0 - with: - recreate: true - number: ${{ steps.get-pr-number.outputs.number }} - path: code-coverage-results.md - - # TODO: Coverage badge diff --git a/pyproject.toml b/pyproject.toml index bff44a7c..3b33106f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -65,8 +65,7 @@ version = "3.2.0" [project.optional-dependencies] dev = [ - "fuji[lint]", - "fuji[testing]" + "fuji[lint,testing]" ] docs = [ "myst-parser~=2.0", @@ -81,7 +80,6 @@ report = [ "jupyter~=1.0" ] testing = [ - "genbadge[coverage]~=1.1", "pytest~=8.0", "pytest-cov~=5.0", "pytest-randomly~=3.15", @@ -125,7 +123,6 @@ features = [ [tool.hatch.envs.default.scripts] cov = "pytest --cov {args}" -cov-badge = "genbadge coverage --input-file=pytest-cobertura.xml --output-file=./reports/coverage/coveragebadge.svg" cov-ci = "pytest --cov --junitxml=pytest-junit.xml --cov-report=xml:pytest-cobertura.xml --cov-report=html:./reports/coverage/ {args}" lint = "pre-commit run --all-files --color=always {args}" test = "pytest {args}"