From 3bb86c53fe7986ce9e428f3a95f8a201d1a64149 Mon Sep 17 00:00:00 2001 From: Luis Alvergue Date: Tue, 10 Dec 2024 00:12:31 +0000 Subject: [PATCH] feat: add GitHub Actions workflow to run pytest - sets Python version for GitHub workflows - adds workflow and shell script that runs pytest --- .github/workflows/.python-version | 1 + .github/workflows/tests-pytest.yml | 51 ++++++++++++++++++++++++++++++ tests/pytest/run.sh | 10 ++++++ 3 files changed, 62 insertions(+) create mode 100644 .github/workflows/.python-version create mode 100644 .github/workflows/tests-pytest.yml create mode 100755 tests/pytest/run.sh diff --git a/.github/workflows/.python-version b/.github/workflows/.python-version new file mode 100644 index 0000000..e4fba21 --- /dev/null +++ b/.github/workflows/.python-version @@ -0,0 +1 @@ +3.12 diff --git a/.github/workflows/tests-pytest.yml b/.github/workflows/tests-pytest.yml new file mode 100644 index 0000000..5c4a066 --- /dev/null +++ b/.github/workflows/tests-pytest.yml @@ -0,0 +1,51 @@ +name: Pytest + +on: [push, pull_request, workflow_call] + +jobs: + pytest: + runs-on: ubuntu-latest + permissions: + # Gives the action the necessary permissions for publishing new + # comments in pull requests. + pull-requests: write + # Gives the action the necessary permissions for pushing data to the + # python-coverage-comment-action branch, and for editing existing + # comments (to avoid publishing multiple comments in the same PR) + contents: write + steps: + - name: Check out code + uses: actions/checkout@v4 + + - name: Install system packages + run: | + sudo apt-get update -y + sudo apt-get install -y gettext + + - uses: actions/setup-python@v5 + with: + python-version-file: .github/workflows/.python-version + cache: pip + cache-dependency-path: "**/pyproject.toml" + + - name: Install Python dependencies + run: pip install -e .[test] + + - name: Run setup + run: ./bin/init.sh + + - name: Run tests + run: ./tests/pytest/run.sh + + - name: Upload coverage report + uses: actions/upload-artifact@v4 + with: + name: coverage-report + path: pems/static/coverage + + - name: Coverage comment + uses: py-cov-action/python-coverage-comment-action@v3 + with: + GITHUB_TOKEN: ${{ github.token }} + MINIMUM_GREEN: 90 + MINIMUM_ORANGE: 80 diff --git a/tests/pytest/run.sh b/tests/pytest/run.sh new file mode 100755 index 0000000..a1fbf69 --- /dev/null +++ b/tests/pytest/run.sh @@ -0,0 +1,10 @@ +#!/usr/bin/env bash +set -eu + +# run normal pytests +coverage run -m pytest + +# clean out old coverage results +rm -rf pems/static/coverage + +coverage html --directory pems/static/coverage