Show More
@@ -177,13 +177,14 b' def prepare_py_test_controllers(inc_slow=False):' | |||||
177 | not_run.append(controller) |
|
177 | not_run.append(controller) | |
178 | return to_run, not_run |
|
178 | return to_run, not_run | |
179 |
|
179 | |||
180 | def configure_controllers(controllers, xunit=False, coverage=False): |
|
180 | def configure_controllers(controllers, xunit=False, coverage=False, extra_args=()): | |
181 | """Apply options for a collection of TestController objects.""" |
|
181 | """Apply options for a collection of TestController objects.""" | |
182 | for controller in controllers: |
|
182 | for controller in controllers: | |
183 | if xunit: |
|
183 | if xunit: | |
184 | controller.add_xunit() |
|
184 | controller.add_xunit() | |
185 | if coverage: |
|
185 | if coverage: | |
186 | controller.add_coverage() |
|
186 | controller.add_coverage() | |
|
187 | controller.cmd.extend(extra_args) | |||
187 |
|
188 | |||
188 | def do_run(controller): |
|
189 | def do_run(controller): | |
189 | try: |
|
190 | try: | |
@@ -259,6 +260,9 b' def run_iptestall(options):' | |||||
259 | coverage : bool or str |
|
260 | coverage : bool or str | |
260 | Measure code coverage from tests. True will store the raw coverage data, |
|
261 | Measure code coverage from tests. True will store the raw coverage data, | |
261 | or pass 'html' or 'xml' to get reports. |
|
262 | or pass 'html' or 'xml' to get reports. | |
|
263 | ||||
|
264 | extra_args : list | |||
|
265 | Extra arguments to pass to the test subprocesses, e.g. '-v' | |||
262 | """ |
|
266 | """ | |
263 | if options.fast != 1: |
|
267 | if options.fast != 1: | |
264 | # If running in parallel, capture output so it doesn't get interleaved |
|
268 | # If running in parallel, capture output so it doesn't get interleaved | |
@@ -270,7 +274,8 b' def run_iptestall(options):' | |||||
270 | else: |
|
274 | else: | |
271 | to_run, not_run = prepare_py_test_controllers(inc_slow=options.all) |
|
275 | to_run, not_run = prepare_py_test_controllers(inc_slow=options.all) | |
272 |
|
276 | |||
273 |
configure_controllers(to_run, xunit=options.xunit, coverage=options.coverage |
|
277 | configure_controllers(to_run, xunit=options.xunit, coverage=options.coverage, | |
|
278 | extra_args=options.extra_args) | |||
274 |
|
279 | |||
275 | def justify(ltext, rtext, width=70, fill='-'): |
|
280 | def justify(ltext, rtext, width=70, fill='-'): | |
276 | ltext += ' ' |
|
281 | ltext += ' ' | |
@@ -381,6 +386,18 b' def run_iptestall(options):' | |||||
381 |
|
386 | |||
382 |
|
387 | |||
383 | def main(): |
|
388 | def main(): | |
|
389 | # Arguments after -- should be passed through to nose. Argparse treats | |||
|
390 | # everything after -- as regular positional arguments, so we separate them | |||
|
391 | # first. | |||
|
392 | try: | |||
|
393 | ix = sys.argv.index('--') | |||
|
394 | except ValueError: | |||
|
395 | to_parse = sys.argv[1:] | |||
|
396 | extra_args = [] | |||
|
397 | else: | |||
|
398 | to_parse = sys.argv[1:ix] | |||
|
399 | extra_args = sys.argv[ix+1:] | |||
|
400 | ||||
384 | parser = argparse.ArgumentParser(description='Run IPython test suite') |
|
401 | parser = argparse.ArgumentParser(description='Run IPython test suite') | |
385 | parser.add_argument('testgroups', nargs='*', |
|
402 | parser.add_argument('testgroups', nargs='*', | |
386 | help='Run specified groups of tests. If omitted, run ' |
|
403 | help='Run specified groups of tests. If omitted, run ' | |
@@ -395,7 +412,8 b' def main():' | |||||
395 | help="Measure test coverage. Specify 'html' or " |
|
412 | help="Measure test coverage. Specify 'html' or " | |
396 | "'xml' to get reports.") |
|
413 | "'xml' to get reports.") | |
397 |
|
414 | |||
398 | options = parser.parse_args() |
|
415 | options = parser.parse_args(to_parse) | |
|
416 | options.extra_args = extra_args | |||
399 |
|
417 | |||
400 | run_iptestall(options) |
|
418 | run_iptestall(options) | |
401 |
|
419 |
General Comments 0
You need to be logged in to leave comments.
Login now