diff options
| author | Steven Knight <knight@baldmt.com> | 2004-11-21 16:18:50 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-11-21 16:18:50 (GMT) |
| commit | 8781e4655cea19b34cd062768d9f09b359fe9a09 (patch) | |
| tree | 3b66939e6dc14061317ca19f3371b60c2272c215 /src/engine/SCons | |
| parent | ffc625f8cf332399ba754bf2ebe9e700e5122eac (diff) | |
| download | SCons-8781e4655cea19b34cd062768d9f09b359fe9a09.zip SCons-8781e4655cea19b34cd062768d9f09b359fe9a09.tar.gz SCons-8781e4655cea19b34cd062768d9f09b359fe9a09.tar.bz2 | |
Fix Value node expansion in command-line strings. (Kevin Quick)
Diffstat (limited to 'src/engine/SCons')
| -rw-r--r-- | src/engine/SCons/Util.py | 10 | ||||
| -rw-r--r-- | src/engine/SCons/UtilTests.py | 19 |
2 files changed, 21 insertions, 8 deletions
diff --git a/src/engine/SCons/Util.py b/src/engine/SCons/Util.py index ec809b9..896abaf 100644 --- a/src/engine/SCons/Util.py +++ b/src/engine/SCons/Util.py @@ -493,7 +493,15 @@ def subst_dict(target, source): dict['TARGET'] = Target_or_Source(tnl) if source: - snl = NLWrapper(source, lambda x: x.rfile().get_subst_proxy()) + def get_src_subst_proxy(node): + try: + rfile = node.rfile + except AttributeError: + pass + else: + node = rfile() + return node.get_subst_proxy() + snl = NLWrapper(source, get_src_subst_proxy) dict['SOURCES'] = Targets_or_Sources(snl) dict['SOURCE'] = Target_or_Source(snl) diff --git a/src/engine/SCons/UtilTests.py b/src/engine/SCons/UtilTests.py index 18fd3c2..c5c5297 100644 --- a/src/engine/SCons/UtilTests.py +++ b/src/engine/SCons/UtilTests.py @@ -1364,27 +1364,32 @@ class UtilTestCase(unittest.TestCase): assert SOURCES == ['s1', 's2'], d['SOURCES'] assert str(d['SOURCE']) == 's1', d['SOURCE'] - class N: + class V: + # Fake Value node with no rfile() method. def __init__(self, name): self.name = name def __str__(self): - return self.name - def rfile(self): - return self.__class__('rstr-' + self.name) + return 'v-'+self.name def get_subst_proxy(self): return self + class N(V): + def rfile(self): + return self.__class__('rstr-' + self.name) + t3 = N('t3') t4 = DummyNode('t4') + t5 = V('t5') s3 = DummyNode('s3') s4 = N('s4') - d = subst_dict(target=[t3, t4], source=[s3, s4]) + s5 = V('s5') + d = subst_dict(target=[t3, t4, t5], source=[s3, s4, s5]) TARGETS = map(lambda x: str(x), d['TARGETS']) TARGETS.sort() - assert TARGETS == ['t3', 't4'], d['TARGETS'] + assert TARGETS == ['t4', 'v-t3', 'v-t5'], TARGETS SOURCES = map(lambda x: str(x), d['SOURCES']) SOURCES.sort() - assert SOURCES == ['rstr-s4', 's3'], d['SOURCES'] + assert SOURCES == ['s3', 'v-rstr-s4', 'v-s5'], SOURCES def test_PrependPath(self): """Test prepending to a path""" |
