- use py.test as default test runner
- upgrade tox file to use py35, coverage, etc.
- add flake8 rules
diff --git a/doc/build/changelog.rst b/doc/build/changelog.rst
index a371f7e..29914a8 100644
--- a/doc/build/changelog.rst
+++ b/doc/build/changelog.rst
@@ -10,6 +10,13 @@
:released:
.. change::
+ :tags: feature, test
+
+ The default test runner is now py.test. Running "python setup.py test"
+ will make use of py.test instead of nose. nose still works as a test
+ runner as well, however.
+
+ .. change::
:tags: bug, lexer
:pullreq: github:19
diff --git a/setup.py b/setup.py
index 56754aa..5b64d3f 100644
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,5 @@
from setuptools import setup, find_packages
+from setuptools.command.test import test as TestCommand
import os
import re
import sys
@@ -13,8 +14,8 @@
raise Exception("Mako requires Python 2.6 or higher.")
markupsafe_installs = (
- sys.version_info >= (2, 6) and sys.version_info < (3, 0)
- ) or sys.version_info >= (3, 3)
+ sys.version_info >= (2, 6) and sys.version_info < (3, 0)
+) or sys.version_info >= (3, 3)
install_requires = []
@@ -26,6 +27,26 @@
except ImportError:
install_requires.append('argparse')
+
+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
+
+ def run_tests(self):
+ # import here, cause outside the eggs aren't loaded
+ import pytest
+ errno = pytest.main(self.pytest_args)
+ sys.exit(errno)
+
+
setup(name='Mako',
version=VERSION,
description="A super-fast templating language that borrows the \
@@ -47,8 +68,8 @@
url='http://www.makotemplates.org/',
license='MIT',
packages=find_packages('.', exclude=['examples*', 'test*']),
- tests_require=['nose >= 0.11', 'mock'],
- test_suite="nose.collector",
+ tests_require=['pytest', 'mock'],
+ cmdclass={'test': PyTest},
zip_safe=False,
install_requires=install_requires,
extras_require={},
diff --git a/tox.ini b/tox.ini
index d73c377..19016de 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,16 +1,30 @@
# content of: tox.ini , put in same dir as setup.py
[tox]
-envlist = py{26,27,33,34}
+minversion=1.8.dev1
+envlist = py{26,27,34,35}
[testenv]
+cov_args=--cov=mako --cov-report term --cov-report xml
+
deps=pytest
- py{26,27}: mock
+ mock
beaker
markupsafe
pygments
babel
dogpile.cache
lingua<4
-
-commands=py.test
+ cov: pytest-cov
+setenv=
+ cov: COVERAGE={[testenv]cov_args}
+
+commands=py.test {env:COVERAGE:} {posargs}
+
+
+[flake8]
+
+show-source = True
+ignore = E711,E712,E721,D,N
+# F841,F811,F401
+exclude=.venv,.git,.tox,dist,doc,*egg,build