remove python setup.py test

Removed the "python setup.py test" feature in favor of a straight run of
"tox".   Per Pypa / pytest developers, "setup.py" commands are in general
headed towards deprecation in favor of tox.  The tox.ini script has been
updated such that running "tox" with no arguments will perform a single run
of the test suite against the default installed Python interpreter.

.. seealso::

https://github.com/pypa/setuptools/issues/1684

https://github.com/pytest-dev/pytest/issues/5534

Fixes: #303
Change-Id: I345fd46f8911a71c039adf2d51937175142db793
diff --git a/doc/build/unreleased/303.rst b/doc/build/unreleased/303.rst
new file mode 100644
index 0000000..de5a01a
--- /dev/null
+++ b/doc/build/unreleased/303.rst
@@ -0,0 +1,15 @@
+.. change::
+    :tags: bug, setup
+    :tickets: 303
+
+    Removed the "python setup.py test" feature in favor of a straight run of
+    "tox".   Per Pypa / pytest developers, "setup.py" commands are in general
+    headed towards deprecation in favor of tox.  The tox.ini script has been
+    updated such that running "tox" with no arguments will perform a single run
+    of the test suite against the default installed Python interpreter.
+
+    .. seealso::
+
+        https://github.com/pypa/setuptools/issues/1684
+
+        https://github.com/pytest-dev/pytest/issues/5534
diff --git a/setup.py b/setup.py
index 68b46ef..e9c12be 100644
--- a/setup.py
+++ b/setup.py
@@ -19,24 +19,19 @@
 install_requires = ["MarkupSafe>=0.9.2"]
 
 
-class PyTest(TestCommand):
-    user_options = [("pytest-args=", "a", "Arguments to pass to py.test")]
-
-    def initialize_options(self):
-        TestCommand.initialize_options(self)
-        self.pytest_args = []
-
-    def finalize_options(self):
-        TestCommand.finalize_options(self)
-        self.test_args = []
-        self.test_suite = True
+class UseTox(TestCommand):
+    RED = 31
+    RESET_SEQ = "\033[0m"
+    BOLD_SEQ = "\033[1m"
+    COLOR_SEQ = "\033[1;%dm"
 
     def run_tests(self):
-        # import here, cause outside the eggs aren't loaded
-        import pytest
-
-        errno = pytest.main(self.pytest_args)
-        sys.exit(errno)
+        sys.stderr.write(
+            "%s%spython setup.py test is deprecated by pypa.  Please invoke "
+            "'tox' with no arguments for a basic test run.\n%s"
+            % (self.COLOR_SEQ % self.RED, self.BOLD_SEQ, self.RESET_SEQ)
+        )
+        sys.exit(1)
 
 
 setup(
@@ -67,11 +62,9 @@
     },
     license="MIT",
     packages=find_packages(".", exclude=["examples*", "test*"]),
-    tests_require=["pytest", "mock"],
-    cmdclass={"test": PyTest},
+    cmdclass={"test": UseTox},
     zip_safe=False,
     install_requires=install_requires,
-    extras_require={},
     entry_points="""
       [python.templating.engines]
       mako = mako.ext.turbogears:TGPlugin
diff --git a/tox.ini b/tox.ini
index b1a1e81..d2f044f 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,5 +1,5 @@
 [tox]
-envlist = py{27,34,35,36,37,38}
+envlist = py
 
 [testenv]
 cov_args=--cov=mako --cov-report term --cov-report xml
@@ -20,9 +20,8 @@
 commands=py.test {env:COVERAGE:} {posargs}
 
 
-# thanks to https://julien.danjou.info/the-best-flake8-extensions/
 [testenv:pep8]
-basepython = python3.7
+basepython = python3
 deps=
       flake8
       flake8-import-order