From 09798f9739047e198544e672ffc7bb5b23128d52 Mon Sep 17 00:00:00 2001 From: James Westby Date: Mon, 7 Jun 2010 00:20:08 +0100 Subject: Implement a hacky first pass at discovery. --- python/subunit/run.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'python/subunit') diff --git a/python/subunit/run.py b/python/subunit/run.py index 01c0b0e..5c440eb 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -24,6 +24,12 @@ import sys from subunit import TestProtocolClient, get_default_formatter +try: + import discover + has_discover = True +except ImportError: + has_discover = False + class SubunitTestRunner(object): def __init__(self, stream=sys.stdout): @@ -38,10 +44,20 @@ class SubunitTestRunner(object): if __name__ == '__main__': import optparse - from unittest import TestProgram + from unittest import TestProgram, TestSuite parser = optparse.OptionParser(__doc__) - args = parser.parse_args()[1] + if has_discover: + parser.add_option("--discover", dest="discover", action="store_true", + help="Use test discovery on the given testspec.") + options, args = parser.parse_args() stream = get_default_formatter() runner = SubunitTestRunner(stream) + if has_discover and options.discover: + loader = discover.DiscoveringTestLoader() + test = TestSuite() + for arg in args: + test.addTest(loader.discover(arg)) + result = runner.run(test) + sys.exit(not result.wasSuccessful()) program = TestProgram(module=None, argv=[sys.argv[0]] + args, testRunner=runner) -- cgit v1.2.1 From 4700d73f0ef336c6a51159bae023aa15746a1e71 Mon Sep 17 00:00:00 2001 From: James Westby Date: Mon, 7 Jun 2010 19:37:52 +0100 Subject: Add --discover-pattern. --- python/subunit/run.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'python/subunit') diff --git a/python/subunit/run.py b/python/subunit/run.py index 5c440eb..7925512 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -49,6 +49,9 @@ if __name__ == '__main__': if has_discover: parser.add_option("--discover", dest="discover", action="store_true", help="Use test discovery on the given testspec.") + parser.add_option("--discover-pattern", dest="discover_pattern", + help="The pattern that discovery should match. Default " + "'test*.py'", default="test*.py") options, args = parser.parse_args() stream = get_default_formatter() runner = SubunitTestRunner(stream) @@ -56,7 +59,8 @@ if __name__ == '__main__': loader = discover.DiscoveringTestLoader() test = TestSuite() for arg in args: - test.addTest(loader.discover(arg)) + test.addTest(loader.discover( + arg, pattern=options.discover_pattern)) result = runner.run(test) sys.exit(not result.wasSuccessful()) program = TestProgram(module=None, argv=[sys.argv[0]] + args, -- cgit v1.2.1 From d197b54102de45a6802212d8eebe60d21d823456 Mon Sep 17 00:00:00 2001 From: James Westby Date: Sat, 12 Jun 2010 12:40:08 +0100 Subject: Use testtools to do the running and so support discovery via that. --- python/subunit/run.py | 28 ++-------------------------- 1 file changed, 2 insertions(+), 26 deletions(-) (limited to 'python/subunit') diff --git a/python/subunit/run.py b/python/subunit/run.py index 7925512..60f2380 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -23,12 +23,7 @@ import sys from subunit import TestProtocolClient, get_default_formatter - -try: - import discover - has_discover = True -except ImportError: - has_discover = False +from testtools.run import TestProgram class SubunitTestRunner(object): @@ -43,25 +38,6 @@ class SubunitTestRunner(object): if __name__ == '__main__': - import optparse - from unittest import TestProgram, TestSuite - parser = optparse.OptionParser(__doc__) - if has_discover: - parser.add_option("--discover", dest="discover", action="store_true", - help="Use test discovery on the given testspec.") - parser.add_option("--discover-pattern", dest="discover_pattern", - help="The pattern that discovery should match. Default " - "'test*.py'", default="test*.py") - options, args = parser.parse_args() stream = get_default_formatter() runner = SubunitTestRunner(stream) - if has_discover and options.discover: - loader = discover.DiscoveringTestLoader() - test = TestSuite() - for arg in args: - test.addTest(loader.discover( - arg, pattern=options.discover_pattern)) - result = runner.run(test) - sys.exit(not result.wasSuccessful()) - program = TestProgram(module=None, argv=[sys.argv[0]] + args, - testRunner=runner) + TestProgram(module=None, argv=sys.argv, testRunner=runner) -- cgit v1.2.1 From 270f9891f392d43e3def190933b0d51f77fa2418 Mon Sep 17 00:00:00 2001 From: James Westby Date: Tue, 22 Jun 2010 10:00:45 +0100 Subject: Modify the usage message from subunit.run. --- python/subunit/run.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) (limited to 'python/subunit') diff --git a/python/subunit/run.py b/python/subunit/run.py index 60f2380..766a94a 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -23,7 +23,13 @@ import sys from subunit import TestProtocolClient, get_default_formatter -from testtools.run import TestProgram +from testtools.run import ( + BUFFEROUTPUT, + CATCHBREAK, + FAILFAST, + TestProgram, + USAGE_AS_MAIN, + ) class SubunitTestRunner(object): @@ -37,7 +43,27 @@ class SubunitTestRunner(object): return result +class SubunitTestProgram(TestProgram): + + USAGE = USAGE_AS_MAIN + + def usageExit(self, msg=None): + if msg: + print msg + usage = {'progName': self.progName, 'catchbreak': '', 'failfast': '', + 'buffer': ''} + if self.failfast != False: + usage['failfast'] = FAILFAST + if self.catchbreak != False: + usage['catchbreak'] = CATCHBREAK + if self.buffer != False: + usage['buffer'] = BUFFEROUTPUT + print self.USAGE % usage + print "The output will be in subunit format.\n" + sys.exit(2) + + if __name__ == '__main__': stream = get_default_formatter() runner = SubunitTestRunner(stream) - TestProgram(module=None, argv=sys.argv, testRunner=runner) + SubunitTestProgram(module=None, argv=sys.argv, testRunner=runner) -- cgit v1.2.1 From fbcddf14a64b1087528dd45b00647678ac60e7f6 Mon Sep 17 00:00:00 2001 From: Robert Collins Date: Thu, 1 Jul 2010 21:22:41 +1000 Subject: Tweak discovery patch as requested in the review. --- python/subunit/run.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'python/subunit') diff --git a/python/subunit/run.py b/python/subunit/run.py index 766a94a..daa241a 100755 --- a/python/subunit/run.py +++ b/python/subunit/run.py @@ -58,8 +58,11 @@ class SubunitTestProgram(TestProgram): usage['catchbreak'] = CATCHBREAK if self.buffer != False: usage['buffer'] = BUFFEROUTPUT - print self.USAGE % usage - print "The output will be in subunit format.\n" + usage_text = self.USAGE % usage + usage_lines = usage_text.split('\n') + usage_lines.insert(2, "Run a test suite with a subunit reporter.") + usage_lines.insert(3, "") + print('\n'.join(usage_lines)) sys.exit(2) -- cgit v1.2.1