You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
54 lines
1.3 KiB
54 lines
1.3 KiB
#!/usr/bin/env python |
|
|
|
from sys import argv, stderr |
|
from subprocess import call, check_output |
|
|
|
|
|
def list_all_tests(bin_path): |
|
out = check_output(['./' + bin_path,"--gtest_list_tests"]) |
|
out = out.split("\n") |
|
if len(out) > 1: |
|
prefix = '' |
|
tests_list = [] |
|
for token in out: |
|
if len(token) == 0: |
|
continue |
|
if token[-1] == '.': |
|
prefix = token |
|
continue |
|
if token[0] == ' ' and token[1] == ' ' and len(token) > 0: |
|
tests_list.append(''.join([prefix, token[2:]])) |
|
continue |
|
|
|
return tests_list |
|
|
|
else: |
|
return [] |
|
|
|
|
|
|
|
def run_tests(bin_path, tests_list, args): |
|
for test in tests_list: |
|
call_args = ['./' + bin_path, ' '.join(args), '--gtest_filter=*{}'.format(test)] |
|
print(' '.join(call_args)) |
|
result = call(call_args) |
|
if result != 0: |
|
return result |
|
return 0 |
|
|
|
|
|
|
|
def main(): |
|
if len(argv) >= 2: |
|
try: |
|
exit(run_tests(argv[1], list_all_tests(argv[1]), argv[2:])) |
|
except: |
|
print('Error with arguments "' + ' '.join(argv[1:]) + '"') |
|
raise |
|
print('Runs each gtest test in a difference process') |
|
print('Usage: ' + argv[0] + ' path/to/gtest.bin [GTEST_OPTIONS]') |
|
exit(1) |
|
|
|
|
|
if __name__ == '__main__': |
|
main()
|
|
|