summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-05-25 14:12:47 (GMT)
committerSteven Knight <knight@baldmt.com>2004-05-25 14:12:47 (GMT)
commit18fa3dcb772e0c7baab9b9f37678fc908017f4e3 (patch)
tree4df8402e19d7822627f0cb5da9166931ef5a28f6
parent1e098e1b44b7c80c512edb47fec26d6c058c52b1 (diff)
downloadSCons-18fa3dcb772e0c7baab9b9f37678fc908017f4e3.zip
SCons-18fa3dcb772e0c7baab9b9f37678fc908017f4e3.tar.gz
SCons-18fa3dcb772e0c7baab9b9f37678fc908017f4e3.tar.bz2
Make env.SConscript() expand dirs names.
-rw-r--r--src/engine/SCons/Script/SConscript.py7
-rw-r--r--test/SConscript.py32
2 files changed, 32 insertions, 7 deletions
diff --git a/src/engine/SCons/Script/SConscript.py b/src/engine/SCons/Script/SConscript.py
index 405ce71..81450e9 100644
--- a/src/engine/SCons/Script/SConscript.py
+++ b/src/engine/SCons/Script/SConscript.py
@@ -493,6 +493,13 @@ class SConsEnvironment(SCons.Environment.Base):
for key, val in kw.items():
if SCons.Util.is_String(val):
val = self.subst(val)
+ elif SCons.Util.is_List(val):
+ result = []
+ for v in val:
+ if SCons.Util.is_String(v):
+ v = self.subst(v)
+ result.append(v)
+ val = result
subst_kw[key] = val
files, exports = self._get_SConscript_filenames(ls, subst_kw)
diff --git a/test/SConscript.py b/test/SConscript.py
index 69b7a82..e70fb36 100644
--- a/test/SConscript.py
+++ b/test/SConscript.py
@@ -364,24 +364,42 @@ test.run(arguments = ".",
build_str = "scons: `.' is up to date.\n"))
# Test calling SConscript through a construction environment.
-test.subdir('sub')
+test.subdir('sub1', 'sub2')
+
test.write("SConstruct", """\
-env = Environment(SUBDIR='sub')
+env = Environment(SUB1='sub1', SUB2='sub2')
print "SConstruct"
x = 'xxx'
-env.Export("x")
-env.SConscript('$SUBDIR/SConscript')
+y = 'yyy'
+env.Export(["x", "y"])
+env.SConscript('$SUB1/SConscript')
+env.SConscript(dirs=['$SUB2'])
""")
-test.write(['sub', 'SConscript'], """\
+test.write(['sub1', 'SConscript'], """\
env = Environment()
env.Import("x")
-print "sub/SConscript"
+print "sub1/SConscript"
print "x =", x
""")
+test.write(['sub2', 'SConscript'], """\
+env = Environment()
+env.Import("y")
+print "sub2/SConscript"
+print "y =", y
+""")
+
+expect = """\
+SConstruct
+sub1/SConscript
+x = xxx
+sub2/SConscript
+y = yyy
+"""
+
test.run(arguments = ".",
- stdout = test.wrap_stdout(read_str = "SConstruct\nsub/SConscript\nx = xxx\n",
+ stdout = test.wrap_stdout(read_str = expect,
build_str = "scons: `.' is up to date.\n"))
test.write("SConstruct", """\