Skip to content

Commit 45859f8

Browse files
committed
Add color and UI overrides to the distutils frontend, and clean up the nocolor stuff a tad.
1 parent 0dc733e commit 45859f8

File tree

4 files changed

+27
-28
lines changed

4 files changed

+27
-28
lines changed

pyzen/distutils.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -6,35 +6,35 @@
66
from pkg_resources import *
77

88
from pyzen.core import main
9-
from pyzen.runner import ColoredTextTestRunner
9+
from pyzen.runner import get_test_runner
1010

1111
class ZenTestProgram(unittest.TestProgram):
1212

1313
def runTests(self):
14-
if self.testRunner is None:
15-
self.testRunner = unittest.TextTestRunner
16-
17-
if isinstance(self.testRunner, (type, types.ClassType)):
18-
try:
19-
testRunner = self.testRunner(verbosity=self.verbosity)
20-
except TypeError:
21-
# didn't accept the verbosity argument
22-
testRunner = self.testRunner()
23-
else:
24-
# it is assumed to be a TestRunner instance
25-
testRunner = self.testRunner
14+
testRunner = self.testRunner(verbosity=self.verbosity)
2615
self.result = testRunner.run(self.test)
2716

28-
def run_tests(loader, args, path):
17+
def run_tests(loader, args, path, nocolor):
2918
sys.path[:] = path
3019
loader_ep = EntryPoint.parse("x="+loader)
3120
loader_class = loader_ep.load(require=False)
32-
m = ZenTestProgram(None, None, [unittest.__file__]+args, testLoader=loader_class())
21+
m = ZenTestProgram(None, None, [unittest.__file__]+args, testLoader=loader_class(), testRunner=get_test_runner(nocolor))
3322
return m.result
3423

3524
class zen(test):
3625
"""Command to run test suite under PyZen."""
3726
description = 'run unit tests under PyZen'
38-
27+
28+
user_options = test.user_options + [
29+
('ui=', 'u', 'Force the use of the given PyZen UI'),
30+
('nocolor', 'c', 'Disable colored output'),
31+
]
32+
boolean_options = ['nocolor']
33+
34+
def initialize_options(self):
35+
test.initialize_options(self)
36+
self.ui = None
37+
self.nocolor = False
38+
3939
def run_tests(self):
40-
main(None, run_tests, self.test_loader, self.test_args, sys.path[:])
40+
main(self.ui, run_tests, self.test_loader, self.test_args, sys.path[:], self.nocolor)

pyzen/flaskext/script.py

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from flaskext.script import Command, Option
88

99
from pyzen.core import main
10-
from pyzen.runner import ColoredTextTestRunner
10+
from pyzen.runner import get_test_runner
1111

1212
try:
1313
from unittest2 import TestLoader
@@ -31,11 +31,7 @@ def run_tests(app, pattern, start_dir, verbosity, nocolor):
3131
print start_dir
3232
loader = ZenTestLoader()
3333
suite = loader.discover(start_dir, pattern, start_dir)
34-
if nocolor:
35-
runner = unittest.TextTestRunner
36-
else:
37-
runner = ColoredTextTestRunner
38-
result = runner(verbosity=verbosity).run(suite)
34+
result = get_test_runner(nocolor)(verbosity=verbosity).run(suite)
3935
return result
4036

4137
class Test(Command):

pyzen/management/commands/zen.py

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
patch_for_test_db_setup = lambda: None
1313

1414
from pyzen.core import main
15-
from pyzen.runner import ColoredTextTestRunner
15+
from pyzen.runner import get_test_runner
1616

1717
def run_tests(*test_labels, **options):
1818
patch_for_test_db_setup()
@@ -24,10 +24,7 @@ def run_tests(*test_labels, **options):
2424

2525
class NewTestSuiteRunner(TestSuiteRunner):
2626
def run_suite(self, suite, **kwargs):
27-
if nocolor:
28-
return unittest.TextTestRunner(verbosity=self.verbosity).run(suite)
29-
else:
30-
return ColoredTextTestRunner(verbosity=self.verbosity).run(suite)
27+
return get_test_runner(nocolor)(verbosity=self.verbosity).run(suite)
3128
def suite_result(self, suite, result, **kwargs):
3229
return result
3330

pyzen/runner.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,3 +71,9 @@ def run(self, test):
7171
else:
7272
self.stream.writeln(COLOR_SUCCESS+"OK"+COLOR_RESET)
7373
return result
74+
75+
def get_test_runner(nocolor):
76+
if nocolor:
77+
return unittest.TextTestRunner
78+
else:
79+
return ColoredTextTestRunner

0 commit comments

Comments
 (0)