Win32 test portability.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 18 Oct 2002 01:09:14 +0000 (01:09 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 18 Oct 2002 01:09:14 +0000 (01:09 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@484 fdb21ef1-2011-0410-befe-b5e4ea1792b1

src/engine/SCons/Action.py
src/engine/SCons/ActionTests.py
src/engine/SCons/Node/FSTests.py
test/Repository/variants.py

index fcd0ec98d927fbfadd47b4edee07a78b2b718437..06d8dd9fcefe83a4f36290f617b86b02f929e265 100644 (file)
@@ -56,6 +56,12 @@ def quote(x):
     else:
         return x
 
+def rfile(n):
+    try:
+        return n.rfile()
+    except AttributeError:
+        return n
+
 if os.name == 'posix':
 
     def escape(arg):
@@ -393,7 +399,10 @@ class CommandGeneratorAction(ActionBase):
         return gen_cmd
 
     def execute(self, target, source, env):
-        return self.__generate(target, source, env, 0).execute(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)
 
     def get_contents(self, target, source, env):
         """Return the signature contents of this action's command line.
@@ -430,16 +439,11 @@ class FunctionAction(ActionBase):
             if not SCons.Util.is_List(target):
                 target = [target]
 
-            def rfile(n):
-                try:
-                    return n.rfile()
-                except AttributeError:
-                    return n
             if not SCons.Util.is_List(source):
                 source = [source]
-            source = map(rfile, source)
+            rsources = map(rfile, source)
 
-            return self.function(target=target, source=source, env=env)
+            return self.function(target=target, source=rsources, env=env)
 
     def get_contents(self, target, source, env):
         """Return the signature contents of this callable action.
index ab98d0210a677d37f07ab280863e46fac0d615e1..2e53bbd4117d26482f024fa3fffc0de34844282c 100644 (file)
@@ -201,22 +201,26 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
         def f(target, source, env, for_signature, self=self):
             dummy = env['dummy']
             self.dummy = dummy
-            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)
+            s = env.subst("$FOO $( bar $) baz")
+            assert s == 'foo baz\nbar ack bar baz', s
+            s = env.subst("$FOO $( bar $) baz", raw=1)
+            assert s == 'foo baz\nbar ack $( bar $) baz', s
+            s = env.subst_list("$FOO $( bar $) baz")
+            assert s == [[ 'foo', 'baz' ], [ 'bar', 'ack', 'bar', 'baz' ]], s
+            s = env.subst_list("$FOO $( bar $) baz", raw=1)
+            assert s == [[ 'foo', 'baz' ],
+                         [ 'bar', 'ack', '$(', 'bar', '$)', 'baz' ]], s
             return "$FOO"
-        def func_action(target, source,env, self=self):
+        def func_action(target, source, env, self=self):
             dummy=env['dummy']
-            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)
+            s = env.subst('$foo $( bar $)')
+            assert s == 'bar bar', s
+            s = env.subst('$foo $( bar $)', raw=1)
+            assert s == 'bar $( bar $)', s
+            s = env.subst_list([ '$foo', '$(', 'bar', '$)' ])
+            assert s == [[ 'bar', 'bar' ]], s
+            s = env.subst_list([ '$foo', '$(', 'bar', '$)' ], raw=1)
+            assert s == [[ 'bar', '$(', 'bar', '$)' ]], s
             self.dummy=dummy
         def f2(target, source, env, for_signature, f=func_action):
             return f
@@ -231,19 +235,32 @@ class CommandGeneratorActionTestCase(unittest.TestCase):
         self.args = []
         try:
             SCons.Action.SetCommandHandler(ch)
-            a.execute([],[],env=Environment({ 'FOO' : 'foo baz\nbar ack' , 'dummy':1}))
+            a.execute([],[],env=Environment({ 'FOO' : 'foo baz\nbar ack',
+                                              'dummy' : 1}))
         finally:
             SCons.Action.SetCommandHandler(old_hdl)
-        assert self.dummy == 1
-        assert self.cmd == [ 'foo', 'bar'], self.cmd
-        assert self.args == [ [ 'foo', 'baz' ], [ 'bar', 'ack' ] ], self.args
+        assert self.dummy == 1, self.dummy
+        assert self.cmd == ['foo', 'bar'], self.cmd
+        assert self.args == [[ 'foo', 'baz' ], [ 'bar', 'ack' ]], self.args
 
         b=SCons.Action.CommandGeneratorAction(f2)
         self.dummy = 0
-        b.execute(target=[], source=[], env=Environment({ 'foo' : 'bar','dummy':2 }))
+        b.execute(target=[], source=[], env=Environment({ 'foo' : 'bar',
+                                                          'dummy' : 2 }))
         assert self.dummy==2, self.dummy
         del self.dummy
 
+        class DummyFile:
+            def __init__(self, t):
+                self.t = t
+            def rfile(self):
+                self.t.rfile_called = 1
+        def f3(target, source, env, for_signature):
+            return ''
+        c=SCons.Action.CommandGeneratorAction(f3)
+        c.execute(target=[], source=DummyFile(self), env=Environment({}))
+        assert self.rfile_called
+
     def test_get_contents(self):
         """Test fetching the contents of a command generator Action
         """
index 0c7bd696cdcda8e5245fa069ab74ff2786eac6c2..1610ec699ffbfe391679075938b87fc2101529c0 100644 (file)
@@ -194,7 +194,7 @@ class BuildDirTestCase(unittest.TestCase):
         # But we do have a file in the Repository
         assert f3.rexists()
         # rfile() should point to the source path
-        assert f3.rfile().path == test.workpath('rep1/src/test2.in'),\
+        assert f3.rfile().path == os.path.normpath(test.workpath('rep1/src/test2.in')),\
                f3.rfile().path
 
         assert f4.srcnode().path == os.path.normpath('src/test2.in'),\
@@ -228,12 +228,12 @@ class BuildDirTestCase(unittest.TestCase):
 
         assert not f7.exists()
         assert f7.rexists()
-        assert f7.rfile().path == test.workpath('rep1/build/var1/test2.out'),\
+        assert f7.rfile().path == os.path.normpath(test.workpath('rep1/build/var1/test2.out')),\
                f7.rfile().path
 
         assert not f8.exists()
         assert f8.rexists()
-        assert f8.rfile().path == test.workpath('rep1/build/var2/test2.out'),\
+        assert f8.rfile().path == os.path.normpath(test.workpath('rep1/build/var2/test2.out')),\
                f8.rfile().path
         
         # Test to see if file_link() works...
index d91235f624552e6ae1ae5fa4aaff78cf8cc16c11..81aa5966a5161218757afde81ae1fcf150884bc1 100644 (file)
@@ -44,11 +44,12 @@ opts = "-Y " + test.workpath('repository')
 test.write(['repository', 'SConstruct'], r"""
 OS = ARGUMENTS['OS']
 build_os = "#build/" + OS
+default_ccflags = Environment()['CCFLAGS']
 ccflags = {
     'foo' : '-DFOO',
     'bar' : '-DBAR',
 }
-env = Environment(CCFLAGS = ccflags[OS],
+env = Environment(CCFLAGS = default_ccflags + ' ' + ccflags[OS],
                   CPPPATH = build_os)
 BuildDir(build_os, 'src')
 SConscript(build_os + '/SConscript', "env")