1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141
|
---
name: Tests and Coverage
"on":
pull_request:
branches:
- dev
- main
push:
branches:
- dev
- main
jobs:
test:
name: Tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version:
- "3.10"
- "3.11"
- "3.12"
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@v4
- name: 🏗 Set up Python
id: setup-python
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: ⤵️ Get pip cache directory
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: ⤵️ Establish pip cache
uses: actions/cache@v3
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: "${{ runner.os }}-pip-\
${{ hashFiles('.github/workflows/requirements.txt') }}"
restore-keys: |
${{ runner.os }}-pip-
- name: 🏗 Install workflow dependencies
run: |
pip install -r .github/workflows/requirements.txt
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
- name: ⤵️ Establish poetry cache
uses: actions/cache@v3
with:
path: .venv
key: "venv-${{ steps.setup-python.outputs.python-version }}-\
${{ hashFiles('poetry.lock') }}"
restore-keys: |
venv-${{ steps.setup-python.outputs.python-version }}-
- name: 🏗 Install package dependencies
run: |
poetry install --no-interaction
- name: 🚀 Run pytest
run: poetry run pytest --cov pyopenuv tests
- name: ⬆️ Upload coverage artifact
uses: actions/upload-artifact@v3
with:
name: coverage-${{ matrix.python-version }}
path: .coverage
coverage:
name: Code Coverage
needs: test
runs-on: ubuntu-latest
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/checkout@v4
- name: ⬇️ Download coverage data
uses: actions/download-artifact@v3
- name: 🏗 Set up Python 3.12
id: setup-python
uses: actions/setup-python@v4
with:
python-version: 3.12
- name: ⤵️ Get pip cache directory
id: pip-cache
run: |
echo "dir=$(pip cache dir)" >> $GITHUB_OUTPUT
- name: ⤵️ Establish pip cache
uses: actions/cache@v3
with:
path: ${{ steps.pip-cache.outputs.dir }}
key: "${{ runner.os }}-pip-\
${{ hashFiles('.github/workflows/requirements.txt') }}"
restore-keys: |
${{ runner.os }}-pip-
- name: 🏗 Install workflow dependencies
run: |
pip install -r .github/workflows/requirements.txt
poetry config virtualenvs.create true
poetry config virtualenvs.in-project true
- name: ⤵️ Establish poetry cache
uses: actions/cache@v3
with:
path: .venv
key: "venv-${{ steps.setup-python.outputs.python-version }}-\
${{ hashFiles('poetry.lock') }}"
restore-keys: |
venv-${{ steps.setup-python.outputs.python-version }}-
- name: 🏗 Install package dependencies
run: |
poetry install --no-interaction
- name: 🚀 Process coverage results
run: |
poetry run coverage combine coverage*/.coverage*
poetry run coverage xml -i
- name: 📊 Upload coverage report to codecov.io
uses: codecov/codecov-action@v3
with:
token: ${{ secrets.CODECOV_TOKEN }}
|