44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
|
#!/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)
|