summary refs log tree commit diff
diff options
context:
space:
mode:
authorMark Haines <mjark@negativecurvature.net>2015-08-26 13:50:59 +0100
committerMark Haines <mjark@negativecurvature.net>2015-08-26 13:50:59 +0100
commit4c56928263efa3b5ce5b2eba79172872e8a27990 (patch)
treee19e47f5744a2a4620c78d9d83eb0a4a8803695a
parentMerge pull request #255 from matrix-org/mergeeriksmadness (diff)
parentPass an empty list of arguments to tox if no arguments are given (diff)
downloadsynapse-4c56928263efa3b5ce5b2eba79172872e8a27990.tar.xz
Merge pull request #254 from matrix-org/markjh/tox_setuptools
Make 'setup.py test' run tox
Diffstat (limited to '')
-rw-r--r--setup.cfg3
-rwxr-xr-xsetup.py37
-rw-r--r--tox.ini2
3 files changed, 37 insertions, 5 deletions
diff --git a/setup.cfg b/setup.cfg
index abb649958e..ba027c7d13 100644
--- a/setup.cfg
+++ b/setup.cfg
@@ -3,9 +3,6 @@ source-dir = docs/sphinx
 build-dir  = docs/build
 all_files  = 1
 
-[aliases]
-test = trial
-
 [trial]
 test_suite = tests
 
diff --git a/setup.py b/setup.py
index 8ad20df7cb..0e3f2f18d5 100755
--- a/setup.py
+++ b/setup.py
@@ -16,7 +16,8 @@
 
 import glob
 import os
-from setuptools import setup, find_packages
+from setuptools import setup, find_packages, Command
+import sys
 
 
 here = os.path.abspath(os.path.dirname(__file__))
@@ -37,6 +38,39 @@ def exec_file(path_segments):
     exec(code, result)
     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",))
@@ -52,4 +86,5 @@ setup(
     zip_safe=False,
     long_description=long_description,
     scripts=["synctl"] + glob.glob("scripts/*"),
+    cmdclass={'test': Tox},
 )
diff --git a/tox.ini b/tox.ini
index 370a63cbb8..3f0649b628 100644
--- a/tox.ini
+++ b/tox.ini
@@ -9,7 +9,7 @@ deps =
 setenv =
     PYTHONDONTWRITEBYTECODE = no_byte_code
 commands =
-    coverage run --source=./synapse {envbindir}/trial {posargs:tests}
+    coverage run --source=synapse {envbindir}/trial {posargs:tests}
     coverage report -m
 install_command =
     pip install --process-dependency-links --pre {opts} {packages}