Windows portability
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 25 Sep 2002 16:56:41 +0000 (16:56 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 25 Sep 2002 16:56:41 +0000 (16:56 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@468 fdb21ef1-2011-0410-befe-b5e4ea1792b1

runtest.py
src/engine/SCons/EnvironmentTests.py
src/engine/SCons/Script/__init__.py
src/engine/SCons/Tool/__init__.py
test/BuildDir.py
test/TAR.py
test/TARFLAGS.py

index 6d15490fb8aa2e7aa471e2e40c28b919c0cd7239..497668f5e3e4e295d3a3a52443303bf3abdfa4d8 100644 (file)
@@ -41,6 +41,7 @@
 #
 
 import getopt
+import glob
 import os
 import os.path
 import re
@@ -62,7 +63,7 @@ else:
     # not an executable, so it's all right.
     lib_dir = os.path.join(sys.exec_prefix, "lib", "python" + sys.version[0:3])
 
-opts, tests = getopt.getopt(sys.argv[1:], "adqp:Xx:",
+opts, args = getopt.getopt(sys.argv[1:], "adqp:Xx:",
                            ['all', 'debug', 'exec=', 'quiet', 'package='])
 
 for o, a in opts:
@@ -75,8 +76,9 @@ for o, a in opts:
 
 cwd = os.getcwd()
 
-if tests:
-    map(os.path.abspath, tests)
+if args:
+    for a in args:
+        tests.extend(glob.glob(os.path.abspath(a)))
 elif all:
     def find_Test_py(arg, dirname, names):
        global tests
index 33c14e5d58fa4a6ce60da87d351c8843acee8a99..1b2cd3b5b1706b83a4132dcbe90f0780b9c350e8 100644 (file)
@@ -586,27 +586,52 @@ class EnvironmentTestCase(unittest.TestCase):
         """Test Detect()ing tools"""
         test = TestCmd.TestCmd(workdir = '')
         test.subdir('sub1', 'sub2')
-        test.write(['sub1', 'xxx.exe'], "sub1/xxx.exe\n")
-        test.write(['sub2', 'xxx.exe'], "sub2/xxx.exe\n")
-
         sub1 = test.workpath('sub1')
         sub2 = test.workpath('sub2')
-        env = Environment(ENV = { 'PATH' : [sub1, sub2] })
-        x = env.Detect('xxx.exe')
-        assert x is None, x
 
-        sub2_xxx_exe = test.workpath('sub2', 'xxx.exe')
-        os.chmod(sub2_xxx_exe, 0755)
+        if sys.platform == 'win32':
+            test.write(['sub1', 'xxx'], "sub1/xxx\n")
+            test.write(['sub2', 'xxx'], "sub2/xxx\n")
 
-        env = Environment(ENV = { 'PATH' : [sub1, sub2] })
-        x = env.Detect('xxx.exe')
-        assert x == 'xxx.exe'
+            env = Environment(ENV = { 'PATH' : [sub1, sub2] })
 
-        sub1_xxx_exe = test.workpath('sub1', 'xxx.exe')
-        os.chmod(sub1_xxx_exe, 0755)
+            x = env.Detect('xxx.exe')
+            assert x is None, x
 
-        x = env.Detect('xxx.exe')
-        assert x == 'xxx.exe'
+            test.write(['sub2', 'xxx.exe'], "sub2/xxx.exe\n")
+
+            env = Environment(ENV = { 'PATH' : [sub1, sub2] })
+
+            x = env.Detect('xxx.exe')
+            assert x == 'xxx.exe', x
+
+            test.write(['sub1', 'xxx.exe'], "sub1/xxx.exe\n")
+
+            x = env.Detect('xxx.exe')
+            assert x == 'xxx.exe', x
+
+        else:
+            test.write(['sub1', 'xxx.exe'], "sub1/xxx.exe\n")
+            test.write(['sub2', 'xxx.exe'], "sub2/xxx.exe\n")
+
+            env = Environment(ENV = { 'PATH' : [sub1, sub2] })
+
+            x = env.Detect('xxx.exe')
+            assert x is None, x
+
+            sub2_xxx_exe = test.workpath('sub2', 'xxx.exe')
+            os.chmod(sub2_xxx_exe, 0755)
+
+            env = Environment(ENV = { 'PATH' : [sub1, sub2] })
+
+            x = env.Detect('xxx.exe')
+            assert x == 'xxx.exe', x
+
+            sub1_xxx_exe = test.workpath('sub1', 'xxx.exe')
+            os.chmod(sub1_xxx_exe, 0755)
+
+            x = env.Detect('xxx.exe')
+            assert x == 'xxx.exe', x
 
         env = Environment(ENV = { 'PATH' : [] })
         x = env.Detect('xxx.exe')
index 365a0b1e72b590fa419c9494f893a2700a6720d8..f0ac0398330ed4541feeeb42dc8a6e4284682657 100644 (file)
@@ -992,6 +992,8 @@ def _main():
                     sys.stderr.write(string + "  Stop.\n")
                     sys.exit(2)
                 sys.stderr.write(string + "\n")
+                global exit_status
+                exit_status = 2
                 node = None
         if top and not node.is_under(top):
             if isinstance(node, SCons.Node.FS.Dir) and top.is_under(node):
index 6b78fafa9f8540055d8edbbbf2ab564355f61cf9..661ea966c7be0966b89d07eb57cb8559476e9e66 100644 (file)
@@ -144,7 +144,7 @@ def tool_list(platform, env):
         "prefer Microsoft tools on Windows"
         linkers = ['mslink', 'gnulink', 'ilink']
         c_compilers = ['msvc', 'gcc', 'icc']
-        assemblers = ['nasm', 'masm', 'gas']
+        assemblers = ['masm', 'nasm', 'gas']
         fortran_compilers = ['g77', 'ifl']
         ars = ['lib', 'ar']
     elif str(platform) == 'os2':
index 8e79de9d1bc29bccebeb92c0a2755fb3a6d42774..b8e073ba60eafdfd433eaff68c78943f6e67921b 100644 (file)
@@ -212,7 +212,6 @@ def equal_stats(x,y):
     x = os.stat(x)
     y = os.stat(y)
     return (stat.S_IMODE(x[stat.ST_MODE]) == stat.S_IMODE(y[stat.ST_MODE]) and
-            x[stat.ST_ATIME] ==  y[stat.ST_ATIME] and
             x[stat.ST_MTIME] ==  y[stat.ST_MTIME])
 
 # Make sure we did duplicate the source files in build/var2, and that their stats are the same:
index 0d6f857a7b38cc3a263cde6e072a03f1a7b6eec6..ee9e7d415957c1fbd5670e45628527f7a6cebef2 100644 (file)
@@ -58,7 +58,7 @@ sys.exit(0)
 """)
 
 test.write('SConstruct', """
-env = Environment(TAR = r'%s mytar.py')
+env = Environment(tools = ['tar'], TAR = r'%s mytar.py')
 env.Tar(target = 'aaa.tar', source = ['file1', 'file2'])
 env.Tar(target = 'aaa.tar', source = 'file3')
 env.Tar(target = 'bbb', source = 'sub1')
@@ -95,9 +95,9 @@ os.system(string.join(sys.argv[1:], " "))
 """ % string.replace(test.workpath('wrapper.out'), '\\', '\\\\'))
 
     test.write('SConstruct', """
-foo = Environment()
+foo = Environment(tools = ['tar'])
 tar = foo.Dictionary('TAR')
-bar = Environment(TAR = r'%s wrapper.py ' + tar)
+bar = Environment(tools = ['tar'], TAR = r'%s wrapper.py ' + tar)
 foo.Tar(target = 'foo.tar', source = ['file10', 'file11'])
 foo.Tar(target = 'foo.tar', source = 'file12')
 bar.Tar(target = 'bar.tar', source = ['file13', 'file14'])
index 6fcff4364b6ee0277e4b978d5b4efaf3a2f62654..9bf1359e1915ab74e284c6f76f4fef2e7436b8ab 100644 (file)
@@ -62,7 +62,7 @@ sys.exit(0)
 """)
 
 test.write('SConstruct', """
-env = Environment(TAR = r'%s mytar.py', TARFLAGS = '-x')
+env = Environment(tools = ['tar'], TAR = r'%s mytar.py', TARFLAGS = '-x')
 env.Tar(target = 'aaa.tar', source = ['file1', 'file2'])
 env.Tar(target = 'aaa.tar', source = 'file3')
 env.Tar(target = 'bbb', source = 'sub1')
@@ -99,9 +99,11 @@ os.system(string.join(sys.argv[1:], " "))
 """ % string.replace(test.workpath('wrapper.out'), '\\', '\\\\'))
 
     test.write('SConstruct', """
-foo = Environment()
+foo = Environment(tools = ['tar'])
 tar = foo['TAR']
-bar = Environment(TAR = '', TARFLAGS = '%s wrapper.py ' + tar + ' -c -b 1')
+bar = Environment(tools = ['tar'],
+                  TAR = '',
+                 TARFLAGS = '%s wrapper.py ' + tar + ' -c -b 1')
 foo.Tar(target = 'foo.tar', source = ['file10', 'file11'])
 foo.Tar(target = 'foo.tar', source = 'file12')
 bar.Tar(target = 'bar.tar', source = ['file13', 'file14'])