50 lines
1.8 KiB
Python
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)
|