BoolVariable('sparse_tests', 'Link tests against object files and not the senf lib', False)
)
+if 'test_changes' in COMMAND_LINE_TARGETS and not env.has_key('only_tests'):
+ if os.popen("svnversion").read().strip() == "exported":
+ env['only_tests'] = " ".join(os.popen("git ls-files --modified").read().strip().split("\n"))
+ else:
+ env['only_tests'] = " ".join(l[7:]
+ for l in os.popen("svn status").read().rstrip().split("\n")
+ if l[0] == 'M')
+
if env.has_key('only_tests') : env['sparse_tests'] = True
Export('env')
SConscript("HowTos/SConscript")
SConscript("doclib/SConscript")
if env['sparse_tests']:
- SparseTestHack.build(env)
+ SparseTestHack.build(env, 'test_changes' in COMMAND_LINE_TARGETS)
###########################################################################
# Define build targets
env.Alias('install_all', env.FindInstalledFiles())
env.Alias('default', DEFAULT_TARGETS)
env.Alias('all_tests', env.FindAllBoostUnitTests())
+env.Alias('test_changes', 'all_tests')
env.Alias('all', [ 'default', 'all_tests', 'examples', 'all_docs' ])
#### prepare
# This needs to be called after all build targets have been set
# up. This is important since the list of object targets needs to be
# complete.
-def build(env):
+def build(env, accept_unknown_tests=False):
env = env.Clone(LIBS = [ '$EXTRA_LIBS' ])
if env.has_key("only_tests"):
only_tests = {}
env.RealBoostUnitTest(target, objects, **kw)
- only_tests = [ k for k,v in only_tests.iteritems() if not v ]
- if only_tests:
- raise SCons.Errors.StopError("Unknown unit tests (only_tests): %s."
- % ", ".join("`%s'" % x for x in only_tests))
+ if not accept_unknown_tests:
+ only_tests = [ k for k,v in only_tests.iteritems() if not v ]
+ if only_tests:
+ raise SCons.Errors.StopError("Unknown unit tests (only_tests): %s."
+ % ", ".join("`%s'" % x for x in only_tests))