#!/bin/sh -eux # TODO set this from outside depending on the package VERSION=3.7 PYTHON=python$VERSION # clean from possible older runs rm -rf venv .tox __pycache__ .pytest* test_*.py *.pyx *.c *.so || : # check the we can create the venv $PYTHON -m venv venv # and activate it source venv/bin/activate # run python in it python -c 'import sys; print(sys.version)' | head -n1 | grep $VERSION # install packages with pip python -m pip install pytest # run tests cat > test_foo.py << EOF def test_foo(): assert True EOF python -m pytest -v test_foo.py # check that we can do extension modules cat > module.pyx << EOF cdef int add(int a, int b): return a + b def two(): cdef int a = 1 cdef int b = 1 return add(a, b) EOF cat > setup.py << EOF from setuptools import setup from Cython.Build import cythonize setup(ext_modules = cythonize('module.pyx')) EOF python -m pip install Cython python setup.py build_ext --inplace python -c 'import module; print(module.two())' | grep '^2$' # deactivate has unset variable, it's known set +u deactivate set -u # use it with tox cat > tox.ini << EOF [tox] skipsdist = True [testenv] deps = pytest commands = python -m pytest -v test_foo.py EOF tox -e py${VERSION/./}