summaryrefslogtreecommitdiffstats
path: root/src/engine
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2003-04-27 04:37:44 (GMT)
committerSteven Knight <knight@baldmt.com>2003-04-27 04:37:44 (GMT)
commit7cabdf921ae908a3172acd103acbe16f3e75e6b8 (patch)
treef4592e3cb3d44f138f814a17f02cf492e88b4f4a /src/engine
parent2f2de15b1c371600d955451cd479b58bab78a517 (diff)
downloadSCons-7cabdf921ae908a3172acd103acbe16f3e75e6b8.zip
SCons-7cabdf921ae908a3172acd103acbe16f3e75e6b8.tar.gz
SCons-7cabdf921ae908a3172acd103acbe16f3e75e6b8.tar.bz2
Evaluate Action varlists when calculating signatures. (Steve Christensen)
Diffstat (limited to 'src/engine')
-rw-r--r--src/engine/SCons/Action.py4
-rw-r--r--src/engine/SCons/ActionTests.py11
2 files changed, 12 insertions, 3 deletions
diff --git a/src/engine/SCons/Action.py b/src/engine/SCons/Action.py
index 9ad925a..764d527 100644
--- a/src/engine/SCons/Action.py
+++ b/src/engine/SCons/Action.py
@@ -402,8 +402,8 @@ class FunctionAction(ActionBase):
except:
# "self.execfunction" is a callable object.
code = self.execfunction.__call__.im_func.func_code.co_code
- return str(code) + string.join(map(lambda v, e=env: str(e[v]),
- self.varlist))
+ return str(code) + env.subst(string.join(map(lambda v: '${'+v+'}',
+ self.varlist)))
class ListAction(ActionBase):
"""Class for lists of other actions."""
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py
index fb77fe6..9189b4c 100644
--- a/src/engine/SCons/ActionTests.py
+++ b/src/engine/SCons/ActionTests.py
@@ -93,7 +93,10 @@ class Environment:
return s
try:
if s[0] == '$':
- return self.d.get(s[1:], '')
+ if s[1] == '{':
+ return self.d.get(s[2:-1], '')
+ else:
+ return self.d.get(s[1:], '')
except IndexError:
pass
return self.d.get(s, s)
@@ -844,6 +847,12 @@ class FunctionActionTestCase(unittest.TestCase):
c = a.get_contents(target=[], source=[], env=Environment())
assert c == "\177\036\000\177\037\000d\000\000S", repr(c)
+ a = SCons.Action.FunctionAction(Func, varlist=['XYZ'])
+ c = a.get_contents(target=[], source=[], env=Environment())
+ assert c == "\177\036\000\177\037\000d\000\000S", repr(c)
+ c = a.get_contents(target=[], source=[], env=Environment(XYZ = 'foo'))
+ assert c == "\177\036\000\177\037\000d\000\000Sfoo", repr(c)
+
class ListActionTestCase(unittest.TestCase):
def test_init(self):