#1 WIP tests for venv
Closed 5 years ago by psss. Opened 5 years ago by churchyard.
tests/ churchyard/python venv  into  master

file added
+8
@@ -0,0 +1,8 @@ 

+ .pytest_cache/

+ .tox/

+ build/

+ /module.*

+ /setup.py

+ /test_foo.py

+ /tox.ini

+ /venv/

file added
+67
@@ -0,0 +1,67 @@ 

+ #!/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/./}

what still needs to be done:

  • make it work in the CI
  • make it run for python 3.5, 3.6, 3.7
  • make sure appropriate packages get installed (python3-devel for "current", pythonXY for the rest)

I've prepared tests.yml file to enable tests in the CI:
https://src.fedoraproject.org/rpms/python3/pull-request/45

This works fine with the script you've provided.
Providing the version can be handled like this:

# set python version
VERSION=${VERSION:-3.7}
PYTHON=python$VERSION

Also, can we move the test script to smoke/venv.sh to
create at least basic directory structure for the start?

Metadata Update from @psss:
- Request assigned

5 years ago

Pull-Request has been closed by psss

5 years ago
Metadata