)
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')
+ env['only_tests'] = " ".join(x.abspath for x in SparseTestHack.findSCMChanges())
if env.has_key('only_tests') : env['sparse_tests'] = True
Export('env')
if only_tests:
raise SCons.Errors.StopError("Unknown unit tests (only_tests): %s."
% ", ".join("`%s'" % x for x in only_tests))
+
+def findSCMChanges():
+
+ def scmchanges(dir):
+ if os.popen("cd %s; svnversion" % dir.abspath).read().strip() == "exported":
+ return [ dir.Entry(x)
+ for x in os.popen("cd %s; git ls-files --modified"
+ % dir.abspath).read().strip().split("\n") ]
+ else:
+ return [ dir.Entry(l[7:])
+ for l in os.popen("cd %s; svn status"
+ % dir.abspath).read().rstrip().split("\n")
+ if l[0] == 'M' ]
+
+ changes=scmchanges(env.Dir('#'))
+ for dir in env.Dir('senf/Ext').glob("*"):
+ if isinstance(dir,SCons.Node.FS.Dir):
+ changes.extend(scmchanges(dir))
+ return [ x for x in changes if not isinstance(x,SCons.Node.FS.Dir) ]