Following the tutorials on http://www.ostricher.com/tag/scons/, I rebuilt the build system so that SConscript files are *much* easier to write.
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
# test.py
|
|
# Eryn Wells <eryn@erynwells.me>
|
|
|
|
'''
|
|
Test builder for SCons. Test files are compiled to objects and stored in the
|
|
environment.
|
|
'''
|
|
|
|
def _process_test_dir(env, dir, program=None):
|
|
# TODO: Builder for test directories?
|
|
pass
|
|
|
|
|
|
def _build_test_object(env, source, program=None):
|
|
obj = env.Object(source)
|
|
if not program:
|
|
program = 'test'
|
|
try:
|
|
env.test_objects(program).extend(obj)
|
|
except TypeError:
|
|
env.test_objects(program).append(obj)
|
|
return obj
|
|
|
|
|
|
def _build_test_program(env, name=None):
|
|
if not name:
|
|
name = 'test'
|
|
prog = env.Program(name, env.test_objects(name), LIBS=[env.lib('gtest')])
|
|
env.register_test_program(name, prog)
|
|
return
|
|
|
|
|
|
def _run_tests(env, name=None):
|
|
if not name:
|
|
name = 'test'
|
|
cmd = env.Command(env.test_program(name), None, '$SOURCE --gtest_color=yes')
|
|
env.AlwaysBuild(cmd)
|
|
return cmd
|
|
|
|
#
|
|
# SCons tool interface
|
|
#
|
|
|
|
def generate(env):
|
|
env.SetDefault(TESTS={})
|
|
env.AddMethod(_build_test_object, 'Test')
|
|
env.AddMethod(_build_test_program, 'TestProgram')
|
|
env.AddMethod(_run_tests, 'TestRun')
|
|
|
|
def exists(env):
|
|
return 'Object' in env
|