Change the Action object execute() methods to __call__() methods.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 28 Dec 2002 07:17:31 +0000 (07:17 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 28 Dec 2002 07:17:31 +0000 (07:17 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@531 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Action.py
src/engine/SCons/ActionTests.py
src/engine/SCons/Node/FS.py
src/engine/SCons/Node/FSTests.py
src/engine/SCons/Node/NodeTests.py
src/engine/SCons/Node/__init__.py

index d36c860e9321d487431734ddbfb00ed84f33f3fa..d8a08be5ee91f968788969fb25427448c16a69ea 100644 (file)
@@ -197,7 +197,7 @@ class CommandAction(ActionBase):
     def __init__(self, cmd):
         self.cmd_list = cmd
 
-    def execute(self, target, source, env):
+    def __call__(self, target, source, env):
         """Execute a command action.
 
         This will handle lists of commands as well as individual commands,
@@ -286,11 +286,12 @@ class CommandGeneratorAction(ActionBase):
             raise SCons.Errors.UserError("Object returned from command generator: %s cannot be used to create an Action." % repr(ret))
         return gen_cmd
 
-    def execute(self, target, source, env):
+    def __call__(self, target, source, env):
         if not SCons.Util.is_List(source):
             source = [source]
         rsources = map(rfile, source)
-        return self.__generate(target, source, env, 0).execute(target, rsources, env)
+        act = self.__generate(target, source, env, 0)
+        return act(target, rsources, env)
 
     def get_contents(self, target, source, env):
         """Return the signature contents of this action's command line.
@@ -342,7 +343,7 @@ class FunctionAction(ActionBase):
                 return "%s(%s, %s)" % (name, tstr, sstr)
         self.strfunction = strfunction
 
-    def execute(self, target, source, env):
+    def __call__(self, target, source, env):
         r = 0
         if not SCons.Util.is_List(target):
             target = [target]
@@ -381,9 +382,9 @@ class ListAction(ActionBase):
     def get_actions(self):
         return self.list
 
-    def execute(self, target, source, env):
+    def __call__(self, target, source, env):
         for l in self.list:
-            r = l.execute(target, source, env)
+            r = l(target, source, env)
             if r:
                 return r
         return 0
index 6c3f7795c6613390cd11f3844e496dfff87b94fd..134f8aea95ffbc03b918043327b9a8b1d11c937b 100644 (file)
@@ -246,7 +246,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd1 = r'%s %s %s xyzzy' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd1)
-        r = act.execute([], [], Environment())
+        r = act([], [], Environment())
         assert r == 0
         c = test.read(outfile, 'r')
         assert c == "act.py: 'xyzzy'\n", c
@@ -254,7 +254,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd2 = r'%s %s %s $TARGET' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd2)
-        r = act.execute('foo', [], Environment())
+        r = act('foo', [], Environment())
         assert r == 0
         c = test.read(outfile, 'r')
         assert c == "act.py: 'foo'\n", c
@@ -262,7 +262,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd3 = r'%s %s %s ${TARGETS}' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd3)
-        r = act.execute(['aaa', 'bbb'], [], Environment())
+        r = act(['aaa', 'bbb'], [], Environment())
         assert r == 0
         c = test.read(outfile, 'r')
         assert c == "act.py: 'aaa' 'bbb'\n", c
@@ -270,7 +270,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd4 = r'%s %s %s $SOURCES' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd4)
-        r = act.execute([], ['one', 'two'], Environment())
+        r = act([], ['one', 'two'], Environment())
         assert r == 0
         c = test.read(outfile, 'r')
         assert c == "act.py: 'one' 'two'\n", c
@@ -278,7 +278,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd4 = r'%s %s %s ${SOURCES[:2]}' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd4)
-        r = act.execute([],
+        r = act([],
                         source = ['three', 'four', 'five'],
                         env = Environment())
         assert r == 0
@@ -288,7 +288,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd5 = r'%s %s %s $TARGET XYZZY' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd5)
-        r = act.execute(target = 'out5',
+        r = act(target = 'out5',
                         source = [],
                         env = Environment(ENV = {'XYZZY' : 'xyzzy'}))
         assert r == 0
@@ -304,7 +304,7 @@ class CommandActionTestCase(unittest.TestCase):
         cmd6 = r'%s %s %s ${TARGETS[1]} $TARGET ${SOURCES[:2]}' % (python, act_py, outfile)
 
         act = SCons.Action.CommandAction(cmd6)
-        r = act.execute(target = [Obj('111'), Obj('222')],
+        r = act(target = [Obj('111'), Obj('222')],
                         source = [Obj('333'), Obj('444'), Obj('555')],
                         env = Environment())
         assert r == 0
@@ -325,7 +325,7 @@ class CommandActionTestCase(unittest.TestCase):
             show_string = show_string + string + "\n"
         act.show = my_show
 
-        r = act.execute([], [], Environment())
+        r = act([], [], Environment())
         assert r == 0
         assert show_string == expect7, show_string
 
@@ -340,18 +340,18 @@ class CommandActionTestCase(unittest.TestCase):
 
         # Test that a nonexistent command returns 127
         act = SCons.Action.CommandAction(python + "_XyZzY_")
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r == expect_nonexistent, "r == %d" % r
 
         # Test that trying to execute a directory returns 126
         dir, tail = os.path.split(python)
         act = SCons.Action.CommandAction(dir)
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r == expect_nonexecutable, "r == %d" % r
 
         # Test that trying to execute a non-executable file returns 126
         act = SCons.Action.CommandAction(outfile)
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r == expect_nonexecutable, "r == %d" % r
 
     def test_set_handler(self):
@@ -384,16 +384,16 @@ class CommandActionTestCase(unittest.TestCase):
             assert 0, "should have gotten user error"
             
         a = SCons.Action.CommandAction(["xyzzy"])
-        a.execute([], [], Environment(SPAWN = func))
+        a([], [], Environment(SPAWN = func))
         assert t.executed == [ 'xyzzy' ]
 
         a = SCons.Action.CommandAction(["xyzzy"])
-        a.execute([], [], Environment(SPAWN = func, SHELL = 'fake shell'))
+        a([], [], Environment(SPAWN = func, SHELL = 'fake shell'))
         assert t.executed == [ 'xyzzy' ]
         assert t.shell == 'fake shell'
 
         a = SCons.Action.CommandAction([ LiteralStr("xyzzy") ])
-        a.execute([], [], Environment(SPAWN = func, ESCAPE = escape_func))
+        a([], [], Environment(SPAWN = func, ESCAPE = escape_func))
         assert t.executed == [ '**xyzzy**' ], t.executed
 
     def test_get_raw_contents(self):
@@ -449,7 +449,7 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
         self.dummy = 0
         self.cmd = []
         self.args = []
-        a.execute([], [], env=Environment(FOO = 'foo baz\nbar ack',
+        a([], [], env=Environment(FOO = 'foo baz\nbar ack',
                                           dummy = 1,
                                           SPAWN = ch))
         assert self.dummy == 1, self.dummy
@@ -458,7 +458,7 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
 
         b = SCons.Action.CommandGeneratorAction(f2)
         self.dummy = 0
-        b.execute(target=[], source=[], env=Environment(foo =  'bar',
+        b(target=[], source=[], env=Environment(foo =  'bar',
                                                         dummy =  2 ))
         assert self.dummy==2, self.dummy
         del self.dummy
@@ -471,7 +471,7 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
         def f3(target, source, env, for_signature):
             return ''
         c = SCons.Action.CommandGeneratorAction(f3)
-        c.execute(target=[], source=DummyFile(self), env=Environment())
+        c(target=[], source=DummyFile(self), env=Environment())
         assert self.rfile_called
 
     def test_get_contents(self):
@@ -531,7 +531,7 @@ class FunctionActionTestCase(unittest.TestCase):
             assert env.subst("$BAR") == 'foo bar', env.subst("$BAR")
             return 0
         a = SCons.Action.FunctionAction(f)
-        a.execute(target=1, source=2, env=Environment(BAR = 'foo bar',
+        a(target=1, source=2, env=Environment(BAR = 'foo bar',
                                                       s = self))
         assert self.inc == 1, self.inc
         assert self.source == [2], self.source
@@ -549,9 +549,7 @@ class FunctionActionTestCase(unittest.TestCase):
         act = SCons.Action.FunctionAction(function1)
         r = None
         try:
-            r = act.execute(target = [outfile, outfile2],
-                            source=[],
-                            env=Environment())
+            r = act(target = [outfile, outfile2], source=[], env=Environment())
         except SCons.Errors.BuildError:
             pass
         assert r == 1
@@ -566,7 +564,7 @@ class FunctionActionTestCase(unittest.TestCase):
                 open(env['out'], 'w').write("class1a\n")
 
         act = SCons.Action.FunctionAction(class1a)
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r.__class__ == class1a
         c = test.read(outfile, 'r')
         assert c == "class1a\n", c
@@ -577,7 +575,7 @@ class FunctionActionTestCase(unittest.TestCase):
                 return 2
 
         act = SCons.Action.FunctionAction(class1b())
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r == 2
         c = test.read(outfile, 'r')
         assert c == "class1b\n", c
@@ -589,7 +587,7 @@ class FunctionActionTestCase(unittest.TestCase):
             self.string_it = 1
             return None
         act = SCons.Action.FunctionAction(build_it, string_it)
-        r = act.execute([], [], Environment())
+        r = act([], [], Environment())
         assert r == 0, r
         assert self.build_it
         assert self.string_it
@@ -635,7 +633,7 @@ class ListActionTestCase(unittest.TestCase):
             s = env['s']
             s.inc = s.inc + 1
         a = SCons.Action.ListAction([f, f, f])
-        a.execute([], [], Environment(s = self))
+        a([], [], Environment(s = self))
         assert self.inc == 3, self.inc
 
         cmd2 = r'%s %s %s syzygy' % (python, act_py, outfile)
@@ -653,7 +651,7 @@ class ListActionTestCase(unittest.TestCase):
             def __init__(self, target, source, env):
                 open(env['out'], 'a').write("class2b\n")
         act = SCons.Action.ListAction([cmd2, function2, class2a(), class2b])
-        r = act.execute([], [], Environment(out = outfile))
+        r = act([], [], Environment(out = outfile))
         assert r.__class__ == class2b
         c = test.read(outfile, 'r')
         assert c == "act.py: 'syzygy'\nfunction2\nclass2a\nclass2b\n", c
@@ -696,7 +694,7 @@ class LazyActionTestCase(unittest.TestCase):
             s.test=1
             return 0
         a = SCons.Action.Action('$BAR')
-        a.execute([], [], env=Environment(BAR = f, s = self))
+        a([], [], env=Environment(BAR = f, s = self))
         assert self.test == 1, self.test
 
     def test_get_contents(self):
index 626a22ad93cff82027c3dbb9c772118c7f462f80..dee50dffac0ae047cac794ee6957bf9f5e36f64a 100644 (file)
@@ -83,7 +83,7 @@ def LinkFunc(target, source, env):
             os.chmod(dest, stat.S_IMODE(st[stat.ST_MODE]) | stat.S_IWRITE)
     return 0
 
-LinkAction = SCons.Action.Action(LinkFunc, None)
+Link = SCons.Action.Action(LinkFunc, None)
 
 def LocalString(target, source):
     return 'Local copy of %s from %s' % (target[0], source[0])
@@ -94,13 +94,13 @@ def UnlinkFunc(target, source, env):
     os.unlink(target[0].path)
     return 0
 
-UnlinkAction = SCons.Action.Action(UnlinkFunc, None)
+Unlink = SCons.Action.Action(UnlinkFunc, None)
 
 def MkdirFunc(target, source, env):
     os.mkdir(target[0].path)
     return 0
 
-MkdirAction = SCons.Action.Action(MkdirFunc, None)
+Mkdir = SCons.Action.Action(MkdirFunc, None)
 
 #
 class ParentOfRoot:
@@ -882,7 +882,7 @@ class File(Entry):
         for dirnode in listDirs:
             dirnode._exists = 1
             try:
-                MkdirAction.execute(dirnode, None, None)
+                Mkdir(dirnode, None, None)
             except OSError:
                 pass
 
@@ -905,7 +905,7 @@ class File(Entry):
 
         if self.exists():
             if self.builder and not self.precious:
-                UnlinkAction.execute(self, None, None)
+                Unlink(self, None, None)
                 if hasattr(self, '_exists'):
                     delattr(self, '_exists')
         else:
@@ -929,10 +929,10 @@ class File(Entry):
             if src.exists() and src.abspath != self.abspath:
                 self._createDir()
                 try:
-                    UnlinkAction.execute(self, None, None)
+                    Unlink(self, None, None)
                 except OSError:
                     pass
-                LinkAction.execute(self, src, None)
+                Link(self, src, None)
                 self.created = 1
 
                 # Set our exists cache accordingly
@@ -952,7 +952,7 @@ class File(Entry):
                     # ...and it's even up-to-date...
                     if self._local:
                         # ...and they'd like a local copy.
-                        LocalCopy.execute(self, r, None)
+                        LocalCopy(self, r, None)
                         self.set_bsig(bsig)
                         self.store_bsig()
                     return 1
index 98857bf57469af47d60fd168400753f4426db1ee..a624d9781b35d62a32314aafb19b6a301f74559b 100644 (file)
@@ -50,7 +50,7 @@ class Builder:
 
     def get_actions(self):
         class Action:
-            def execute(self, targets, sources, env):
+            def __call__(self, targets, sources, env):
                 global built_it
                 built_it = 1
                 return 0
@@ -255,13 +255,13 @@ class BuildDirTestCase(unittest.TestCase):
         assert f8.rfile().path == os.path.normpath(test.workpath('rep1/build/var2/test2.out')),\
                f8.rfile().path
         
-        # Test to see if LinkAction() works...
+        # Test to see if Link() works...
         test.subdir('src','build')
         test.write('src/foo', 'src/foo\n')
         os.chmod(test.workpath('src/foo'), stat.S_IRUSR)
-        SCons.Node.FS.LinkAction.execute(fs.File(test.workpath('build/foo')),
-                                         fs.File(test.workpath('src/foo')),
-                                         None)
+        SCons.Node.FS.Link(fs.File(test.workpath('build/foo')),
+                           fs.File(test.workpath('src/foo')),
+                           None)
         os.chmod(test.workpath('src/foo'), stat.S_IRUSR | stat.S_IWRITE)
         st=os.stat(test.workpath('build/foo'))
         assert (stat.S_IMODE(st[stat.ST_MODE]) & stat.S_IWRITE), \
@@ -356,9 +356,9 @@ class BuildDirTestCase(unittest.TestCase):
 
         test.write('src/foo', 'src/foo\n')
         os.chmod(test.workpath('src/foo'), stat.S_IRUSR)
-        SCons.Node.FS.LinkAction.execute(fs.File(test.workpath('build/foo')),
-                                         fs.File(test.workpath('src/foo')),
-                                         None)
+        SCons.Node.FS.Link(fs.File(test.workpath('build/foo')),
+                           fs.File(test.workpath('src/foo')),
+                           None)
         test.unlink( "src/foo" )
         test.unlink( "build/foo" )
 
index abfbe1c529c373fe1082d79ad49dc0f03f2c5139..a2b95a597daa407faedebd9e027c2b1b5566a14b 100644 (file)
@@ -39,7 +39,7 @@ built_source =  None
 cycle_detected = None
 
 class MyAction:
-    def execute(self, target, source, env):
+    def __call__(self, target, source, env):
         global built_it, built_target, built_source, built_args
         built_it = 1
         built_target = target
index ca6e8eb8004b76e89aeb61e8b4ef2229ebbd34a5..e5aae5c1c2ef534eb8ee281bcbacf0bb5c42bf02 100644 (file)
@@ -122,7 +122,7 @@ class Node:
         targets = self.builder.targets(self)
         env = self.generate_build_env()
         for action in action_list:
-            stat = action.execute(targets, self.sources, env)
+            stat = action(targets, self.sources, env)
             if stat:
                 raise SCons.Errors.BuildError(node = self,
                                               errstr = "Error %d" % stat)