Add sub-project (senf/Ext) support to test_changes target
g0dil [Fri, 9 Oct 2009 14:03:09 +0000 (14:03 +0000)]
git-svn-id: https://svn.berlios.de/svnroot/repos/senf/trunk@1489 270642c3-0616-0410-b53a-bc976706d245

SConstruct
site_scons/SparseTestHack.py

index de6f8aa..435bfb4 100644 (file)
@@ -120,12 +120,7 @@ senfutil.parseArguments(
 )
 
 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')
index 76e9ee2..f1a6f83 100644 (file)
@@ -129,3 +129,22 @@ def build(env, accept_unknown_tests=False):
         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) ]