summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/EnvironmentTests.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/engine/SCons/EnvironmentTests.py')
-rw-r--r--src/engine/SCons/EnvironmentTests.py53
1 files changed, 50 insertions, 3 deletions
diff --git a/src/engine/SCons/EnvironmentTests.py b/src/engine/SCons/EnvironmentTests.py
index 2e7003a..75e5e83 100644
--- a/src/engine/SCons/EnvironmentTests.py
+++ b/src/engine/SCons/EnvironmentTests.py
@@ -52,6 +52,7 @@ def diff_env(env1, env2):
s2 = s2 + "}\n"
return s1 + s2
+called_it = {}
built_it = {}
class Builder:
@@ -59,10 +60,15 @@ class Builder:
a target is simply setting a value in the dictionary.
"""
def __init__(self, name = None):
- self.name = name
+ self.name = name
+
+ def __call__(self, env, **kw):
+ global called_it
+ called_it.update(kw)
def execute(self, target = None, **kw):
- built_it[target] = 1
+ global built_it
+ built_it[target] = 1
@@ -86,7 +92,36 @@ class Scanner:
class EnvironmentTestCase(unittest.TestCase):
- def test_Builders(self):
+ def test_Builder_calls(self):
+ """Test Builder calls through different environments
+ """
+ global called_it
+
+ b1 = Builder()
+ b2 = Builder()
+
+ env = Environment()
+ env.Replace(BUILDERS = { 'builder1' : b1,
+ 'builder2' : b2 })
+ called_it = {}
+ env.builder1(target = 'out1')
+ assert called_it['target'] == 'out1', called_it
+ assert not called_it.has_key('source')
+
+ called_it = {}
+ env.builder2(target = 'out2', xyzzy = 1)
+ assert called_it['target'] == 'out2', called_it
+ assert called_it['xyzzy'] == 1, called_it
+ assert not called_it.has_key('source')
+
+ called_it = {}
+ env.builder1(foo = 'bar')
+ assert called_it['foo'] == 'bar', called_it
+ assert not called_it.has_key('target')
+ assert not called_it.has_key('source')
+
+
+ def test_Builder_execs(self):
"""Test Builder execution through different environments
One environment is initialized with a single
@@ -372,6 +407,18 @@ class EnvironmentTestCase(unittest.TestCase):
assert 'foo1.in' in map(lambda x: x.path, t.sources)
assert 'foo2.in' in map(lambda x: x.path, t.sources)
+ def test_SideEffect(self):
+ """Test the SideEffect() method"""
+ env = Environment()
+ foo = env.Object('foo.obj', 'foo.cpp')
+ bar = env.Object('bar.obj', 'bar.cpp')
+ s = env.SideEffect('mylib.pdb', ['foo.obj', 'bar.obj'])
+ assert s.side_effect
+ assert foo.side_effects == [s]
+ assert bar.side_effects == [s]
+ assert s.depends_on([bar])
+ assert s.depends_on([foo])
+
def test_subst(self):
"""Test substituting construction variables within strings