summary refs log tree commit diff
path: root/setup.py
diff options
context:
space:
mode:
authorRichard van der Hoff <richard@matrix.org>2016-12-09 16:19:46 +0000
committerRichard van der Hoff <richard@matrix.org>2016-12-09 17:16:31 +0000
commitaf32d3b773a318c418b2bcab4bdb06c4ee6dfe57 (patch)
tree8aa2a2cc9c13450475d08084ce732ecb56602d73 /setup.py
parentFix broken README merge (diff)
downloadsynapse-af32d3b773a318c418b2bcab4bdb06c4ee6dfe57.tar.xz
Don't try to run tox from setup.py
Using tox to run the tests is a bad idea, as per the comments.
Diffstat (limited to 'setup.py')
-rwxr-xr-xsetup.py62
1 files changed, 28 insertions, 34 deletions
diff --git a/setup.py b/setup.py
index c0716a1599..7e276f1678 100755
--- a/setup.py
+++ b/setup.py
@@ -16,10 +16,37 @@
 
 import glob
 import os
-from setuptools import setup, find_packages, Command
+from setuptools import setup, find_packages
 import sys
 
 
+# Some notes on `setup.py test`:
+#
+# Once upon a time we used to try to make `setup.py test` run `tox` to run the
+# tests. That's a bad idea for three reasons:
+#
+# 1: `setup.py test` is supposed to find out whether the tests work in the
+#    *current* environmentt, not whatever tox sets up.
+# 2: Empirically, trying to install tox during the test run wasn't working ("No
+#    module named virtualenv").
+# 3: The tox documentation advises against it[1].
+#
+# Even further back in time, we used to use setuptools_trial [2]. That has its
+# own set of issues: for instance, it requires installation of Twisted to build
+# an sdist (because the recommended mode of usage is to add it to
+# `setup_requires`). That in turn means that in order to successfully run tox
+# you have to have the python header files installed for whichever version of
+# python tox uses (which is python3 on recent ubuntus, for example).
+#
+# So, for now at least, we stick with what appears to be the convention among
+# Twisted projects, and don't attempt to do anything when someone runs
+# `setup.py test`; instead we direct people to run `trial` directly if they
+# care.
+#
+# [1]: http://tox.readthedocs.io/en/2.5.0/example/basic.html#integration-with-setup-py-test-command
+# [2]: https://pypi.python.org/pypi/setuptools_trial
+
+
 here = os.path.abspath(os.path.dirname(__file__))
 
 
@@ -39,38 +66,6 @@ def exec_file(path_segments):
     return result
 
 
-class Tox(Command):
-    user_options = [('tox-args=', 'a', "Arguments to pass to tox")]
-
-    def initialize_options(self):
-        self.tox_args = None
-
-    def finalize_options(self):
-        self.test_args = []
-        self.test_suite = True
-
-    def run(self):
-        #import here, cause outside the eggs aren't loaded
-        try:
-            import tox
-        except ImportError:
-            try:
-                self.distribution.fetch_build_eggs("tox")
-                import tox
-            except:
-                raise RuntimeError(
-                    "The tests need 'tox' to run. Please install 'tox'."
-                )
-        import shlex
-        args = self.tox_args
-        if args:
-            args = shlex.split(self.tox_args)
-        else:
-            args = []
-        errno = tox.cmdline(args=args)
-        sys.exit(errno)
-
-
 version = exec_file(("synapse", "__init__.py"))["__version__"]
 dependencies = exec_file(("synapse", "python_dependencies.py"))
 long_description = read_file(("README.rst",))
@@ -86,5 +81,4 @@ setup(
     zip_safe=False,
     long_description=long_description,
     scripts=["synctl"] + glob.glob("scripts/*"),
-    cmdclass={'test': Tox},
 )