Bump furo from 2024.5.6 to 2024.8.6 (#1088) #2590
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
# 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-macos-12: | |
runs-on: macos-12 | |
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 --version | |
python3.11 -m venv /tmp/venv | |
source /tmp/venv/bin/activate | |
python3.11 -m pip install --upgrade pip | |
pip install ".[test,osspecials]" | |
pip uninstall -y nowplaying | |
versioningit --write | |
python3.11 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 | |
ls -al .coverage* | |
coverage xml | |
- name: artifact mac test | |
uses: actions/upload-artifact@v4 | |
if: always() | |
with: | |
name: macos-12-coverage | |
include-hidden-files: true | |
path: | | |
.coverage | |
.coverage.* | |
.coverage* | |
coverage.xml | |
# 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 | |
include-hidden-files: true | |
path: | | |
.coverage | |
.coverage.* | |
htmlcov | |
coverage.xml | |
# - 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 }} | |
include-hidden-files: true | |
path: | | |
.coverage | |
.coverage.* | |
htmlcov | |
coverage.xml | |
# - 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-macos-12 | |
- 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 | |
coverage.xml | |
- 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) |