MishaKav / pytest-coverage-comment

Comments a pull request with the pytest code coverage badge and full report

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Formatting table nicely

isFakeAccount opened this issue · comments

For some reason, the table in the readme is always messed up. Is there a way to format it nicely?

Following is my workflow

name: code coverage
on:
  - push
  - pull_request

jobs:
  pre-commit:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
        with:
          persist-credentials: false
      - uses: actions/setup-python@v3
      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements_dev.txt
          pip install .
      - name: Build coverage file
        run: |
          pytest --junitxml=pytest.xml --cov=psnawp_api | tee pytest-coverage.txt
        env:
          NPSSO_CODE: ${{ secrets.NPSSO_CODE }}
          USER_NAME: ${{ secrets.USER_NAME }}
      - name: PyTest Coverage comment
        id: coverageComment
        uses: MishaKav/pytest-coverage-comment@main
        with:
          hide-comment: true
          badge-title: Coverage
          pytest-coverage-path: ./pytest-coverage.txt
          junitxml-path: ./pytest.xml
      - name: Check the output coverage
        run: |
          echo "Coverage Percentage - ${{ steps.coverageComment.outputs.coverage }}"
          echo "Coverage Color - ${{ steps.coverageComment.outputs.color }}"
          echo "Coverage Html - ${{ steps.coverageComment.outputs.coverageHtml }}"
          echo "Summary Report - ${{ steps.coverageComment.outputs.summaryReport }}"

          echo "Coverage Warnings - ${{ steps.coverageComment.outputs.warnings }}"

          echo "Coverage Errors - ${{ steps.coverageComment.outputs.errors }}"
          echo "Coverage Failures - ${{ steps.coverageComment.outputs.failures }}"
          echo "Coverage Skipped - ${{ steps.coverageComment.outputs.skipped }}"
          echo "Coverage Tests - ${{ steps.coverageComment.outputs.tests }}"
          echo "Coverage Time - ${{ steps.coverageComment.outputs.time }}"
          echo "Not Success Test Info - ${{ steps.coverageComment.outputs.notSuccessTestInfo }}"

      - name: Update Readme with Coverage Html
        run: |
          sed -i '/<!-- Pytest Coverage Comment:Begin -->/,/<!-- Pytest Coverage Comment:End -->/c\<!-- Pytest Coverage Comment:Begin -->\n\${{ steps.coverageComment.outputs.coverageHtml }}\n${{ steps.coverageComment.outputs.summaryReport }}\n<!-- Pytest Coverage Comment:End -->' ./README.md

      - name: Commit & Push changes to Readme
        uses: actions-js/push@master
        with:
          branch: testing
          message: Update coverage on Readme
          github_token: ${{ secrets.GITHUB_TOKEN }}

Output: https://github.com/isFakeAccount/psnawp/blob/testing/README.md

"| Tests | Skipped | Failures | Errors | Time |
| ----- | ------- | -------- | -------- | ------------------ |
| 6 | 1 💤 | 0 ❌ | 0 🔥 | 0.605s ⏱️ |
"

Expected Output:

Tests Skipped Failures Errors Time
6 1 💤 0 ❌ 0 🔥 0.605s ⏱️

There is a way to format it nicely. The problem is not in action itself, the output comes as a string and not pure markdown.
You can add one simple step before, like this:

- name: Create Variable of Summary Report
  id: summary_report
  run: |
    SUMMARY_REPORT=${{ steps.coverageComment.outputs.summaryReport }}
    echo "::set-output name=content::$SUMMARY_REPORT"

- name: Update Readme with Coverage Html
  if: ${{ github.ref == 'refs/heads/main' }}
  run: |
    sed -i '/<!-- Pytest Coverage Comment:Begin -->/,/<!-- Pytest Coverage Comment:End -->/c\<!-- Pytest Coverage Comment:Begin -->\n\${{ steps.summary_report.outputs.content }}\n<!-- Pytest Coverage Comment:End -->' ./README.md