diff options
author | Steven Knight <knight@baldmt.com> | 2003-04-27 04:37:44 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2003-04-27 04:37:44 (GMT) |
commit | 7cabdf921ae908a3172acd103acbe16f3e75e6b8 (patch) | |
tree | f4592e3cb3d44f138f814a17f02cf492e88b4f4a /src/engine | |
parent | 2f2de15b1c371600d955451cd479b58bab78a517 (diff) | |
download | SCons-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.py | 4 | ||||
-rw-r--r-- | src/engine/SCons/ActionTests.py | 11 |
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): |