[tox] envlist = py{27,37}-{cy,nocy}, htmlcov package_name = cu2qu ; we skip tox's own sdist generation as we need to pass different environment ; variables for testing buiding with and without cython skipsdist = true [testenv] setenv = nocy: CU2QU_WITH_CYTHON=0 cy: CU2QU_WITH_CYTHON=1 cy: CYTHON_TRACE=1 cy: CYTHON_ANNOTATE=1 deps = -rtest-requirements.txt -rrequirements.txt cy: cython changedir = {toxinidir} commands = # create source distribution in a temp dir python setup.py --quiet sdist --dist-dir {envtmpdir} # install from sdist python -m pip install --ignore-installed --pre --no-deps --no-cache-dir --find-links {envtmpdir} {[tox]package_name} # ensure we are running the requested cu2qu version (compiled vs interpreted) nocy: python -c "import sys, cu2qu.cu2qu; cu2qu.cu2qu.COMPILED and sys.exit(1)" cy: python -c "import sys, cu2qu.cu2qu; cu2qu.cu2qu.COMPILED or sys.exit(1)" # run tests with code coverage enabled coverage run --parallel-mode -m pytest {posargs} [testenv:htmlcov] deps = coverage changedir = {toxinidir} commands = coverage combine coverage report coverage html [testenv:codecov] passenv = * deps = coverage codecov ignore_outcome = true changedir = {toxinidir} commands = coverage combine codecov --env TRAVIS_PYTHON_VERSION [testenv:update-cython] deps = requests changedir = {toxinidir} commands = python tools/update_cython_shadow.py {posargs} [testenv:sdist] deps = setuptools cython changedir = {toxinidir} commands = python -c 'import shutil; shutil.rmtree("dist", ignore_errors=True)' python setup.py --with-cython sdist --dist-dir dist [testenv:pure-wheel] deps = {[testenv:sdist]deps} pip wheel setenv = CU2QU_WITH_CYTHON=0 changedir = {toxinidir} commands = {[testenv:sdist]commands} pip wheel --pre --no-deps --no-cache-dir --wheel-dir dist --find-links dist \ --no-binary {[tox]package_name} {[tox]package_name} [testenv:native-wheel] deps = {[testenv:pure-wheel]deps} setenv = CU2QU_WITH_CYTHON=1 changedir = {toxinidir} commands = {[testenv:pure-wheel]commands} ; we only upload the pure cu2qu-*-py2.py3-any.whl (for now) [testenv:pypi] deps = {[testenv:pure-wheel]deps} twine passenv = TWINE_USERNAME TWINE_PASSWORD changedir = {toxinidir} commands = {[testenv:pure-wheel]commands} twine upload dist/*.whl dist/*.zip