Skip to content

Commit

Permalink
Add Unit Test Coverage Threshold and Badge (Boeing#72)
Browse files Browse the repository at this point in the history
* adding badge workflow

* updating execution rules

* fixing yaml error

* fixing yaml

* running script

* switching to inline script

* updating coverage threshold

* chore: Updated coverage badge.

* updating coverage threshold

* chore: Updated coverage badge.

* updating badge job

* chore: Updated coverage badge.

* updating badge job

* chore: Updated coverage badge.

* updates before PR review

* fix name

* fixing status logic

* changing index file

* fixing setting the var

* chore: Updated coverage badge.

* adding index to git add cmd

* chore: Updated coverage badge.

* adding back verbose unit test output

* chore: Updated coverage badge.

* push the badge changes to the branch

---------

Co-authored-by: GitHub Action <[email protected]>
  • Loading branch information
2 people authored and shiina4119 committed Aug 23, 2024
1 parent ca39993 commit b6e5010
Show file tree
Hide file tree
Showing 3 changed files with 66 additions and 3 deletions.
65 changes: 62 additions & 3 deletions .github/workflows/go.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@ on:
pull_request:

jobs:

download:
runs-on: ubuntu-latest
steps:
Expand Down Expand Up @@ -60,13 +59,73 @@ jobs:
test:
needs: download
runs-on: ubuntu-latest
name: Update coverage badge
steps:
- uses: actions/checkout@v3
with:
persist-credentials: false # otherwise, the token used is the GITHUB_TOKEN, instead of your personal access token.
fetch-depth: 0 # otherwise, there would be errors pushing refs to the destination repository.

- name: Set up Go
uses: actions/setup-go@v4
with:
go-version: 1.21

- name: Test
run: go test -v ./...
- name: Unit test
run: go test -v -cover -coverprofile coverage.out ./...

- name: Check coverage
id: check-coverage
run: |
# Validate that the coverage is above or at the required threshold
echo "Checking if test coverage is above threshold ..."
echo "Coverage threshold: $COVERAGE_THRESHOLD %"
totalCoverage=`go tool cover -func coverage.out | grep total | grep -Eo '[0-9]+\.[0-9]+'`
echo "Current test coverage : $totalCoverage %"
if (( $(echo "$COVERAGE_THRESHOLD <= $totalCoverage" | bc -l) )); then
echo "Coverage OK"
else
echo "Current test coverage is below threshold"
exit 1
fi
echo "total_coverage=$totalCoverage" >> "$GITHUB_OUTPUT"
env:
COVERAGE_THRESHOLD: 95

- name: Create badge img tag and apply to README files
id: generate-badge
run: |
# Create Badge URL
# Badge will always be green because of coverage threshold check
# so we just have to populate the total coverage
totalCoverage=${{ steps.check-coverage.outputs.total_coverage }}
BADGE_URL=https://img.shields.io/badge/Coverage-$totalCoverage%25-brightgreen
BADGE_IMG_TAG="<img id=\"cov\" src=\"$BADGE_URL\" alt=\"Code Coverage\" />"
# Update README.md and index.md
for markdown_file in README.md index.md; do
sed -i "/id=\"cov\"/c\\${BADGE_IMG_TAG}" $markdown_file
done
# Check to see if files were updated
if [[ `git status --porcelain` ]]; then
echo "badge_updates=true" >> "$GITHUB_OUTPUT"
else
echo "badge_updates=false" >> "$GITHUB_OUTPUT"
fi
- name: Commit changes
if: steps.generate-badge.outputs.badge_updates == 'true'
run: |
git config --local user.email "[email protected]"
git config --local user.name "GitHub Action"
git add README.md index.md
git commit -m "chore: Updated coverage badge."
- name: Push changes
if: steps.generate-badge.outputs.badge_updates == 'true'
uses: ad-m/github-push-action@master
with:
github_token: ${{ github.token }}
branch: ${{ github.ref }}
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
</div>

<p align="center">
<img id="cov" src="https://img.shields.io/badge/Coverage-95.8%25-brightgreen" alt="Code Coverage" />

<a href="https://opensource.org/licenses/Apache-2.0">
<img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="Apache 2 License">
</a>
Expand Down
2 changes: 2 additions & 0 deletions index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
</div>

<p align="center">
<img id="cov" src="https://img.shields.io/badge/Coverage-95.8%25-brightgreen" alt="Code Coverage" />

<a href="https://opensource.org/licenses/Apache-2.0">
<img src="https://img.shields.io/badge/License-Apache_2.0-blue.svg" alt="Apache 2 License">
</a>
Expand Down

0 comments on commit b6e5010

Please sign in to comment.