Files
oboe/test/SConscript

50 lines
1.8 KiB
Python

import subprocess
Import("env platform party_classes common_sources")
arch_short = '64' if (env['bits'] == '64') else '86'
# Add path to scons
env.Append(CPPPATH=['./deps/Catch2/single_include/catch2'])
test_sources = Glob("""*.cpp""") + Split("""
#build/obj/scenedit/scen.fileio.cpp
""")
debug_symbols = None
if str(platform) == "win32" and 'msvc' in env["TOOLS"]:
link_flags = f'/nologo /SUBSYSTEM:CONSOLE /MACHINE:X{arch_short}'
if env['debug']:
link_flags += ' /DEBUG'
test = env.Program("#build/bin/boe_test", party_classes + common_sources + test_sources, LINKFLAGS=link_flags)
if env['debug']:
debug_symbols = test[0].abspath.replace(".exe", ".pdb")
else:
test = env.Program("#build/bin/boe_test", test_sources + party_classes + common_sources)
def run_tests(env,target,source):
app = str(source[0].abspath)
exit_code = subprocess.call(app)
if exit_code == 0:
open(target[0].abspath,'w').write("PASSED\n")
else:
print(f'Unit test failure! Exit code: {exit_code}')
# TODO: When issue #449 is fixed, Windows should also exit on test failure:
if str(platform) != "win32":
exit(exit_code)
env.Install("#build/test/", test)
if debug_symbols is not None:
env.Install("#build/test/", debug_symbols)
env.AlwaysBuild(env.Install("#build/test/", Dir("#test/files")))
env.AlwaysBuild(env.Install("#build/rsrc/", Dir("#rsrc/strings")))
# The dialog construction test case requires these:
env.AlwaysBuild(env.Install("#build/rsrc/", Dir("#rsrc/dialogs")))
env.AlwaysBuild(env.Install("#build/rsrc/", Dir("#rsrc/fonts")))
env.AlwaysBuild(env.Install("#build/rsrc/", Dir("#rsrc/graphics")))
# The town boundaries conversion test requires this:
env.AlwaysBuild(env.Install("#build/rsrc/", Dir("#rsrc/sounds")))
env.Command("#build/test/junk/", '', 'mkdir "' + Dir("#build/test/junk").path + '"')
env.Command("#build/test/passed", test, run_tests, chdir=True)