Merge "Convert file names to regular expressions"
This commit is contained in:
commit
5a739f9ac0
@ -29,11 +29,19 @@ def parse_args():
|
|||||||
parser.add_argument('--blacklist_file', '-b',
|
parser.add_argument('--blacklist_file', '-b',
|
||||||
help='Path to a blacklist file, this file contains a'
|
help='Path to a blacklist file, this file contains a'
|
||||||
' separate regex exclude on each newline')
|
' separate regex exclude on each newline')
|
||||||
parser.add_argument('--regex', '-r',
|
group = parser.add_mutually_exclusive_group()
|
||||||
help='A normal testr selection regex. If a blacklist '
|
group.add_argument('--regex', '-r',
|
||||||
'file is specified, the regex will be appended '
|
help='A normal testr selection regex. If a blacklist '
|
||||||
'to the end of the generated regex from that '
|
'file is specified, the regex will be appended '
|
||||||
'file')
|
'to the end of the generated regex from that '
|
||||||
|
'file.')
|
||||||
|
group.add_argument('--path', metavar='FILE_OR_DIRECTORY',
|
||||||
|
help='A file name or directory of tests to run.')
|
||||||
|
group.add_argument('--no-discover', '-n', metavar='TEST_ID',
|
||||||
|
help="Takes in a single test to bypasses test "
|
||||||
|
"discover and just excute the test specified. "
|
||||||
|
"A file name may be used in place of a test "
|
||||||
|
"name.")
|
||||||
parser.add_argument('--pretty', '-p', dest='pretty', action='store_true',
|
parser.add_argument('--pretty', '-p', dest='pretty', action='store_true',
|
||||||
help='Print pretty output from subunit-trace. This is '
|
help='Print pretty output from subunit-trace. This is '
|
||||||
'mutually exclusive with --subunit')
|
'mutually exclusive with --subunit')
|
||||||
@ -44,9 +52,6 @@ def parse_args():
|
|||||||
'this is mutuall exclusive with --pretty')
|
'this is mutuall exclusive with --pretty')
|
||||||
parser.add_argument('--list', '-l', action='store_true',
|
parser.add_argument('--list', '-l', action='store_true',
|
||||||
help='List all the tests which will be run.')
|
help='List all the tests which will be run.')
|
||||||
parser.add_argument('--no-discover', '-n', metavar='TEST_ID',
|
|
||||||
help="Takes in a single test to bypasses test "
|
|
||||||
"discover and just excute the test specified")
|
|
||||||
parser.add_argument('--slowest', dest='slowest', action='store_true',
|
parser.add_argument('--slowest', dest='slowest', action='store_true',
|
||||||
help="after the test run print the slowest tests")
|
help="after the test run print the slowest tests")
|
||||||
parser.add_argument('--no-slowest', dest='slowest', action='store_false',
|
parser.add_argument('--no-slowest', dest='slowest', action='store_false',
|
||||||
@ -112,6 +117,11 @@ def print_skips(regex, message):
|
|||||||
print('\n')
|
print('\n')
|
||||||
|
|
||||||
|
|
||||||
|
def path_to_regex(path):
|
||||||
|
root, _ = os.path.splitext(path)
|
||||||
|
return root.replace('/', '.')
|
||||||
|
|
||||||
|
|
||||||
def construct_regex(blacklist_file, regex, print_exclude):
|
def construct_regex(blacklist_file, regex, print_exclude):
|
||||||
if not blacklist_file:
|
if not blacklist_file:
|
||||||
exclude_regex = ''
|
exclude_regex = ''
|
||||||
@ -248,7 +258,11 @@ def main():
|
|||||||
msg = "You can not use until_failure mode with pdb or no-discover"
|
msg = "You can not use until_failure mode with pdb or no-discover"
|
||||||
print(msg)
|
print(msg)
|
||||||
exit(5)
|
exit(5)
|
||||||
exclude_regex = construct_regex(opts.blacklist_file, opts.regex,
|
if opts.path:
|
||||||
|
regex = path_to_regex(opts.path)
|
||||||
|
else:
|
||||||
|
regex = opts.regex
|
||||||
|
exclude_regex = construct_regex(opts.blacklist_file, regex,
|
||||||
opts.print_exclude)
|
opts.print_exclude)
|
||||||
if not os.path.isdir('.testrepository'):
|
if not os.path.isdir('.testrepository'):
|
||||||
subprocess.call(['testr', 'init'])
|
subprocess.call(['testr', 'init'])
|
||||||
@ -259,6 +273,9 @@ def main():
|
|||||||
elif opts.pdb:
|
elif opts.pdb:
|
||||||
exit(call_testtools_run(opts.pdb))
|
exit(call_testtools_run(opts.pdb))
|
||||||
else:
|
else:
|
||||||
|
test_to_run = opts.no_discover
|
||||||
|
if test_to_run.find('/') != -1:
|
||||||
|
test_to_run = path_to_regex(test_to_run)
|
||||||
exit(call_subunit_run(opts.no_discover, opts.pretty, opts.subunit))
|
exit(call_subunit_run(opts.no_discover, opts.pretty, opts.subunit))
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@ -19,10 +19,14 @@ test_os_testr
|
|||||||
Tests for `os_testr` module.
|
Tests for `os_testr` module.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from os_testr import os_testr
|
||||||
from os_testr.tests import base
|
from os_testr.tests import base
|
||||||
|
|
||||||
|
|
||||||
class TestOs_testr(base.TestCase):
|
class Test_Construct_Regex(base.TestCase):
|
||||||
|
|
||||||
def test_something(self):
|
def test_file_name(self):
|
||||||
pass
|
result = os_testr.path_to_regex("tests/network/v2/test_net.py")
|
||||||
|
self.assertEqual("tests.network.v2.test_net", result)
|
||||||
|
result = os_testr.path_to_regex("openstack/tests/network/v2")
|
||||||
|
self.assertEqual("openstack.tests.network.v2", result)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user