Merge pull request #254 from matrix-org/markjh/tox_setuptools

Make 'setup.py test' run tox
pull/258/head
Mark Haines 2015-08-26 13:50:59 +01:00
commit 4c56928263
3 changed files with 37 additions and 5 deletions

View File

@ -3,9 +3,6 @@ source-dir = docs/sphinx
build-dir = docs/build build-dir = docs/build
all_files = 1 all_files = 1
[aliases]
test = trial
[trial] [trial]
test_suite = tests test_suite = tests

View File

@ -16,7 +16,8 @@
import glob import glob
import os 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__)) here = os.path.abspath(os.path.dirname(__file__))
@ -37,6 +38,39 @@ def exec_file(path_segments):
exec(code, result) exec(code, result)
return 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__"] version = exec_file(("synapse", "__init__.py"))["__version__"]
dependencies = exec_file(("synapse", "python_dependencies.py")) dependencies = exec_file(("synapse", "python_dependencies.py"))
long_description = read_file(("README.rst",)) long_description = read_file(("README.rst",))
@ -52,4 +86,5 @@ setup(
zip_safe=False, zip_safe=False,
long_description=long_description, long_description=long_description,
scripts=["synctl"] + glob.glob("scripts/*"), scripts=["synctl"] + glob.glob("scripts/*"),
cmdclass={'test': Tox},
) )

View File

@ -9,7 +9,7 @@ deps =
setenv = setenv =
PYTHONDONTWRITEBYTECODE = no_byte_code PYTHONDONTWRITEBYTECODE = no_byte_code
commands = commands =
coverage run --source=./synapse {envbindir}/trial {posargs:tests} coverage run --source=synapse {envbindir}/trial {posargs:tests}
coverage report -m coverage report -m
install_command = install_command =
pip install --process-dependency-links --pre {opts} {packages} pip install --process-dependency-links --pre {opts} {packages}