summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/BuilderTests.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2004-08-31 01:25:53 (GMT)
committerSteven Knight <knight@baldmt.com>2004-08-31 01:25:53 (GMT)
commitc0c32fb930d47c02fcdceea5d1759a35c4a92025 (patch)
tree6a1b17647873df7fab2d197e016225f592657a63 /src/engine/SCons/BuilderTests.py
parentf09896916e7eb4fbd1d334d22e99e6b8d8a64696 (diff)
downloadSCons-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.py45
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_')