summaryrefslogtreecommitdiffstats
path: root/src/engine/SCons/ExecutorTests.py
diff options
context:
space:
mode:
authorSteven Knight <knight@baldmt.com>2005-05-14 14:32:44 (GMT)
committerSteven Knight <knight@baldmt.com>2005-05-14 14:32:44 (GMT)
commit29aa03f7d41976f71cbe16090abf42b1364bb0c8 (patch)
tree479378732781cf8c06a2fbc935c149b4313eee6d /src/engine/SCons/ExecutorTests.py
parentf82f4ce830289473187299db9962f819ed74c877 (diff)
downloadSCons-29aa03f7d41976f71cbe16090abf42b1364bb0c8.zip
SCons-29aa03f7d41976f71cbe16090abf42b1364bb0c8.tar.gz
SCons-29aa03f7d41976f71cbe16090abf42b1364bb0c8.tar.bz2
Move pre- and post-actions lists from Node to Executor so expansions of ${TARGETS[1:]} work, and the actions aren't executed multiple times.
Diffstat (limited to 'src/engine/SCons/ExecutorTests.py')
-rw-r--r--src/engine/SCons/ExecutorTests.py71
1 files changed, 60 insertions, 11 deletions
diff --git a/src/engine/SCons/ExecutorTests.py b/src/engine/SCons/ExecutorTests.py
index 9ff30e5..fd16322 100644
--- a/src/engine/SCons/ExecutorTests.py
+++ b/src/engine/SCons/ExecutorTests.py
@@ -103,7 +103,7 @@ class ExecutorTestCase(unittest.TestCase):
"""Test creating an Executor"""
source_list = ['s1', 's2']
x = SCons.Executor.Executor('a', 'e', ['o'], 't', source_list)
- assert x.action == 'a', x.builder
+ assert x.action_list == ['a'], x.action_list
assert x.env == 'e', x.env
assert x.overridelist == ['o'], x.overridelist
assert x.targets == 't', x.targets
@@ -116,6 +116,26 @@ class ExecutorTestCase(unittest.TestCase):
else:
raise "Did not catch expected UserError"
+ def test__action_list(self):
+ """Test the {get,set}_action_list() methods"""
+ x = SCons.Executor.Executor('a', 'e', 'o', 't', ['s1', 's2'])
+
+ l = x.get_action_list()
+ assert l == ['a'], l
+
+ x.add_pre_action('pre')
+ x.add_post_action('post')
+ l = x.get_action_list()
+ assert l == ['pre', 'a', 'post'], l
+
+ x.set_action_list('b')
+ l = x.get_action_list()
+ assert l == ['pre', 'b', 'post'], l
+
+ x.set_action_list(['c'])
+ l = x.get_action_list()
+ assert l == ['pre', 'c', 'post'], l
+
def test_get_build_env(self):
"""Test fetching and generating a build environment"""
x = SCons.Executor.Executor(MyAction(), MyEnvironment(e=1), [],
@@ -196,11 +216,12 @@ class ExecutorTestCase(unittest.TestCase):
env = MyEnvironment()
a = MyAction([action1, action2])
- b = MyBuilder(env, {})
- b.action = a
- n = MyNode('n', [pre], [post])
- n.builder = b
- n.build()
+ t = MyNode('t')
+
+ x = SCons.Executor.Executor(a, env, [], t, ['s1', 's2'])
+ x.add_pre_action(pre)
+ x.add_post_action(post)
+ x(t, lambda x: x)
assert result == ['pre', 'action1', 'action2', 'post'], result
del result[:]
@@ -210,9 +231,10 @@ class ExecutorTestCase(unittest.TestCase):
errfunc(1)
return 1
- n = MyNode('n', [pre_err], [post])
- n.builder = b
- n.build()
+ x = SCons.Executor.Executor(a, env, [], t, ['s1', 's2'])
+ x.add_pre_action(pre_err)
+ x.add_post_action(post)
+ x(t, lambda x: x)
assert result == ['pre_err', 'action1', 'action2', 'post'], result
del result[:]
@@ -220,7 +242,7 @@ class ExecutorTestCase(unittest.TestCase):
raise "errfunc %s" % stat
try:
- n.build(errfunc)
+ x(t, errfunc)
except:
assert sys.exc_type == "errfunc 1", sys.exc_type
else:
@@ -257,6 +279,22 @@ class ExecutorTestCase(unittest.TestCase):
x.add_sources(['s3', 's1', 's4'])
assert x.sources == ['s1', 's2', 's3', 's4'], x.sources
+ def test_add_pre_action(self):
+ """Test adding pre-actions to an Executor"""
+ x = SCons.Executor.Executor('b', 'e', 'o', 't', ['s1', 's2'])
+ x.add_pre_action('a1')
+ assert x.pre_actions == ['a1']
+ x.add_pre_action('a2')
+ assert x.pre_actions == ['a1', 'a2']
+
+ def test_add_post_action(self):
+ """Test adding post-actions to an Executor"""
+ x = SCons.Executor.Executor('b', 'e', 'o', 't', ['s1', 's2'])
+ x.add_post_action('a1')
+ assert x.post_actions == ['a1']
+ x.add_post_action('a2')
+ assert x.post_actions == ['a1', 'a2']
+
def test___str__(self):
"""Test the __str__() method"""
env = MyEnvironment(S='string')
@@ -265,6 +303,15 @@ class ExecutorTestCase(unittest.TestCase):
c = str(x)
assert c == 'GENSTRING action1 action2 t s', c
+ x = SCons.Executor.Executor(MyAction(), env, [], ['t'], ['s'])
+ x.add_pre_action(MyAction(['pre']))
+ x.add_post_action(MyAction(['post']))
+ c = str(x)
+ expect = 'GENSTRING pre t s\n' + \
+ 'GENSTRING action1 action2 t s\n' + \
+ 'GENSTRING post t s'
+ assert c == expect, c
+
def test_nullify(self):
"""Test the nullify() method"""
env = MyEnvironment(S='string')
@@ -301,8 +348,10 @@ class ExecutorTestCase(unittest.TestCase):
x = SCons.Executor.Executor(MyAction(actions=['grow']), env, [],
['t'], ['s'])
+ x.add_pre_action(MyAction(['pre']))
+ x.add_post_action(MyAction(['post']))
c = x.get_contents()
- assert c == 'grow t s', c
+ assert c == 'pre t sgrow t spost t s', c
def test_get_timestamp(self):
"""Test fetching the "timestamp" """