1 files changed, 29 insertions, 5 deletions
diff --git a/tox.ini b/tox.ini
index 39ad305360..f408defc8f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -14,14 +14,38 @@ deps =
setenv =
PYTHONDONTWRITEBYTECODE = no_byte_code
- # As of twisted 16.4, trial tries to import the tests as a package, which
- # means it needs to be on the pythonpath.
- PYTHONPATH = {toxinidir}
+
commands =
- /bin/sh -c "find {toxinidir} -name '*.pyc' -delete ; coverage run {env:COVERAGE_OPTS:} --source={toxinidir}/synapse \
- {envbindir}/trial {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}"
+ /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
+ coverage run {env:COVERAGE_OPTS:} --source="{toxinidir}/synapse" \
+ "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
{env:DUMP_COVERAGE_COMMAND:coverage report -m}
+[testenv:py27]
+
+# As of twisted 16.4, trial tries to import the tests as a package (previously
+# it loaded the files explicitly), which means they need to be on the
+# pythonpath. Our sdist doesn't include the 'tests' package, so normally it
+# doesn't work within the tox virtualenv.
+#
+# As a workaround, we tell tox to do install with 'pip -e', which just
+# creates a symlink to the project directory instead of unpacking the sdist.
+#
+# (An alternative to this would be to set PYTHONPATH to include the project
+# directory. Note two problems with this:
+#
+# - if you set it via `setenv`, then it is also set during the 'install'
+# phase, which inhibits unpacking the sdist, so the virtualenv isn't
+# useful for anything else without setting PYTHONPATH similarly.
+#
+# - `synapse` is also loaded from PYTHONPATH so even if you only set
+# PYTHONPATH for the test phase, we're still running the tests against
+# the working copy rather than the contents of the sdist. So frankly
+# you might as well use -e in the first place.
+#
+# )
+usedevelop=true
+
[testenv:packaging]
deps =
check-manifest
|