#211 Improve documentation (#221) #912
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: pytest linux | |
on: [push, pull_request] | |
env: | |
PYTHONPATH: /home/runner/work/sz-sdk-python-grpc/sz-sdk-python-grpc/src | |
permissions: | |
contents: read | |
jobs: | |
pytest-linux: | |
name: "pytest OS: ${{ matrix.os }}; Python ${{ matrix.python-version }}" | |
runs-on: ${{ matrix.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ["3.9", "3.10", "3.11", "3.12"] | |
services: | |
servegrpc: | |
credentials: | |
password: ${{ secrets.DOCKERHUB_ACCESS_TOKEN }} | |
username: ${{ secrets.DOCKERHUB_USERNAME }} | |
env: | |
SENZING_TOOLS_ENABLE_ALL: true | |
image: senzing/serve-grpc | |
options: --user 0 | |
ports: | |
- 8261:8261 | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install dependencies | |
run: | | |
python -m venv ./venv | |
source ./venv/bin/activate | |
echo "PATH=${PATH}" >> "${GITHUB_ENV}" | |
python -m pip install --upgrade pip | |
python -m pip install --requirement requirements.txt | |
python -m pip install psutil pytest pytest-cov pytest-schema | |
- if: matrix.python-version == '3.8' || matrix.python-version == '3.9' || matrix.python-version == '3.10' | |
name: Install python libraries for python 3.8, 3.9, and 3.10 | |
run: | | |
source ./venv/bin/activate | |
python -m pip install typing_extensions | |
- name: Run pytest on tests | |
run: | | |
source ./venv/bin/activate | |
pytest tests/ --verbose --capture=no --cov=src --cov-append | |
# Use pytest to check examples, there are no "test" classes/functions, pytest imports | |
# the .py files. If there is a Python error in the examples, an exit code of 1 | |
# is returned. If there are no Python errors but pytest didn't think it found any | |
# tests an exit code of 5 is returned, this is a pass but need to capture it and | |
# return 0 - https://docs.pytest.org/en/stable/reference/exit-codes.html | |
- name: Run pytest on examples | |
run: | | |
source ./venv/bin/activate | |
set +e | |
pytest \ | |
examples/misc/ \ | |
examples/extras/ \ | |
examples/szabstractfactory/ \ | |
examples/szconfig/ \ | |
examples/szconfigmanager/ \ | |
examples/szdiagnostic/ \ | |
examples/szengine/ \ | |
examples/szproduct/ \ | |
--capture=no \ | |
-o python_files=*.py \ | |
--verbose | |
pytest_exit_code="$?" | |
set -e | |
if [ "$pytest_exit_code" -eq 5 ]; then | |
echo -e "\nExit code from pytest was $pytest_exit_code, this is expected testing the examples if there were no Python errors\n" | |
exit 0 | |
else | |
exit "$pytest_exit_code" | |
fi | |
- name: Rename coverage file | |
env: | |
COVERAGE_FILE: "coverage.${{ matrix.python-version }}" | |
run: | | |
mv .coverage "$COVERAGE_FILE" | |
- name: Store coverage file | |
uses: actions/upload-artifact@v4 | |
with: | |
name: coverage-${{ matrix.python-version }} | |
path: coverage.${{ matrix.python-version }} | |
coverage: | |
name: Coverage | |
needs: pytest-linux | |
permissions: | |
pull-requests: write | |
contents: write | |
uses: senzing-factory/build-resources/.github/workflows/python-coverage-comment.yaml@v2 |