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