Run tests with specific combination of required packages #5366
Workflow file for this run
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, pull_request] | |
permissions: {} | |
jobs: | |
test-latest: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-12, ubuntu-latest, windows-2019] | |
python-version: ['3.9', '3.10', '3.11', '3.12'] | |
include: | |
- os: macos-11 | |
python-version: '3.9' | |
env: | |
CODACY_PROJECT_TOKEN: ${{ secrets.CODACY_PROJECT_TOKEN }} | |
steps: | |
- 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 (Linux) | |
if: runner.os == 'linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install libegl1 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install --upgrade setuptools | |
pip install -r requirements.txt | |
- name: Install gettext (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install gettext | |
- name: Install gettext (macOS) | |
if: runner.os == 'macOS' | |
run: | | |
brew install gettext | |
brew link gettext --force | |
echo "/usr/local/opt/gettext/bin" >> $GITHUB_PATH | |
- name: Check coding style | |
run: | | |
pip install flake8 "isort>=5" | |
flake8 picard test --count --show-source --statistics | |
isort --check-only --diff --recursive picard test | |
- name: Test with pytest | |
if: always() | |
timeout-minutes: 30 | |
run: | | |
python setup.py build_locales -i | |
pip install pytest pytest-randomly pytest-cov | |
pytest --verbose --cov=picard --cov-report xml:coverage.xml test | |
- name: Submit code coverage to Codacy | |
if: env.CODACY_PROJECT_TOKEN | |
run: | | |
pip install codacy-coverage | |
python-codacy-coverage -r coverage.xml | |
test-requirements: | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
python-version: ['3.9'] | |
dependencies: [ | |
"PyQt6==6.5.3 PyQt6-Qt6==6.5.3 mutagen==1.37 python-dateutil==2.7 PyYAML==5.1", # minimal versions, minimum dependencies | |
"PyQt6>=6.5.3 mutagen~=1.37 python-dateutil~=2.7 PyYAML~=6.0 discid==1.0", | |
"PyQt6>=6.5.3 mutagen~=1.37 python-dateutil~=2.7 PyYAML~=6.0 python-libdiscid", | |
"PyQt6>=6.5.3 mutagen~=1.37 python-dateutil~=2.7 PyYAML~=6.0 charset-normalizer==2.0.6", | |
"PyQt6>=6.5.3 mutagen~=1.37 python-dateutil~=2.7 PyYAML~=6.0 chardet==3.0.4", | |
] | |
steps: | |
- 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 (Linux) | |
if: runner.os == 'linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install libdiscid-dev libegl1 | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install $DEPENDENCIES | |
env: | |
DEPENDENCIES: ${{ matrix.dependencies }} | |
- name: Test with pytest | |
timeout-minutes: 30 | |
run: | | |
pip install pytest pytest-randomly pytest-cov | |
pytest --verbose test | |
pip-install: # Test whether a clean pip install from source works | |
runs-on: ${{ matrix.os }} | |
strategy: | |
matrix: | |
os: [macos-12, ubuntu-latest, windows-latest] | |
python-version: ['3.9', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python ${{ matrix.python-version }} | |
uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Install gettext and libegl1 (Linux) | |
if: runner.os == 'Linux' | |
run: | | |
sudo apt-get update | |
sudo apt-get install gettext libegl1 | |
- name: Install gettext (macOS) | |
if: runner.os == 'macOS' | |
run: | | |
brew install gettext | |
brew link gettext --force | |
echo "/usr/local/opt/gettext/bin" >> $GITHUB_PATH | |
- name: Install gettext (Windows) | |
if: runner.os == 'Windows' | |
run: | | |
& .\scripts\package\win-setup-gettext.ps1 ` | |
-GettextVersion $Env:GETTEXT_VERSION -GettextSha256Sum $Env:GETTEXT_SHA256SUM | |
Add-Content $env:GITHUB_PATH (Join-Path -Path (Resolve-Path .) -ChildPath gettext\bin) | |
env: | |
GETTEXT_VERSION: 0.22.4 | |
GETTEXT_SHA256SUM: 220068ac0b9e7aedda03534a3088e584640ac1e639800b3a0baa9410aa6d012a | |
- name: Run pip install . | |
run: | | |
python -m pip install --upgrade pip | |
pip install . | |
- name: Test running installed package | |
if: runner.os != 'Windows' | |
run: picard --long-version --no-crash-dialog | |
- name: Verify sdist package | |
if: runner.os != 'Windows' | |
timeout-minutes: 30 | |
run: | | |
pip install --upgrade setuptools | |
pip install pytest | |
scripts/package/run-sdist-test.sh |