#!/usr/bin/env python import os import sys import subprocess import shutil CMAKE = '@CMAKE_COMMAND@' CMAKE_BUILD_TYPE = '@CMAKE_BUILD_TYPE@' TMPDIR = '@TMPDIR@' SRCDIR = '@SRCDIR@' GFLAGS_DIR = '@gflags_BINARY_DIR@' if __name__ == "__main__": if len(sys.argv) != 4: sys.stderr.write(' '.join(['usage:', sys.argv[0], '<test_name> <srcdir> <expect_fail:0|1>\n'])) sys.exit(1) test_name = sys.argv[1] srcdir = sys.argv[2] expect_fail = (sys.argv[3].lower() in ['true', 'yes', 'on', '1']) bindir = os.path.join(TMPDIR, test_name) if TMPDIR == '': sys.stderr.write('Temporary directory not set!\n') sys.exit(1) # create build directory if os.path.isdir(bindir): shutil.rmtree(bindir) os.makedirs(bindir) # configure the build tree if subprocess.call([CMAKE, '-DCMAKE_BUILD_TYPE:STRING='+CMAKE_BUILD_TYPE, '-Dgflags_DIR:PATH='+GFLAGS_DIR, '-DTEST_NAME:STRING='+test_name, srcdir], cwd=bindir) != 0: sys.stderr.write('Failed to configure the build tree!\n') sys.exit(1) # build the test project exit_code = subprocess.call([CMAKE, '--build', bindir, '--config', CMAKE_BUILD_TYPE], cwd=bindir) if expect_fail == True: if exit_code == 0: sys.stderr.write('Build expected to fail, but it succeeded!\n') sys.exit(1) else: sys.stderr.write('Build failed as expected\n') exit_code = 0 sys.exit(exit_code)