blob: 71b671165bbbde4af24758128fbb2eeb9221bcb3 [file] [log] [blame]
#!/usr/bin/env python
from __future__ import print_function, unicode_literals
"""Take a clar executable and create a CTest file for each suite
"""
from os import path
import subprocess
def parse_suites(exe):
"""Ask the clar executable 'exe' for its suites
Returns a list of suites
"""
suites = subprocess.check_output([exe, '-l'])
return map(lambda s: s.split(' ')[1], # get the name from each line of output
filter(lambda s: s, # Remove any empty lines
map(lambda s: s.strip(), # remove leading whitespace
suites.split('\n')[3:]))) # skip first three which are info messages
if __name__ == '__main__':
from argparse import ArgumentParser
parser = ArgumentParser(description="clar to CTest job creator")
parser.add_argument('clar', type=unicode, help="Clar runner")
parser.add_argument('testfile', type=unicode, help="Test file to write")
args = parser.parse_args()
if not path.isfile(args.clar):
print("fatal: clar runner not found", file=sys.stderr)
exit(1)
suites = parse_suites(args.clar)
print("Found {} suites".format(len(suites)))
with open(args.testfile, 'w') as f:
print("# File generated by ctest-jobs.py", file=f)
for suite in suites:
name = "{}-{}".format(args.clar, suite)
print("add_test({} \"{}\" \"-v\" \"-s{}\")".format(name, args.clar, suite), file=f)