forked from MirrorHub/synapse
Don't try to run tox from setup.py
Using tox to run the tests is a bad idea, as per the comments.
This commit is contained in:
parent
4a9c38bfa3
commit
af32d3b773
1 changed files with 28 additions and 34 deletions
62
setup.py
62
setup.py
|
@ -16,10 +16,37 @@
|
||||||
|
|
||||||
import glob
|
import glob
|
||||||
import os
|
import os
|
||||||
from setuptools import setup, find_packages, Command
|
from setuptools import setup, find_packages
|
||||||
import sys
|
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__))
|
here = os.path.abspath(os.path.dirname(__file__))
|
||||||
|
|
||||||
|
|
||||||
|
@ -39,38 +66,6 @@ def exec_file(path_segments):
|
||||||
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",))
|
||||||
|
@ -86,5 +81,4 @@ 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},
|
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in a new issue