From 18fa3dcb772e0c7baab9b9f37678fc908017f4e3 Mon Sep 17 00:00:00 2001 From: Steven Knight Date: Tue, 25 May 2004 14:12:47 +0000 Subject: Make env.SConscript() expand dirs names. --- src/engine/SCons/Script/SConscript.py | 7 +++++++ test/SConscript.py | 32 +++++++++++++++++++++++++------- 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", """\ -- cgit v0.12