use setuptools-scm in pythonproject.toml #196
Workflow file for this run
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
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 |