diff options
author | Steven Knight <knight@baldmt.com> | 2002-04-22 19:21:26 (GMT) |
---|---|---|
committer | Steven Knight <knight@baldmt.com> | 2002-04-22 19:21:26 (GMT) |
commit | 74f98d3083cfbb859bf032dba37ed14bbb5219dd (patch) | |
tree | 331e7f6b4cb4d8ec98a4cce203ab22f4ba893f9b /src/engine/SCons/ActionTests.py | |
parent | 9afa958bb1b299c47b3197589ab7b9b89686cc6b (diff) | |
download | SCons-74f98d3083cfbb859bf032dba37ed14bbb5219dd.zip SCons-74f98d3083cfbb859bf032dba37ed14bbb5219dd.tar.gz SCons-74f98d3083cfbb859bf032dba37ed14bbb5219dd.tar.bz2 |
Several bug fixes from Charles Crain.
Diffstat (limited to 'src/engine/SCons/ActionTests.py')
-rw-r--r-- | src/engine/SCons/ActionTests.py | 55 |
1 files changed, 48 insertions, 7 deletions
diff --git a/src/engine/SCons/ActionTests.py b/src/engine/SCons/ActionTests.py index 648b77b..cda565d 100644 --- a/src/engine/SCons/ActionTests.py +++ b/src/engine/SCons/ActionTests.py @@ -178,14 +178,21 @@ class CommandGeneratorActionTestCase(unittest.TestCase): def f(dummy, env, self=self): self.dummy = dummy - assert env.subst('$FOO') == 'foo baz\nbar ack', env.subst('$FOO') - assert env.subst_list('$FOO') == [ [ 'foo', 'baz' ], - [ 'bar', 'ack' ] ], env.subst_list('$FOO') + assert env.subst("$FOO $( bar $) baz") == 'foo baz\nbar ack bar baz', env.subst("$FOO $( bar $) baz") + assert env.subst("$FOO $( bar $) baz", raw=1) == 'foo baz\nbar ack $( bar $) baz', env.subst("$FOO $( bar $) baz", raw=1) + assert env.subst_list("$FOO $( bar $) baz") == [ [ 'foo', 'baz' ], + [ 'bar', 'ack', 'bar', 'baz' ] ], env.subst_list("$FOO $( bar $) baz") + assert env.subst_list("$FOO $( bar $) baz", + raw=1) == [ [ 'foo', 'baz' ], + [ 'bar', 'ack', '$(', 'bar', '$)', 'baz' ] ], env.subst_list("$FOO $( bar $) baz", raw=1) return "$FOO" def func_action(env, dummy, self=self): - assert env.subst('$foo') == 'bar', env.subst('$foo') - assert env.subst_list('$foo') == [ [ 'bar' ] ], env.subst_list('$foo') - assert env.subst_list([ '$foo', 'bar' ]) == [[ 'bar', 'bar' ]], env.subst_list([ [ '$foo', 'bar' ] ]) + assert env.subst('$foo $( bar $)') == 'bar bar', env.subst('$foo $( bar $)') + assert env.subst('$foo $( bar $)', + raw=1) == 'bar $( bar $)', env.subst('$foo $( bar $)', raw=1) + assert env.subst_list([ '$foo', '$(', 'bar', '$)' ]) == [[ 'bar', 'bar' ]], env.subst_list([ '$foo', '$(', 'bar', '$)' ]) + assert env.subst_list([ '$foo', '$(', 'bar', '$)' ], + raw=1) == [[ 'bar', '$(', 'bar', '$)' ]], env.subst_list([ '$foo', '$(', 'bar', '$)' ], raw=1) self.dummy=dummy def f2(dummy, env, f=func_action): return f @@ -291,6 +298,39 @@ class ListActionTestCase(unittest.TestCase): c = a.get_contents(target=[], source=[]) assert c == "xyz", c +class LazyActionTestCase(unittest.TestCase): + def test_init(self): + """Test creation of a lazy-evaluation Action + """ + # Environment variable references should create a special + # type of CommandGeneratorAction that lazily evaluates the + # variable. + a9 = SCons.Action.Action('$FOO') + assert isinstance(a9, SCons.Action.CommandGeneratorAction), a9 + assert a9.generator.var == 'FOO', a9.generator.var + + a10 = SCons.Action.Action('${FOO}') + assert isinstance(a9, SCons.Action.CommandGeneratorAction), a10 + assert a10.generator.var == 'FOO', a10.generator.var + + def test_execute(self): + """Test executing a lazy-evalueation Action + """ + def f(s, env): + s.test=1 + return 0 + a = SCons.Action.Action('$BAR') + a.execute(s = self, env={'BAR':f}) + assert self.test == 1, self.test + + def test_get_contents(self): + """Test fetching the contents of a lazy-evaluation Action + """ + a = SCons.Action.Action("${FOO}") + c = a.get_contents(target=[], source=[], + env={'FOO':[["This", "is", "$(", "a", "$)", "test"]]}) + assert c == "This is test", c + if __name__ == "__main__": suite = unittest.TestSuite() @@ -300,7 +340,8 @@ if __name__ == "__main__": for tclass in [CommandActionTestCase, CommandGeneratorActionTestCase, FunctionActionTestCase, - ListActionTestCase]: + ListActionTestCase, + LazyActionTestCase]: for func in ["test_init", "test_execute", "test_get_contents"]: suite.addTest(tclass(func)) if not unittest.TextTestRunner().run(suite).wasSuccessful(): |