Skip to content

CI

CI #1720

Workflow file for this run

name: CI
# see https://github.saobby.my.eu.orgmunity/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-12, macos-13, ubuntu-20.04, ubuntu-22.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.0 python3 python3-enchant python3-gi python3-yaml
python3 -m pip install setuptools 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 python@3.12 files that are overwritten, so we remove them.
# Some can be removed by unlinking python@3.12, others need to be removed manually.
brew unlink python@3.12
brew link --overwrite python@3.12
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-22.04'
run: |
python3 -m tox -v -e style
- name: Run tests
if: matrix.os == 'ubuntu-22.04' # pip on macOS needs --break-system-packages
run: |
python3 -c "import gi"
python3 -m tox -v -e py
python3 -m pip install .