Run Tests #34
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Run Tests | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
schedule: | |
- cron: "0 7 * * 1" | |
workflow_dispatch: | |
jobs: | |
lint: | |
name: Linting (pre-commit) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.8" | |
- name: Run pre-commit action | |
uses: pre-commit/[email protected] | |
tests: | |
name: Test it! | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
python-version: [3.8, "3.12"] | |
os: [ubuntu-latest, windows-latest] | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Set up Python ${{ matrix.python-version }} on ${{ matrix.os }} | |
uses: actions/setup-python@v4 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Update pip | |
run: python -m pip install --upgrade pip | |
- name: Get pip cache dir | |
id: pip-cache | |
shell: bash | |
run: echo "DIR=$(pip cache dir)" >> $GITHUB_OUTPUT | |
- name: Get current week number | |
id: get-week | |
shell: bash | |
run: echo "WEEK=$(date +'%V')" >> $GITHUB_OUTPUT | |
- name: Pip cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.pip-cache.outputs.DIR }} | |
key: ${{ runner.os }}-pip-${{ matrix.python-version }}-${{ steps.get-week.outputs.WEEK }}-${{ hashFiles('setup.cfg') }} | |
- name: Install tox and tox-gh-actions | |
run: python -m pip install tox tox-gh-actions | |
- name: Test with tox | |
run: tox | |
- name: Upload Unit Test Results | |
if: always() | |
uses: actions/upload-artifact@v3 | |
with: | |
name: unit-test-results-python${{ matrix.python-version }}-${{ matrix.os }} | |
path: | | |
test-reports/junit-report.xml | |
test-reports/coverage.xml | |
publish-test-results: | |
name: "Publish Unit Tests Results" | |
needs: tests | |
runs-on: ubuntu-latest | |
if: always() | |
steps: | |
- name: Download Artifacts | |
uses: actions/download-artifact@v3 | |
with: | |
path: artifacts | |
- name: Publish Unit Test Results | |
uses: EnricoMi/publish-unit-test-result-action@v2 | |
continue-on-error: true | |
with: | |
files: artifacts/*/junit-report.xml | |
- name: Publish Coverage Report for Ubuntu | |
uses: 5monkeys/cobertura-action@master | |
if: ${{ github.event_name == 'pull_request' }} | |
with: | |
path: artifacts/unit-test-results-python3.12-ubuntu-latest/coverage.xml | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
pull_request_number: ${{ github.pull_request.number }} | |
minimum_coverage: 70 | |
fail_below_threshold: false | |
only_changed_files: true | |
report_name: Code Coverage (Ubuntu) | |
- name: Publish Coverage Report for Windows | |
uses: 5monkeys/cobertura-action@master | |
if: ${{ github.event_name == 'pull_request' }} | |
with: | |
path: artifacts/unit-test-results-python3.12-windows-latest/coverage.xml | |
repo_token: ${{ secrets.GITHUB_TOKEN }} | |
pull_request_number: ${{ github.pull_request.number }} | |
minimum_coverage: 70 | |
fail_below_threshold: false | |
only_changed_files: true | |
report_name: Code Coverage (Windows) | |
check-pypi: | |
name: Long description check for PyPI | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout the repo | |
uses: actions/checkout@v3 | |
- name: Get history and tags for SCM versioning to work | |
run: | | |
git fetch --prune --unshallow | |
git fetch --depth=1 origin +refs/tags/*:refs/tags/* | |
- name: Set up Python 3.8 | |
uses: actions/setup-python@v4 | |
with: | |
python-version: "3.8" | |
- name: Update pip | |
run: python -m pip install --upgrade pip | |
- name: Get pip cache dir | |
id: pip-cache | |
shell: bash | |
run: echo "DIR=$(pip cache dir)" >> $GITHUB_OUTPUT | |
- name: Get current week number | |
id: get-week | |
shell: bash | |
run: echo "WEEK=$(date +'%V')" >> $GITHUB_OUTPUT | |
- name: Pip cache | |
uses: actions/cache@v3 | |
with: | |
path: ${{ steps.pip-cache.outputs.DIR }} | |
key: ${{ runner.os }}-pip-${{ steps.get-week.outputs.WEEK }}-${{ hashFiles('setup.cfg') }} | |
- name: Install tox and sphinx (to have rst2html.py utility available) | |
run: | | |
python -m pip install tox sphinx | |
- name: Testing with tox | |
run: python -m tox -e pypi |