Re-synchronize the CVS tree after a SourceForge file system catastrophe.
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 27 Aug 2003 02:56:22 +0000 (02:56 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Wed, 27 Aug 2003 02:56:22 +0000 (02:56 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@781 fdb21ef1-2011-0410-befe-b5e4ea1792b1

runtest.py
src/engine/SCons/Node/FSTests.py
test/AS.py
test/BuildDir.py
test/SConscript-build_dir.py
test/build-errors.py

index 6508999490db55544a8c3093da4f4762b190aeb3..fd421ef4aad11ab55d4aa7ffc273bf7bb5b6ced1 100644 (file)
@@ -234,6 +234,13 @@ elif all:
     keys = tdict.keys()
     keys.sort()
     tests = map(tdict.get, keys)
+else:
+    sys.stderr.write("""\
+runtest.py:  No tests were specified on the command line.
+             List one or more tests, or use the -a option
+             to find and run all tests.
+""")
+
 
 if package:
 
index 17d037d225f6b95986d8556c5c87f84044f53fbb..ded5e9ae0380fac8aa0ff5c9b3f993be65898456 100644 (file)
@@ -476,7 +476,7 @@ class BuildDirTestCase(unittest.TestCase):
                 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)
+                os.chmod(test.workpath('src/foo'), stat.S_IRUSR | stat.S_IWRITE)
             finally:
                 test.unlink( "src/foo" )
                 test.unlink( "build/foo" )
@@ -1080,7 +1080,7 @@ class FSTestCase(unittest.TestCase):
 
         y = fs.File('dir/y')
         t = y.target_from_source('pre-', '-suf')
-        assert str(t) == 'dir/pre-y-suf', str(t)
+        assert str(t) == os.path.join('dir', 'pre-y-suf'), str(t)
 
         z = fs.File('zz')
         t = z.target_from_source('pre-', '-suf', lambda x: x[:-1])
index 0bafdc14ceb8d51a04db5372e6fa389b1414a09c..1fdb964acf1742a10c7c11d56fc3bd1e966ea65c 100644 (file)
@@ -330,6 +330,19 @@ nasm = test.where_is('nasm')
 
 if nasm:
 
+    # Allow flexibility about the type of object/executable format
+    # needed on different systems.  Format_map is a dict that maps
+    # sys.platform substrings to the correct argument for the nasm -f
+    # option.  The default is "elf," which seems to be a reasonable
+    # lowest common denominator (works on both Linux and FreeBSD,
+    # anyway...).
+    nasm_format = 'elf'
+    format_map = {}
+    for k, v in format_map.items():
+        if string.find(sys.platform, k) != -1:
+            nasm_format = v
+            break
+
     test.write("wrapper.py",
 """import os
 import string
@@ -340,11 +353,11 @@ os.system(string.join(sys.argv[1:], " "))
 
     test.write('SConstruct', """
 eee = Environment(tools = ['gcc', 'gnulink', 'nasm'],
-                  ASFLAGS = '-f aout')
+                  ASFLAGS = '-f %s')
 fff = eee.Copy(AS = r'%s wrapper.py ' + WhereIs('nasm'))
 eee.Program(target = 'eee', source = ['eee.asm', 'eee_main.c'])
 fff.Program(target = 'fff', source = ['fff.asm', 'fff_main.c'])
-""" % python)
+""" % (nasm_format, python))
 
     test.write('eee.asm', 
 """
index 63ecf6eeaa647247e0c8027e629f86cdf8e3a0cb..bca410466b837799aea861a9c837d117c3a2c8d9 100644 (file)
@@ -213,7 +213,21 @@ test.write(['work1', 'src', 'b2.for'], r"""
       PRINT *, 'b2.for'
 """)
 
-test.run(chdir='work1', arguments = '. ../build')
+# Some releases of freeBSD seem to have library complaints about
+# tempnam().  Filter out these annoying messages before checking for
+# error output.
+def blank_output(err):
+    if not err:
+        return 1
+    stderrlines = filter(lambda l: l, string.split(err, '\n'))
+    msg = "warning: tempnam() possibly used unsafely"
+    stderrlines = filter(lambda l, msg=msg: string.find(l, msg) == -1,
+                         stderrlines)
+    return len(stderrlines) == 0
+
+test.run(chdir='work1', arguments = '. ../build', stderr=None)
+
+test.fail_test(not blank_output(test.stderr()))
 
 test.run(program = foo11, stdout = "f1.c\n")
 test.run(program = foo12, stdout = "f2.c\n")
@@ -289,7 +303,9 @@ test.write(['work1', 'src', 'f4h.in'], r"""
 #define F4_STR "f4.c 2\n"
 """)
 
-test.run(chdir='work1', arguments = '../build/var5')
+test.run(chdir='work1', arguments = '../build/var5', stderr=None)
+
+test.fail_test(not blank_output(test.stderr()))
 
 test.run(program = foo51, stdout = "f1.c 2\n")
 test.run(program = test.workpath('build', 'var5', 'foo3' + _exe),
@@ -334,7 +350,9 @@ Import('env')
 env.Program('prog.c')
 """)
 
-test.run(chdir='work2', arguments='.')
+test.run(chdir='work2', arguments='.', stderr=None)
+
+test.fail_test(not blank_output(test.stderr()))
 
 test.up_to_date(chdir='work2', arguments='.')
 
@@ -365,4 +383,3 @@ non_existing.h:
 """)
 
 test.pass_test()
-
index d67fdaca0e2339102549a4c2c678183a55e5415c..0ae3583b299f8ee3e03a8dceff07052e97712432 100644 (file)
@@ -217,7 +217,7 @@ bar(void) {
 }
 """)
 
-test.write(['test2', 'foo.c'], """\
+test.write(['test2', 'foo.c'], r"""
 int
 main(int argc, char *argv[]) {
         bar();
index e4e1666221bd2a929bb8250d6f3bdd80ab32cd30..9acbefb7d445a1e2af5af160e798d0192e5e280e 100644 (file)
@@ -52,18 +52,57 @@ test.run(arguments='-f SConstruct1 .',
          stderr = None,
          status = 2)
 
-bad_command = "Bad command or file name\n"
+bad_command = """\
+Bad command or file name
+"""
 
-unrecognized = """'%s' is not recognized as an internal or external command,
+unrecognized = """\
+'%s' is not recognized as an internal or external command,
 operable program or batch file.
 scons: *** [%s] Error 1
 """
 
-unspecified = """The name specified is not recognized as an
+unspecified = """\
+The name specified is not recognized as an
 internal or external command, operable program or batch file.
 scons: *** [%s] Error 1
 """
 
+not_found_1 = """
+sh: %s: not found
+scons: *** [%s] Error 1
+"""
+
+not_found_2 = """
+sh: %s:  not found
+scons: *** [%s] Error 1
+"""
+
+No_such = """\
+%s: No such file or directory
+scons: *** [%s] Error 127
+"""
+
+cannot_execute = """\
+%s: cannot execute
+scons *** [%s] Error 126
+"""
+
+Permission_denied = """\
+%s: Permission denied
+scons: *** [%s] Error 126
+"""
+
+permission_denied = """\
+%s: permission denied
+scons: *** [%s] Error 126
+"""
+
+is_a_directory = """\
+%s: is a directory
+scons: *** [%s] Error 126
+"""
+
 test.description_set("Incorrect STDERR:\n%s\n" % test.stderr())
 if os.name == 'nt':
     errs = [
@@ -72,15 +111,18 @@ if os.name == 'nt':
         unspecified % 'f1'
     ]
     test.fail_test(not test.stderr() in errs)
-elif string.find(sys.platform, 'irix') != -1:
-    test.fail_test(test.stderr() != """sh: %s:  not found
-scons: *** [f1] Error 127
-""" % no_such_file)
 else:
-    test.fail_test(string.find(test.stderr(), """%s: No such file or directory
-scons: *** [f1] Error 127
-""" % no_such_file) == -1)
-
+    errs = [
+        not_found_1 % (no_such_file, 'f1'),
+        not_found_2 % (no_such_file, 'f1'),
+        No_such % (no_such_file, 'f1'),
+    ]
+    error_message_not_found = 1
+    for err in errs:
+        if string.find(test.stderr(), err) != -1:
+            error_message_not_found = None
+            break
+    test.fail_test(error_message_not_found)
 
 test.write('SConstruct2', r"""
 bld = Builder(action = '%s $SOURCES $TARGET')
@@ -101,14 +143,18 @@ if os.name == 'nt':
         unspecified % 'f2'
     ]
     test.fail_test(not test.stderr() in errs)
-elif string.find(sys.platform, 'irix') != -1:
-    test.fail_test(test.stderr() != """sh: %s: cannot execute
-scons: *** [f2] Error 126
-""" % not_executable)
 else:
-    test.fail_test(string.find(test.stderr(), """%s: Permission denied
-scons: *** [f2] Error 126
-""" % not_executable) == -1)
+    errs = [
+        cannot_execute % (not_executable, 'f2'),
+        Permission_denied % (not_executable, 'f2'),
+        permission_denied % (not_executable, 'f2'),
+    ]
+    error_message_not_found = 1
+    for err in errs:
+        if string.find(test.stderr(), err) != -1:
+            error_message_not_found = None
+            break
+    test.fail_test(error_message_not_found)
 
 test.write('SConstruct3', r"""
 bld = Builder(action = '%s $SOURCES $TARGET')
@@ -129,13 +175,16 @@ if os.name == 'nt':
         unspecified % 'f3'
     ]
     test.fail_test(not test.stderr() in errs)
-elif string.find(sys.platform, 'irix') != -1:
-    test.fail_test(test.stderr() != """sh: %s: cannot execute
-scons: *** [f3] Error 126
-""" % test.workdir)
 else:
-    test.fail_test(string.find(test.stderr(), """%s: is a directory
-scons: *** [f3] Error 126
-""" % test.workdir) == -1)
+    errs = [
+        cannot_execute % (not_executable, 'f3'),
+        is_a_directory % (test.workdir, 'f3'),
+    ]
+    error_message_not_found = 1
+    for err in errs:
+        if string.find(test.stderr(), err) != -1:
+            error_message_not_found = None
+            break
+    test.fail_test(error_message_not_found)
 
 test.pass_test()