Skip to content

Python Tests

Python Tests #824

Workflow file for this run

# This workflow will install Python dependencies, run tests and lint with a single version of Python
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python Tests
on:
push:
branches:
- master
- 'release/**'
pull_request:
branches:
- master
workflow_dispatch:
jobs:
test:
runs-on: ${{ matrix.os }}
timeout-minutes: 14
strategy:
fail-fast: false
matrix:
name:
[
"ubuntu-py38",
"ubuntu-py39",
"ubuntu-py310",
"windows-py311",
"ubuntu-conan1.48-py38",
"ubuntu-conan2-py311",
"windows-conan2-py311",
]
include:
- name: "ubuntu-py38"
python: "3.8"
os: ubuntu-20.04
conan: "<2"
pytest_args: ""
- name: "ubuntu-py39"
python: "3.9"
conan: "<2"
os: ubuntu-20.04
pytest_args: ""
- name: "ubuntu-py310"
python: "3.10"
conan: "<2"
os: ubuntu-20.04
pytest_args: ""
- name: "windows-py311"
python: "3.11"
os: windows-latest
conan: "<2"
pytest_args: ""
- name: "ubuntu-conan1.48-py38"
python: "3.8"
os: ubuntu-20.04
conan: "==1.48.0"
pytest_args: ""
- name: "ubuntu-conan2-py311"
python: "3.11"
os: ubuntu-20.04
conan: "<3"
pytest_args: "-m conanv2"
- name: "windows-conan2-py311"
python: "3.11"
os: windows-latest
conan: "<3"
pytest_args: "-m conanv2"
env:
DISPLAY: ":99.0"
LC_ALL: "en_US.UTF-8"
CONAN_REVISIONS_ENABLED: 1
CAL_DEBUG_LEVEL: 2 # this does not use Qt Threads, but enables to see stacktraces
# QT_LOGGING_RULES=: "*.debug=true"
# QT_DEBUG_PLUGINS: 1
steps:
- uses: actions/checkout@v3
- name: Set up a display for gui in Linux
if: matrix.os == 'ubuntu-20.04'
run: |
sudo apt update
sudo apt install libegl1-mesa libxkbcommon-x11-0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-xinerama0 libxcb-xfixes0 libxcb-shape0
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX
- name: Install system dependencies for testing in Linux
if: matrix.os == 'ubuntu-20.04'
run: | # terminal, file manager, xwininfo, text-editor
sudo apt install lxterminal nautilus x11-utils mousepad xdg-utils
sudo apt install dbus-x11 at-spi2-core
- name: Set up Python ${{ matrix.python }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
cache: 'pip' # caching pip dependencies
cache-dependency-path: setup.py
- name: Install specific Conan version
run: | # markupsafe is a workaround fix for broken conan dependencies
pip install markupsafe==2.0.1 --use-pep517
pip install "conan${{ matrix.conan }}" --use-pep517
- name: Install specific PySide6 version
run: | # 6.5.0 does currently not work on Linux
pip install PySide6-Essentials==6.4.3
- name: Install own package and test dependencies
# need -e because of coverage paths.
run: |
pip install -e .[test]
env:
CONAN_VERSION: ${{ matrix.conan}}
- name: Execute unitests with pytest
run: |
pytest -v test/01_unit --junit-xml=./results/result-unit-${{matrix.name}}.xml --cov=conan_app_launcher --cov-branch --cov-append --capture=no ${{matrix.pytest_args}}
- name: Execute integration with pytest
env:
SKIP_CREATE_CONAN_TEST_DATA: True
run: |
pytest -v test/02_integration --junit-xml=./results/result-integration-${{matrix.name}}.xml --cov=conan_app_launcher --cov-branch --cov-append --capture=no ${{matrix.pytest_args}}
- name: Execute system with pytest # Reinstall into site-packages to find install and pkg problems
env:
SKIP_CREATE_CONAN_TEST_DATA: True
run: |
pip install .[test]
pytest -v test/03_system --junit-xml=./results/result-system-${{matrix.name}}.xml --cov-report xml:cov/cov-${{matrix.name}}.xml --cov=conan_app_launcher --cov-branch --cov-append ${{matrix.pytest_args}}
- name: Upload Test results
uses: actions/upload-artifact@v3
with:
name: Test results
path: |
cov/
results/
sonarcloud:
if: always() # eecute, even when tests fail
needs:
- test
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
# Disabling shallow clone is recommended for improving relevancy of reporting, cf https://sonarcloud.io/project/configuration?analysisMode=GitHubActions
fetch-depth: 0
- uses: actions/download-artifact@v3
with:
name: Test results
path: ./
- name: Fix code coverage paths
working-directory: ./cov
run: |
sed -i 's@/home/runner/work/conan_app_launcher/conan_app_launcher@.@g' cov-*.xml
- name: SonarCloud Scan
uses: sonarsource/sonarcloud-github-action@master
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
with:
args: >
-Dsonar.organization=goszpeti
-Dsonar.projectKey=goszpeti_conan_app_launcher
-Dsonar.sources=./src
-Dsonar.exclusions=**/*_ui.py
-Dsonar.tests=./test
-Dsonar.sourceEncoding=UTF-8
-Dsonar.python.version=3.8,3.9,3.10,3.11
-Dsonar.python.coverage.reportPaths=cov/cov-*.xml
-Dsonar.python.xunit.reportPath=results/result-*-ubuntu-py39.xml