Skip to content

CI

CI #1796

Workflow file for this run

name: CI
# see https://github.community/t5/GitHub-Actions/How-to-trigger-an-action-on-push-or-pull-request-but-not-both/m-p/35805
on:
push:
branches:
- master
pull_request:
branches:
- master
schedule:
# Run workflow every morning (* needs quotes).
- cron: '0 4 * * *'
jobs:
run-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [macos-13, ubuntu-22.04, ubuntu-24.04]
steps:
- uses: actions/checkout@v4
- name: Show environment
run: |
python --version
python3 --version
python3 -c "import multiprocessing as m; print('CPUs:', m.cpu_count())"
- name: Install dependencies (Ubuntu)
if: startsWith(matrix.os, 'ubuntu')
run: |
sudo apt-get update
sudo apt-get -y install -qq gettext gir1.2-gdkpixbuf-2.0 gir1.2-glib-2.0 gir1.2-gtk-3.0 gir1.2-gtksource-4 gir1.2-pango-1.0 gir1.2-webkit2-4.1 python3 python3-enchant python3-gi python3-setuptools python3-yaml tox
- name: Install dependencies (macOS)
if: startsWith(matrix.os, 'macos')
run: |
# We need pygobject from PyPI. Using only pygobject3 from homebrew leads to "gi module not found".
# Homebrew complains about [email protected] files that are overwritten, so we remove them.
# Some can be removed by unlinking [email protected], others need to be removed manually.
brew unlink [email protected]
brew link --overwrite [email protected]
sudo rm -r /usr/local/bin/2to3 /usr/local/bin/idle3 /usr/local/bin/pydoc3 /usr/local/bin/python3 /usr/local/bin/python3-config /usr/local/share/man/man1/python3.1 /usr/local/lib/pkgconfig/python3-embed.pc /usr/local/lib/pkgconfig/python3.pc /usr/local/Frameworks/Python.framework/Headers /usr/local/Frameworks/Python.framework/Python /usr/local/Frameworks/Python.framework/Resources /usr/local/Frameworks/Python.framework/Versions/Current
brew install gettext gobject-introspection gtk+3 libffi cairo gtksourceview3 librsvg adwaita-icon-theme enchant
# Removing the Python files above makes pip complain about "managed environments", so we need to "break system packages".
python3 -m pip install --break-system-packages pyenchant pygobject pyyaml
python3 -m pip install --break-system-packages setuptools tox
env:
# https://docs.brew.sh/Manpage#install-options-formulacask-
HOMEBREW_NO_INSTALLED_DEPENDENTS_CHECK: on
HOMEBREW_NO_INSTALL_CLEANUP: on
HOMEBREW_NO_INSTALL_UPGRADE: on
- name: Check style
if: matrix.os == 'ubuntu-24.04'
run: |
tox -v -e style
- name: Run tests
if: matrix.os == 'ubuntu-24.04' # pip on macOS needs --break-system-packages
run: |
python3 -c "import gi"
tox -v -e py
python3 -m venv .venv
./.venv/bin/pip install .