Fix regression tests that use test.whereis(). (Anthony Roach)
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 2 May 2003 04:09:02 +0000 (04:09 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Fri, 2 May 2003 04:09:02 +0000 (04:09 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@668 fdb21ef1-2011-0410-befe-b5e4ea1792b1

etc/TestSCons.py
src/CHANGES.txt
src/setupTests.py
test/BuildDir.py
test/F77.py
test/F77FLAGS.py
test/F77PATH.py
test/SHF77.py
test/SHF77FLAGS.py
test/build-errors.py

index 4fe8b5b8d1dbd24c11eabc8feaa3e41eab12291c..a87b55aac884caa151ef236bf835bdd316095671 100644 (file)
@@ -182,17 +182,22 @@ class TestSCons(TestCmd.TestCmd):
            print self.stderr()
            raise TestFailed
 
-    def detect(self, var, prog):
+    def detect(self, var, prog=None):
         """
-        Detect a program named 'prog' by first checking  the construction 
-        variable named 'var' and finally searching the path. If either method
-        fails to detect the program, then false is returned, otherwise 
-        the programs full path is returned.
+        Detect a program named 'prog' by first checking the construction
+        variable named 'var' and finally searching the path used by
+        SCons. If either method fails to detect the program, then false
+        is returned, otherwise the full path to prog is returned. If
+        prog is None, then the value of the environment variable will be
+        used as prog.
         """
 
         import SCons.Environment
+        env = SCons.Environment.Environment()
         try:
-            return SCons.Environment.Environment()[var] == prog and self.where_is(prog)
+            if prog is None:
+                prog = env[var]
+            return env[var] == prog and env.WhereIs(prog)
         except KeyError:
             return None
 
index 196c28d672b303d097a0f9cdbad82b057e8e672d..0c239390d411e1292d6f182d6e28db77bb2e8183 100644 (file)
@@ -98,6 +98,9 @@ RELEASE 0.14 - XXX
   - Deprecate the old SetJobs() and GetJobs() functions in favor of
     using the new generic {Set,Get}Option() functions.
 
+  - Fix a number of tests that searched for a Fortran compiler using the
+    external PATH instead of what SCons would use.
+
   From David Snopek:
 
   - Contribute the "Autoscons" code for Autoconf-like checking for
index 055475e04027935c304b9f2e9d11e2c3256e196c..6457fff8313333250df566000ce14dc0ab1f8e5c 100644 (file)
@@ -32,6 +32,7 @@ import os
 import os.path
 import shutil
 import string
+import sys
 
 import TestSCons
 
@@ -68,7 +69,8 @@ test.subdir('root')
 
 root = test.workpath('root')
 
-standard_lib = '%s/usr/lib/python1.5/site-packages/' % root
+v = string.split(string.split(sys.version)[0], '.')
+standard_lib = '%s/usr/lib/python%s.%s/site-packages/' % (root, v[0], v[1])
 standalone_lib = '%s/usr/lib/scons' % root
 version_lib = '%s/usr/lib/%s' % (root, scons_version)
 
index 1f04c929293400b301768772ef8630e34b8a5bfa..c10ef3eea7f89cd236fb5ce7237638df42fbceb8 100644 (file)
@@ -37,15 +37,7 @@ else:
 
 test = TestSCons.TestSCons()
 
-test.write('SConstruct', """
-try:
-    print Environment()['F77']
-except:
-    print 'There is no fortran compiler.'
-""")
-test.run(arguments = ".")
-f77 = test.where_is(test.stdout()[:-1])
-test.unlink('SConstruct')
+f77 = test.detect('F77')
 
 foo11 = test.workpath('test', 'build', 'var1', 'foo1' + _exe)
 foo12 = test.workpath('test', 'build', 'var1', 'foo2' + _exe)
@@ -139,7 +131,7 @@ try:
 except:
     f77 = None
 
-if f77 and WhereIs(env['F77']):
+if f77 and env.Detect(env['F77']):
     env.Command(target='b2.f', source='b2.in', action=buildIt)
     env.Copy(LIBS = [r'%s']).Program(target='bar2', source='b2.f')
     env.Copy(LIBS = [r'%s']).Program(target='bar1', source='b1.f')
index 034676526f42838c9094df10f102398b46ab24ef..b4ef9bf4d01b47cd7b47c349bbb036bf83d0442d 100644 (file)
@@ -144,7 +144,7 @@ test.fail_test(test.read('test6' + _exe) != "This is a .FPP file.\n")
 
 
 
-g77 = test.where_is('g77')
+g77 = test.detect('F77', 'g77')
 FTN_LIB = TestSCons.fortran_lib
 
 if g77:
index b72c6183662f33563b26d87dff9eaa6c2b78dd4c..6b9253b8bbbde596ccac08c0b5035d02d885782e 100644 (file)
@@ -147,7 +147,7 @@ test.fail_test(test.read('test6' + _exe) != " -x -c\nThis is a .FPP file.\n")
 
 
 
-g77 = test.where_is('g77')
+g77 = test.detect('F77', 'g77')
 FTN_LIB = TestSCons.fortran_lib
 
 if g77:
index f64abb005fd685f1f9ff2fc347032daa502fec26..f3dd48332692e47fa7bf81728d61cb7162cf69de 100644 (file)
@@ -43,7 +43,7 @@ args = prog + ' ' + subdir_prog + ' ' + variant_prog
 
 test = TestSCons.TestSCons()
 
-if not test.where_is('g77'):
+if not test.detect('F77', 'g77'):
     test.pass_test()
     
 test.subdir('include', 'subdir', ['subdir', 'include'], 'inc2')
index d78ef821690abecda6cf3714689ff4c5c8c7d643..24ab0ec20d5d40d1a36249f00dcea581ccf939f9 100644 (file)
@@ -102,7 +102,7 @@ test.fail_test(test.read('test6' + _obj) != "This is a .FPP file.\n")
 
 
 
-g77 = test.where_is('g77')
+g77 = test.detect('F77', 'g77')
 
 if g77:
 
index 444f1069262f325f4dbfa8b37c7346572792f340..27c6603c2b90263406f9612812927dcb995a2c60 100644 (file)
@@ -113,7 +113,7 @@ test.fail_test(test.read('test6' + _obj) != " -x -c\nThis is a .FPP file.\n")
 
 
 
-g77 = test.where_is('g77')
+g77 = test.detect('F77', 'g77')
 FTN_LIB = TestSCons.fortran_lib
 
 if g77:
index ac6e066a67c4c35f226fb955266b37c73e763016..e4e1666221bd2a929bb8250d6f3bdd80ab32cd30 100644 (file)
@@ -77,9 +77,9 @@ elif string.find(sys.platform, 'irix') != -1:
 scons: *** [f1] Error 127
 """ % no_such_file)
 else:
-    test.fail_test(test.stderr() != """sh: %s: No such file or directory
+    test.fail_test(string.find(test.stderr(), """%s: No such file or directory
 scons: *** [f1] Error 127
-""" % no_such_file)
+""" % no_such_file) == -1)
 
 
 test.write('SConstruct2', r"""
@@ -106,9 +106,9 @@ elif string.find(sys.platform, 'irix') != -1:
 scons: *** [f2] Error 126
 """ % not_executable)
 else:
-    test.fail_test(test.stderr() != """sh: %s: Permission denied
+    test.fail_test(string.find(test.stderr(), """%s: Permission denied
 scons: *** [f2] Error 126
-""" % not_executable)
+""" % not_executable) == -1)
 
 test.write('SConstruct3', r"""
 bld = Builder(action = '%s $SOURCES $TARGET')
@@ -134,8 +134,8 @@ elif string.find(sys.platform, 'irix') != -1:
 scons: *** [f3] Error 126
 """ % test.workdir)
 else:
-    test.fail_test(test.stderr() != """sh: %s: is a directory
+    test.fail_test(string.find(test.stderr(), """%s: is a directory
 scons: *** [f3] Error 126
-""" % test.workdir)
+""" % test.workdir) == -1)
 
 test.pass_test()