base-cpp/site_scons/site_tools/test.py
Eryn Wells c56cc557f8 Redo the _whooollleee_ build system
Following the tutorials on http://www.ostricher.com/tag/scons/, I rebuilt the
build system so that SConscript files are *much* easier to write.
2015-10-16 23:12:39 -07:00

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