|
| 1 | +# name: Tests & Coverage |
| 2 | + |
| 3 | +# on: |
| 4 | +# push: |
| 5 | +# branches: |
| 6 | +# - main |
| 7 | + |
| 8 | +# permissions: |
| 9 | +# contents: write |
| 10 | + |
| 11 | +# jobs: |
| 12 | +# test-and-coverage: |
| 13 | +# runs-on: ubuntu-latest |
| 14 | +# steps: |
| 15 | +# - uses: actions/checkout@v3 |
| 16 | +# - name: Install dependencies |
| 17 | +# run: sudo apt-get update && sudo apt-get install -y make gcc build-essential gcovr |
| 18 | + |
| 19 | +# - name: Build and run unit tests |
| 20 | +# id: runtest |
| 21 | +# run: | |
| 22 | +# cd Lab1 |
| 23 | +# make test_checksum |
| 24 | +# OUTPUT=$(./Lab1 2>&1) |
| 25 | +# echo "$OUTPUT" |
| 26 | +# # Parse Unity output: "X Tests Y Failures Z Ignored" |
| 27 | +# TESTS=$(echo "$OUTPUT" | grep -oP '\d+(?=\s+Tests)' | head -1 || echo "0") |
| 28 | +# FAILURES=$(echo "$OUTPUT" | grep -oP '\d+(?=\s+Failures)' | head -1 || echo "0") |
| 29 | +# PASSED=$((TESTS - FAILURES)) |
| 30 | +# echo "tests=$TESTS" >> $GITHUB_OUTPUT |
| 31 | +# echo "passed=$PASSED" >> $GITHUB_OUTPUT |
| 32 | +# echo "failed=$FAILURES" >> $GITHUB_OUTPUT |
| 33 | + |
| 34 | +# - name: Run coverage analysis |
| 35 | +# id: runcov |
| 36 | +# run: | |
| 37 | +# cd Lab1 |
| 38 | +# make coverage |
| 39 | +# PCT=$(grep 'Lines executed' coverage_checksum.txt | head -1 | sed -E 's/.*:([0-9.]+)%.*$/\1/') |
| 40 | +# echo "coverage=$PCT" >> $GITHUB_OUTPUT |
| 41 | + |
| 42 | +# - name: Update README badges |
| 43 | +# if: success() |
| 44 | +# run: | |
| 45 | +# TESTS=${{ steps.runtest.outputs.tests }} |
| 46 | +# PASSED=${{ steps.runtest.outputs.passed }} |
| 47 | +# FAILED=${{ steps.runtest.outputs.failed }} |
| 48 | +# PCT=${{ steps.runcov.outputs.coverage }} |
| 49 | + |
| 50 | +# # Determine test badge color |
| 51 | +# if [ "$FAILED" -eq 0 ] && [ "$PASSED" -gt 0 ]; then TEST_COLOR="brightgreen"; else TEST_COLOR="red"; fi |
| 52 | + |
| 53 | +# # Determine coverage badge color based on percentage |
| 54 | +# if (( $(echo "$PCT >= 80" | bc -l) )); then COVERAGE_COLOR="brightgreen"; elif (( $(echo "$PCT >= 60" | bc -l) )); then COVERAGE_COLOR="yellowgreen"; elif (( $(echo "$PCT >= 40" | bc -l) )); then COVERAGE_COLOR="orange"; else COVERAGE_COLOR="red"; fi |
| 55 | + |
| 56 | +# # Update both badges in README |
| 57 | +# sed -i "s|badge/tests-[^-]*-[a-z]*|badge/tests-${PASSED}/${TESTS}-${TEST_COLOR}|" README.md |
| 58 | +# sed -i "s|badge/coverage-[^-]*-[a-z]*|badge/coverage-${PCT}%25-${COVERAGE_COLOR}|" README.md |
| 59 | + |
| 60 | +# # Check if README actually changed |
| 61 | +# if git diff --quiet README.md; then |
| 62 | +# echo "Badges unchanged, skipping commit and push" |
| 63 | +# else |
| 64 | +# echo "Badges updated, committing changes" |
| 65 | +# git config user.name "github-actions[bot]" |
| 66 | +# git config user.email "github-actions[bot]@users.noreply.github.com" |
| 67 | +# git add README.md |
| 68 | +# git commit -m "Update test (${PASSED}/${TESTS}) and coverage (${PCT}%) badges" |
| 69 | +# git push |
| 70 | +# fi |
0 commit comments