Conditional Commands in tox? (tox, travis-ci, and coveralls)
I have a similar setup with Travis, tox and coveralls. My idea was to only execute coveralls
if the TRAVIS
environment variable is set. However, it seems this is not so easy to do as tox has trouble parsing commands with quotes and ampersands. Additionally, this confused Travis me a lot.
Eventually I wrote a simple python script run_coveralls.py
:
#!/bin/env/python
import os
from subprocess import call
if __name__ == '__main__':
if 'TRAVIS' in os.environ:
rc = call('coveralls')
raise SystemExit(rc)
In tox.ini
, replace your coveralls
command with python {toxinidir}/run_coveralls.py
.
An alternative solution would be to prefix the coveralls
command with a dash (-
) to tell tox
to ignore its exit code as explained in the documentation. This way even failures from coveralls
will be ignored and tox
will consider the test execution as successful when executed locally.
Using the example configuration above, it would be as follows:
[tox]
envlist = py27
[testenv]
passenv = TRAVIS TRAVIS_JOB_ID TRAVIS_BRANCH
deps =
pytest
coverage
pytest-cov
coveralls
commands =
py.test --cov={envsitepackagesdir}/mypackage --cov-report=term --basetemp={envtmpdir}
- coveralls