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

#!/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()