#!/usr/bin/env python """Script to run a C++ unit test binary. Usage: $> python run_cc_test.py -t TARGET -b BINARY [-l LOGFILE] TARGET is the fully qualified name of the test target. BINARY is the test binary. If LOGFILE is specified, then the test output is logged into it. """ import argparse import sys import build_utils def parse_args(): parser = argparse.ArgumentParser() parser.add_argument("-t", "--target", required=True, type=str, help="Name of the test target.") parser.add_argument("-b", "--binary", required=True, type=str, help="Path to the test binary.") parser.add_argument("-l", "--logfile", type=str, help="Path to log file to log test output.") return parser.parse_args() def main(): options = parse_args() returncode, stdout = build_utils.run_cmd([options.binary]) if options.logfile: with open(options.logfile, "w") as logfile: logfile.write(stdout) if returncode == 0: print(build_utils.pass_msg(options.target)) else: print(build_utils.failure_msg(options.target, options.logfile)) sys.exit(1) if __name__ == "__main__": main()