Merge "Enable testr run passthrough arguments"
This commit is contained in:
commit
c0e03d3e31
@ -86,7 +86,7 @@ def get_parser(args):
|
|||||||
'prints the comment from the same line and all '
|
'prints the comment from the same line and all '
|
||||||
'skipped tests before the test run')
|
'skipped tests before the test run')
|
||||||
parser.set_defaults(pretty=True, slowest=True, parallel=True)
|
parser.set_defaults(pretty=True, slowest=True, parallel=True)
|
||||||
return parser.parse_args(args)
|
return parser.parse_known_args(args)
|
||||||
|
|
||||||
|
|
||||||
def _get_test_list(regex, env=None):
|
def _get_test_list(regex, env=None):
|
||||||
@ -175,7 +175,8 @@ def construct_regex(blacklist_file, whitelist_file, regex, print_exclude):
|
|||||||
|
|
||||||
|
|
||||||
def call_testr(regex, subunit, pretty, list_tests, slowest, parallel, concur,
|
def call_testr(regex, subunit, pretty, list_tests, slowest, parallel, concur,
|
||||||
until_failure, color):
|
until_failure, color, others=None):
|
||||||
|
others = others or []
|
||||||
if parallel:
|
if parallel:
|
||||||
cmd = ['testr', 'run', '--parallel']
|
cmd = ['testr', 'run', '--parallel']
|
||||||
if concur:
|
if concur:
|
||||||
@ -237,11 +238,13 @@ def call_testr(regex, subunit, pretty, list_tests, slowest, parallel, concur,
|
|||||||
exit(0)
|
exit(0)
|
||||||
# If not until-failure special case call testr like normal
|
# If not until-failure special case call testr like normal
|
||||||
elif pretty and not list_tests:
|
elif pretty and not list_tests:
|
||||||
|
cmd.extend(others)
|
||||||
ps = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE)
|
ps = subprocess.Popen(cmd, env=env, stdout=subprocess.PIPE)
|
||||||
proc = subprocess.Popen(subunit_trace_cmd,
|
proc = subprocess.Popen(subunit_trace_cmd,
|
||||||
env=env, stdin=ps.stdout)
|
env=env, stdin=ps.stdout)
|
||||||
ps.stdout.close()
|
ps.stdout.close()
|
||||||
else:
|
else:
|
||||||
|
cmd.extend(others)
|
||||||
proc = subprocess.Popen(cmd, env=env)
|
proc = subprocess.Popen(cmd, env=env)
|
||||||
proc.communicate()
|
proc.communicate()
|
||||||
return_code = proc.returncode
|
return_code = proc.returncode
|
||||||
@ -268,7 +271,7 @@ def call_subunit_run(test_id, pretty, subunit):
|
|||||||
testtools_run.main([sys.argv[0], test_id], sys.stdout)
|
testtools_run.main([sys.argv[0], test_id], sys.stdout)
|
||||||
|
|
||||||
|
|
||||||
def _select_and_call_runner(opts, exclude_regex):
|
def _select_and_call_runner(opts, exclude_regex, others):
|
||||||
ec = 1
|
ec = 1
|
||||||
if not os.path.isdir('.testrepository'):
|
if not os.path.isdir('.testrepository'):
|
||||||
subprocess.call(['testr', 'init'])
|
subprocess.call(['testr', 'init'])
|
||||||
@ -276,8 +279,11 @@ def _select_and_call_runner(opts, exclude_regex):
|
|||||||
if not opts.no_discover and not opts.pdb:
|
if not opts.no_discover and not opts.pdb:
|
||||||
ec = call_testr(exclude_regex, opts.subunit, opts.pretty, opts.list,
|
ec = call_testr(exclude_regex, opts.subunit, opts.pretty, opts.list,
|
||||||
opts.slowest, opts.parallel, opts.concurrency,
|
opts.slowest, opts.parallel, opts.concurrency,
|
||||||
opts.until_failure, opts.color)
|
opts.until_failure, opts.color, others)
|
||||||
else:
|
else:
|
||||||
|
if others:
|
||||||
|
print('Unexpected arguments: ' + ' '.join(others))
|
||||||
|
return 2
|
||||||
test_to_run = opts.no_discover or opts.pdb
|
test_to_run = opts.no_discover or opts.pdb
|
||||||
if test_to_run.find('/') != -1:
|
if test_to_run.find('/') != -1:
|
||||||
test_to_run = path_to_regex(test_to_run)
|
test_to_run = path_to_regex(test_to_run)
|
||||||
@ -286,7 +292,7 @@ def _select_and_call_runner(opts, exclude_regex):
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
opts = get_parser(sys.argv[1:])
|
opts, others = get_parser(sys.argv[1:])
|
||||||
if opts.pretty and opts.subunit:
|
if opts.pretty and opts.subunit:
|
||||||
msg = ('Subunit output and pretty output cannot be specified at the '
|
msg = ('Subunit output and pretty output cannot be specified at the '
|
||||||
'same time')
|
'same time')
|
||||||
@ -313,7 +319,7 @@ def main():
|
|||||||
opts.whitelist_file,
|
opts.whitelist_file,
|
||||||
regex,
|
regex,
|
||||||
opts.print_exclude)
|
opts.print_exclude)
|
||||||
exit(_select_and_call_runner(opts, exclude_regex))
|
exit(_select_and_call_runner(opts, exclude_regex, others))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
main()
|
main()
|
||||||
|
@ -38,25 +38,25 @@ class TestPathToRegex(base.TestCase):
|
|||||||
class TestGetParser(base.TestCase):
|
class TestGetParser(base.TestCase):
|
||||||
def test_pretty(self):
|
def test_pretty(self):
|
||||||
namespace = os_testr.get_parser(['--pretty'])
|
namespace = os_testr.get_parser(['--pretty'])
|
||||||
self.assertEqual(True, namespace.pretty)
|
self.assertEqual(True, namespace[0].pretty)
|
||||||
namespace = os_testr.get_parser(['--no-pretty'])
|
namespace = os_testr.get_parser(['--no-pretty'])
|
||||||
self.assertEqual(False, namespace.pretty)
|
self.assertEqual(False, namespace[0].pretty)
|
||||||
self.assertRaises(SystemExit, os_testr.get_parser,
|
self.assertRaises(SystemExit, os_testr.get_parser,
|
||||||
['--no-pretty', '--pretty'])
|
['--no-pretty', '--pretty'])
|
||||||
|
|
||||||
def test_slowest(self):
|
def test_slowest(self):
|
||||||
namespace = os_testr.get_parser(['--slowest'])
|
namespace = os_testr.get_parser(['--slowest'])
|
||||||
self.assertEqual(True, namespace.slowest)
|
self.assertEqual(True, namespace[0].slowest)
|
||||||
namespace = os_testr.get_parser(['--no-slowest'])
|
namespace = os_testr.get_parser(['--no-slowest'])
|
||||||
self.assertEqual(False, namespace.slowest)
|
self.assertEqual(False, namespace[0].slowest)
|
||||||
self.assertRaises(SystemExit, os_testr.get_parser,
|
self.assertRaises(SystemExit, os_testr.get_parser,
|
||||||
['--no-slowest', '--slowest'])
|
['--no-slowest', '--slowest'])
|
||||||
|
|
||||||
def test_parallel(self):
|
def test_parallel(self):
|
||||||
namespace = os_testr.get_parser(['--parallel'])
|
namespace = os_testr.get_parser(['--parallel'])
|
||||||
self.assertEqual(True, namespace.parallel)
|
self.assertEqual(True, namespace[0].parallel)
|
||||||
namespace = os_testr.get_parser(['--serial'])
|
namespace = os_testr.get_parser(['--serial'])
|
||||||
self.assertEqual(False, namespace.parallel)
|
self.assertEqual(False, namespace[0].parallel)
|
||||||
self.assertRaises(SystemExit, os_testr.get_parser,
|
self.assertRaises(SystemExit, os_testr.get_parser,
|
||||||
['--parallel', '--serial'])
|
['--parallel', '--serial'])
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user