]> granicus.if.org Git - python/commitdiff
Test for math.* exceptional behavior only in verbose mode, so that the
authorTim Peters <tim.peters@gmail.com>
Mon, 16 Oct 2000 17:35:13 +0000 (17:35 +0000)
committerTim Peters <tim.peters@gmail.com>
Mon, 16 Oct 2000 17:35:13 +0000 (17:35 +0000)
oddball platforms (where, e.g., math.exp(+huge) still fails to raise
OverflowError) don't fail the std test suite when run normally.

Lib/test/output/test_math
Lib/test/test_math.py

index bce7ddeffef0775515cfb8b2daf464ab3a72403e..2a980003a5cc9fca66dc3f633a2020bfc18dcbdb 100644 (file)
@@ -24,4 +24,3 @@ sinh
 sqrt
 tan
 tanh
-exceptions
index 1452035bc5e0caa97094409d19e4c1f1de357065..b7fde0ab0a34cfdd1315c62c2dfae30527d33f4e 100644 (file)
@@ -153,33 +153,43 @@ print 'tanh'
 testit('tanh(0)', math.tanh(0), 0)
 testit('tanh(1)+tanh(-1)', math.tanh(1)+math.tanh(-1), 0)
 
-print 'exceptions'  # oooooh, *this* is a x-platform gamble!  good luck
-
-try:
-    x = math.exp(-1000000000)
-except:
-    # mathmodule.c is failing to weed out underflows from libm, or
-    # we've got an fp format with huge dynamic range
-    raise TestFailed("underflowing exp() should not have rasied an exception")
-if x != 0:
-    raise TestFailed("underflowing exp() should have returned 0")
-
-# If this fails, probably using a strict IEEE-754 conforming libm, and x
-# is +Inf afterwards.  But Python wants overflows detected by default.
-try:
-    x = math.exp(1000000000)
-except OverflowError:
-    pass
-else:
-    raise TestFailed("overflowing exp() didn't trigger OverflowError")
-
-# If this fails, it could be a puzzle.  One odd possibility is that
-# mathmodule.c's CHECK() macro is getting confused while comparing
-# Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
-# as a result (and so raising OverflowError instead).
-try:
-    x = math.sqrt(-1.0)
-except ValueError:
-    pass
-else:
-    raise TestFailed("sqrt(-1) didn't raise ValueError")
+# RED_FLAG 16-Oct-2000 Tim
+# While 2.0 is more consistent about exceptions than previous releases, it
+# still fails this part of the test on some platforms.  For now, we only
+# *run* test_exceptions() in verbose mode, so that this isn't normally
+# tested.
+
+def test_exceptions():
+    print 'exceptions'
+    try:
+        x = math.exp(-1000000000)
+    except:
+        # mathmodule.c is failing to weed out underflows from libm, or
+        # we've got an fp format with huge dynamic range
+        raise TestFailed("underflowing exp() should not have raised "
+                         "an exception")
+    if x != 0:
+        raise TestFailed("underflowing exp() should have returned 0")
+
+    # If this fails, probably using a strict IEEE-754 conforming libm, and x
+    # is +Inf afterwards.  But Python wants overflows detected by default.
+    try:
+        x = math.exp(1000000000)
+    except OverflowError:
+        pass
+    else:
+        raise TestFailed("overflowing exp() didn't trigger OverflowError")
+
+    # If this fails, it could be a puzzle.  One odd possibility is that
+    # mathmodule.c's CHECK() macro is getting confused while comparing
+    # Inf (HUGE_VAL) to a NaN, and artificially setting errno to ERANGE
+    # as a result (and so raising OverflowError instead).
+    try:
+        x = math.sqrt(-1.0)
+    except ValueError:
+        pass
+    else:
+        raise TestFailed("sqrt(-1) didn't raise ValueError")
+
+if verbose:
+    test_exceptions()