PROJECTS NOTES HOME

Fail a github action if coverage requirements are not met

For those of you that after reach push want to be informed by email that your code repository is covered by a particular percentage of test coverage (what is test coverage?), here is a little helper for you:

1 How

tests.yml:

name: Tests

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

jobs:
  tests:
    runs-on: ubuntu-latest

    steps:
      - name: Checkout repository
	uses: actions/checkout@v4

      - name: Set up Python
	uses: actions/setup-python@v5
	with:
	  python-version: '3.12'

      - name: Install Dependencies
	run: |
	  python -m pip install --upgrade pip
	  pip install -r requirements.txt

      - name: Run Tests
	run: |
	  export SECRET_KEY="34234234234fsdfsdfsdffsdfsd24324dfsdfs"
	  coverage run manage.py test

      - name: Check Test Coverage
	run: |
	  COVERAGE_OUTPUT=$(coverage report --skip-covered)
	  COVERAGE_PERCENTAGE=$(echo "$COVERAGE_OUTPUT" | awk '/TOTAL/ {print $NF}')
	  echo "coverage percentage is $COVERAGE_PERCENTAGE"
	  echo COVERAGE_PERCENTAGE=$COVERAGE_PERCENTAGE >> $GITHUB_ENV

      - name: Break job if coverage is not more than 95%
	if: ${{ env.COVERAGE_PERCENTAGE < '95%' }}
	run: exit 1

Now try to run this action with act locally or with a github action and see this build break if the test coverage is lower than 95%.