.github/workflows/test.yml
name: Run tests
on:
- push
- pull_request
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11", "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 dependencies for the gpg and notmuch python package
run: |
set -e
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libgpgme-dev libxapian-dev libgmime-3.0-dev libtalloc-dev swig
env:
DEBIAN_FRONTEND: noninteractive
- name: clone the notmuch repository
run: git clone --depth 1 https://git.notmuchmail.org/git/notmuch notmuch
- name: build the notmuch bindings
run: |
set -e
# Make and install the library.
./configure --without-bash-completion \
--without-api-docs \
--without-emacs \
--without-desktop \
--without-ruby \
--without-zsh-completion
make
sudo make install
working-directory: notmuch
- name: Install notmuch python bindings
run: pip install .
working-directory: notmuch/bindings/python-cffi
- name: "Workaround for issue #1630: mock gpg instead of installing it"
# FIXME: It is very difficult to install a recent gpg package in ci.
# This is related to issue 1630 (see
# https://github.com/pazz/alot/issues/1630#issuecomment-1938174029 and
# onwards). The problem was introduced in c1137ea9: the gpg
# dependency is required with version > 1.10.0 and such a version is
# not currently available on PyPI but must be build from hand.
run: |
# do not install gpg with pip
sed -i /gpg/d pyproject.toml
# mock a minimal structure of the gpg module
mkdir -p gpg/constants
echo from . import constants > gpg/__init__.py
echo from . import validity > gpg/constants/__init__.py
echo FULL = 4 > gpg/constants/validity.py
# skip all tests that depend on gpg
sed -i '/import unittest/araise unittest.SkipTest("gpg based test do not work in CI")\n' tests/test_crypto.py
sed -i 's/\( *\)def setUpClass.*/&\n\1 raise unittest.SkipTest("gpg based test do not work in CI")\n/' tests/db/test_utils.py
sed -i 's/\( *\)async def test_no_spawn_no_stdin_attached.*/\1@unittest.skip\n&/' tests/commands/test_global.py
- name: Install dependencies
run: |
pip install .
- name: Run tests
run: python3 -m unittest --verbose