Add a skip_test() method to the infrastructure and use it for test scripts that skip...
authorstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 13 Aug 2005 05:42:18 +0000 (05:42 +0000)
committerstevenknight <stevenknight@fdb21ef1-2011-0410-befe-b5e4ea1792b1>
Sat, 13 Aug 2005 05:42:18 +0000 (05:42 +0000)
git-svn-id: http://scons.tigris.org/svn/scons/trunk@1325 fdb21ef1-2011-0410-befe-b5e4ea1792b1

13 files changed:
etc/TestSCons.py
test/Fortran/F77PATH.py
test/Fortran/F90PATH.py
test/Fortran/FORTRANPATH.py
test/Java/JAR.py
test/Java/JARFLAGS.py
test/Java/JAVAC.py
test/Java/JAVACFLAGS.py
test/Java/JAVAH.py
test/PharLap.py
test/Repository/Java.py
test/Repository/JavaH.py
test/Repository/RMIC.py

index 791415d4cf448a2ab78a6731250354ea85ef6d4c..fec51a479742deaba1dad26a1ef88dd9b2ea93aa 100644 (file)
@@ -242,6 +242,33 @@ class TestSCons(TestCommon):
         kw['match'] = self.match_re_dotall
         apply(self.run, [], kw)
 
+    def skip_test(self, message="Skipping test.\n"):
+        """Skips a test.
+
+        Proper test-skipping behavior is dependent on whether we're being
+        executed as part of development of a change under Aegis.
+
+        Technically, skipping a test is a NO RESULT, but Aegis will
+        treat that as a test failure and prevent the change from going
+        to the next step.  We don't want to force anyone using Aegis
+        to have to install absolutely every tool used by the tests,
+        so we actually report to Aegis that a skipped test has PASSED
+        so that the workflow isn't held up.
+        """
+        if message:
+            sys.stdout.write(message)
+            sys.stdout.flush()
+        devdir = os.popen("aesub '$dd' 2>/dev/null", "r").read()[:-1]
+        intdir = os.popen("aesub '$intd' 2>/dev/null", "r").read()[:-1]
+        if devdir and self._cwd[:len(devdir)] == devdir or \
+           intdir and self._cwd[:len(intdir)] == intdir:
+            # We're under the development directory for this change,
+            # so this is an Aegis invocation; pass the test (exit 0).
+            self.pass_test()
+        else:
+            self.no_result()
+
+
     def java_ENV(self):
         """
         Return a default external environment that uses a local Java SDK
index e88cdc75ed46161841b2bc0abf9ef8b9dd1b5e2e..4308bed8da7cd1403747735b4378a7d32d9db9ac 100644 (file)
@@ -39,7 +39,7 @@ args = prog + ' ' + subdir_prog + ' ' + variant_prog
 test = TestSCons.TestSCons()
 
 if not test.detect('F77', 'g77'):
-    test.pass_test()
+    test.skip_test('Found no $F77 tool; skipping test.\n')
     
 test.subdir('include', 'subdir', ['subdir', 'include'], 'inc2')
 
index 7dbbf2b30daf17fa71a5009fc1582781e4462546..c1b6f49005c8ba22a0ead06f669a38d56999c118 100644 (file)
@@ -39,16 +39,23 @@ args = prog + ' ' + subdir_prog + ' ' + variant_prog
 
 test = TestSCons.TestSCons()
 
-#if not test.detect('F90', 'g90'):
-#    test.pass_test()
-base = '/opt/intel_fc_80'
-F90 = os.path.join(base, 'bin', 'ifort')
+baselist = [
+    '/opt/intel_fc_80',
+    '/opt/intel/fc/9.0',
+]
+
+F90 = None
+for base in baselist:
+    ifort = os.path.join(base, 'bin', 'ifort')
+    if os.path.exists(ifort):
+        F90 = ifort
+
+if not F90:
+    l = string.join(baselist, '\n\t')
+    test.skip_test('No (hard-coded) F90 compiler under:' + l + '\n')
+
 LIBPATH = os.path.join(base, 'lib')
 LIBS = ['irc']
-if not os.path.exists(F90):
-   sys.stderr.write('No (hard-coded) F90 compiler %s\n' % F90)
-   test.no_result(1)
-
 os.environ['LD_LIBRARY_PATH'] = LIBPATH
     
 test.subdir('include', 'subdir', ['subdir', 'include'], 'inc2')
index ec1b13ec4be132e5644a9991a3bebfd6a9c211f8..fc40bf1e6f032badc60b8273bdbb4756eb3b0272 100644 (file)
@@ -39,7 +39,7 @@ args = prog + ' ' + subdir_prog + ' ' + variant_prog
 test = TestSCons.TestSCons()
 
 if not test.detect('F77', 'g77'):
-    test.pass_test()
+    test.skip_test('Found no $F77 tool; skipping test.\n')
     
 test.subdir('include', 'subdir', ['subdir', 'include'], 'inc2')
 
index 42f2c5aff6b1b085f9960d4e48a46118579ed188..f0e3b3adb93a60dba20b270373251e0f5b6f9f6e 100644 (file)
@@ -126,16 +126,14 @@ if test.detect_tool('javac', ENV=ENV):
 else:
     where_javac = test.where_is('javac')
 if not where_javac:
-    print "Could not find Java javac, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java javac, skipping test(s).\n")
 
 if test.detect_tool('jar', ENV=ENV):
     where_jar = test.detect('JAR', 'jar', ENV=ENV)
 else:
     where_jar = test.where_is('jar')
 if not where_jar:
-    print "Could not find Java jar, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java jar, skipping test(s).\n")
 
 
 test.write("wrapper.py", """\
index 9a846ecd152005f357847d7fffb9c0634ce3111b..64eb1a43f5cc2f6bc80f31f3a30bdb7f2b5f8383 100644 (file)
@@ -39,16 +39,14 @@ if test.detect_tool('javac', ENV=ENV):
 else:
     where_javac = test.where_is('javac')
 if not where_javac:
-    print "Could not find Java javac, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java javac, skipping test(s).\n")
 
 if test.detect_tool('jar', ENV=ENV):
     where_jar = test.detect('JAR', 'jar', ENV=ENV)
 else:
     where_javac = test.where_is('jar')
 if not where_jar:
-    print "Could not find Java jar, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java jar, skipping test(s).\n")
 
 test.write('SConstruct', """
 env = Environment(tools = ['javac', 'jar'],
index a89ed528473416f1496dd434f3db00113deba59b..dd09e35be2e8faf8710bd859d046a99c5c3718f5 100644 (file)
@@ -99,8 +99,7 @@ if test.detect_tool('javac', ENV=ENV):
 else:
     where_javac = test.where_is('javac')
 if not where_javac:
-    print "Could not find Java javac, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java javac, skipping test(s).\n")
 
 
 
index d0ab8479be5897d2823a8577a7d1b0f2c006c6ef..a237e91f80618c02ac6f69096a21a9217195dcd5 100644 (file)
@@ -37,8 +37,7 @@ if test.detect_tool('javac', ENV=ENV):
 else:
     where_javac = test.where_is('javac')
 if not where_javac:
-    print "Could not find Java javac, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java javac, skipping test(s).\n")
 
 test.subdir('src')
 
index b70fde03cd262c359d80016abae59f1def2f6d75..f9a052eb61c9e7b9535f00716f4640c3db266c11 100644 (file)
@@ -103,8 +103,7 @@ else:
     if not where_javac:
         where_javac = env.WhereIs('javac', '/usr/local/j2sdk1.3.1/bin')
         if not where_javac:
-            print "Could not find Java javac, skipping test(s)."
-            test.pass_test(1)
+            test.skip_test("Could not find Java javac, skipping test(s).\n")
 
 if test.detect_tool('javah'):
     where_javah = test.detect('JAVAH', 'javah')
@@ -115,8 +114,7 @@ else:
     if not where_javah:
         where_javah = env.WhereIs('javah', '/usr/local/j2sdk1.3.1/bin')
         if not where_javah:
-            print "Could not find Java javah, skipping test(s)."
-            test.pass_test(1)
+            test.skip_test("Could not find Java javah, skipping test(s).\n")
 
 
 
index d9f89934317c537a5a52cb9111d8b0b32254e0e6..965259864152bf4fa789bea3fa382b1e451fd0e8 100644 (file)
@@ -34,7 +34,7 @@ import time
 test = TestSCons.TestSCons()
 
 if sys.platform != 'win32':
-    test.pass_test()
+    test.skip_test('PharLap is only available on win32; skipping test.\n')
 
 test.no_result(not test.detect_tool('linkloc'))
 test.no_result(not test.detect_tool('386asm'))
index fd2986e6cf2e8b9395a9b15821763402e641e5a3..6a45dffda725f158da5ab46fec7c90e4c67cf02f 100644 (file)
@@ -41,8 +41,7 @@ java = '/usr/local/j2sdk1.3.1/bin/java'
 javac = '/usr/local/j2sdk1.3.1/bin/javac'
 
 if not os.path.exists(javac):
-    print "Could not find Java, skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java, skipping test(s).\n")
 
 ###############################################################################
 
index c11ad2b4b647966c8251d22ad7fb975399eb0f81..0420ca378996d1b523bbae1913691e4b83c72d74 100644 (file)
@@ -42,12 +42,10 @@ javac = '/usr/local/j2sdk1.3.1/bin/javac'
 javah = '/usr/local/j2sdk1.3.1/bin/javah'
 
 if not os.path.exists(javac):
-    print "Could not find Java (javac), skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java (javac), skipping test(s).\n")
 
 if not os.path.exists(javah):
-    print "Could not find Java (javah), skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java (javah), skipping test(s).\n")
 
 ###############################################################################
 
index 9282835dd23323095ac05db240e00cd0ad33ae22..011006d78b1550719c116bcd15131e9f5c9da103 100644 (file)
@@ -42,12 +42,10 @@ javac = '/usr/local/j2sdk1.3.1/bin/javac'
 rmic = '/usr/local/j2sdk1.3.1/bin/rmic'
 
 if not os.path.exists(javac):
-    print "Could not find Java (javac), skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java (javac), skipping test(s).\n")
 
 if not os.path.exists(rmic):
-    print "Could not find Java (rmic), skipping test(s)."
-    test.pass_test(1)
+    test.skip_test("Could not find Java (rmic), skipping test(s).\n")
 
 ###############################################################################