Skip to content

Bump pytest from 8.2.1 to 8.2.2 #2518

Bump pytest from 8.2.1 to 8.2.2

Bump pytest from 8.2.1 to 8.2.2 #2518

Workflow file for this run

# This workflow file generates binaries for both Windows
# and OS X. However, https://github.com/actions/upload-artifact/issues/38
# that basically says that it won't ever preserve permissions.
# That means an archive in an archive since we need to preserve them
# on OS X. Still... better than doing this all by hand.
# yamllint disable rule:line-length
---
name: testing
on: [push] # yamllint disable-line rule:truthy
env:
# API tests
ACOUSTID_TEST_APIKEY: ${{ secrets.ACOUSTID_TEST_APIKEY }} # pragma: allowlist secret
DISCOGS_API_KEY: ${{ secrets.DISCOGS_API_KEY }} # pragma: allowlist secret
FANARTTV_API_KEY: ${{ secrets.FANARTTV_API_KEY }} # pragma: allowlist secret
THEAUDIODB_API_KEY: ${{ secrets.THEAUDIODB_API_KEY }} # pragma: allowlist secret
# needed for upgrade test
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN}} # pragma: allowlist secret
jobs:
testing-mac-11:
runs-on: macos-11
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install homebrew dependencies
run: |
brew update --preinstall || true
brew install pkg-config icu4c
- name: install python dependencies
run: |
export PATH="/usr/local/opt/icu4c/bin:/usr/local/opt/icu4c/sbin:${PATH}"
export PKG_CONFIG_PATH="${PKG_CONFIG_PATH}:/usr/local/opt/icu4c/lib/pkgconfig"
python3 -m venv /tmp/venv
source /tmp/venv/bin/activate
python3 -m pip install --upgrade pip
pip install ".[test,osspecials]"
pip uninstall -y nowplaying
versioningit --write
python setupnltk.py
- name: tests
shell: bash
run: |
if [[ -n "${ACOUSTID_TEST_APIKEY}" ]]; then
pushd /tmp
curl --location --output fpcalc.tgz \
https://github.com/acoustid/chromaprint/releases/download/v1.5.1/chromaprint-fpcalc-1.5.1-macos-x86_64.tar.gz
tar xvpf fpcalc.tgz
FPCALC=/tmp/chromaprint-fpcalc-1.5.1-macos-x86_64/fpcalc
export FPCALC
popd
fi
source /tmp/venv/bin/activate
pytest --durations=10 -s tests
coverage xml
- name: artifact mac test
uses: actions/upload-artifact@v4
if: always()
with:
name: mac-11-coverage
path: |
.coverage
.coverage.*
# htmlcov
# - name: codecov
# uses: codecov/codecov-action@v4
# with:
# fail_ci_if_error: true # optional (default = false)
# files: ./coverage.xml # optional
# flags: unittests # optional
# name: codecov-mac11 # optional
# token: ${{ secrets.CODECOV_TOKEN }} # required
# verbose: true # optional (default = false)
testing-win:
runs-on: windows-2019
steps:
- run: Set-MpPreference -DisableRealtimeMonitoring $true
shell: powershell
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: update tags
run: git fetch --depth=1 origin +refs/tags/*:refs/tags/*
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install dependencies
run: |
python fix_win_ver.py
python -m pip install --upgrade pip
pip install ".[test,osspecials]"
pip uninstall -y nowplaying
versioningit --write
python setupnltk.py
- name: tests
shell: bash
run: |
if [[ -n "${ACOUSTID_TEST_APIKEY}" ]]; then
pushd /tmp
curl --location --output fpcalc.zip \
https://github.com/acoustid/chromaprint/releases/download/v1.5.1/chromaprint-fpcalc-1.5.1-windows-x86_64.zip
unzip fpcalc.zip
FPCALC=/tmp/chromaprint-fpcalc-1.5.1-windows-x86_64/fpcalc.exe
export FPCALC
popd
fi
pytest --durations=10 -s tests
coverage xml
- name: artifact windows test
uses: actions/upload-artifact@v4
if: always()
with:
name: win-coverage
path: |
.coverage
.coverage.*
htmlcov
# - name: codecov
# uses: codecov/codecov-action@v4
# with:
# fail_ci_if_error: true # optional (default = false)
# files: ./coverage.xml # optional
# flags: unittests # optional
# name: codecov-windows # optional
# token: ${{ secrets.CODECOV_TOKEN }} # required
# verbose: true # optional (default = false)
testing-linux:
runs-on: ubuntu-latest
strategy:
matrix:
python: ["3.10", "3.11"]
env:
DISPLAY: ':99.0'
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup python
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python }}
- name: setup X11xvfb
run: |
sudo apt install \
libxcb-cursor0 \
libxcb-icccm4 \
libxcb-image0 \
libxcb-keysyms1 \
libxcb-randr0 \
libxcb-render-util0 \
libxcb-shape0 \
libxcb-xfixes0 \
libxcb-xinerama0 \
libxkbcommon-x11-0 \
x11-utils
/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 dependencies
run: |
sudo apt-get update
sudo apt-get install -y \
--no-install-recommends \
--no-install-suggests \
libchromaprint-tools \
libdbus-1-dev \
libegl1 \
python3-dbus \
python3-pip
#
#
# dbus breaks venv so just skip it
# since we are just doing unit tests
#
#
python3 -m venv /tmp/venv
source /tmp/venv/bin/activate
python3 -m pip install --upgrade pip
pip install ".[test,osspecials]"
pip uninstall -y nowplaying
versioningit --write
python setupnltk.py
- name: tests
shell: bash
run: |
if [[ -n "${ACOUSTID_TEST_APIKEY}" ]]; then
pushd /tmp
FPCALC=/usr/bin/fpcalc
export FPCALC
popd
fi
source /tmp/venv/bin/activate
pytest --durations=10 -s
coverage xml
- name: artifact linux test
uses: actions/upload-artifact@v4
if: always()
with:
name: linux-coverage-${{ matrix.python }}
path: |
.coverage
.coverage.*
htmlcov
# - name: codecov
# uses: codecov/codecov-action@v4
# with:
# fail_ci_if_error: true # optional (default = false)
# files: ./coverage.xml # optional
# flags: unittests # optional
# name: codecov-linux-${{matrix.python}} # optional
# token: ${{ secrets.CODECOV_TOKEN }} # required
# verbose: true # optional (default = false)
merge:
if: always()
needs:
- testing-mac-11
- testing-win
- testing-linux
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: setup python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: install dependencies
run: |
python3 -m venv /tmp/venv
source /tmp/venv/bin/activate
python3 -m pip install --upgrade pip
pip install ".[test]"
- name: download coverage files
uses: actions/download-artifact@v4
with:
path: artifacts
- name: display artifacts
run: ls -aR
working-directory: artifacts
- name: merge coverage files
run: |
source /tmp/venv/bin/activate
coverage combine artifacts/*/.coverage artifacts/*/.coverage.*
coverage html
coverage xml
- name: artifact full tests
uses: actions/upload-artifact@v4
if: always()
with:
name: full-coverage
path: |
.coverage
htmlcov
- name: codecov
uses: codecov/codecov-action@v4
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
fail_ci_if_error: true # optional (default = false)
files: ./coverage.xml
flags: unittests # optional
name: codecov-umbrella # optional
token: ${{ secrets.CODECOV_TOKEN }} # required
verbose: true # optional (default = false)