diff options
| author | Steven Knight <knight@baldmt.com> | 2004-08-31 01:25:53 (GMT) |
|---|---|---|
| committer | Steven Knight <knight@baldmt.com> | 2004-08-31 01:25:53 (GMT) |
| commit | c0c32fb930d47c02fcdceea5d1759a35c4a92025 (patch) | |
| tree | 6a1b17647873df7fab2d197e016225f592657a63 /src/engine/SCons/BuilderTests.py | |
| parent | f09896916e7eb4fbd1d334d22e99e6b8d8a64696 (diff) | |
| download | SCons-c0c32fb930d47c02fcdceea5d1759a35c4a92025.zip SCons-c0c32fb930d47c02fcdceea5d1759a35c4a92025.tar.gz SCons-c0c32fb930d47c02fcdceea5d1759a35c4a92025.tar.bz2 | |
Fix how get_name() returns Builder names from subclass instanes. (Kevin Quick)
Diffstat (limited to 'src/engine/SCons/BuilderTests.py')
| -rw-r--r-- | src/engine/SCons/BuilderTests.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/engine/SCons/BuilderTests.py b/src/engine/SCons/BuilderTests.py index 5a605ec..bbff627 100644 --- a/src/engine/SCons/BuilderTests.py +++ b/src/engine/SCons/BuilderTests.py @@ -1075,6 +1075,51 @@ class BuilderTestCase(unittest.TestCase): assert str(tgt.sources[0]) == 'i0.w', map(str, tgt.sources) assert str(tgt.sources[1]) == 'i1.y', map(str, tgt.sources) + def test_get_name(self): + """Test getting name of builder. + + Each type of builder should return it's environment-specific + name when queried appropriately. """ + + b1 = SCons.Builder.Builder(action='foo', suffix='.o') + b2 = SCons.Builder.Builder(action='foo', suffix='.c') + b3 = SCons.Builder.MultiStepBuilder(action='bar', + src_suffix = '.foo', + src_builder = b1) + b4 = SCons.Builder.Builder(action={}) + assert isinstance(b4, SCons.Builder.CompositeBuilder) + assert isinstance(b4.action, SCons.Action.CommandGeneratorAction) + + env = Environment(BUILDERS={'bldr1': b1, + 'bldr2': b2, + 'bldr3': b3, + 'bldr4': b4}) + env2 = Environment(BUILDERS={'B1': b1, + 'B2': b2, + 'B3': b3, + 'B4': b4}) + assert b1.get_name(env) == 'bldr1', b1.get_name(env2) == 'B1' + assert b2.get_name(env) == 'bldr2', b2.get_name(env2) == 'B2' + assert b3.get_name(env) == 'bldr3', b3.get_name(env2) == 'B3' + assert b4.get_name(env) == 'bldr4', b4.get_name(env2) == 'B4' + + for B in b3.get_src_builders(env): + assert B.get_name(env) == 'bldr1' + for B in b3.get_src_builders(env2): + assert B.get_name(env2) == 'B1' + + tgts = b1(env, target = [outfile, outfile2], source='moo') + for t in tgts: + assert t.builder.get_name(env) == 'ListBuilder(bldr1)' + # The following are not symbolically correct, because the + # ListBuilder was only created on behalf of env, so it + # would probably be OK if better correctness + # env-to-builder mappings caused this to fail in the + # future. + assert t.builder.get_name(env2) == 'ListBuilder(B1)' + + tgt = b4(env, target = 'moo', source='cow') + assert tgt[0].builder.get_name(env) == 'bldr4' if __name__ == "__main__": suite = unittest.makeSuite(BuilderTestCase, 'test_') |
