]> granicus.if.org Git - python/commitdiff
test_main(): Restore the decimal context that was in
authorTim Peters <tim.peters@gmail.com>
Fri, 31 Mar 2006 04:11:16 +0000 (04:11 +0000)
committerTim Peters <tim.peters@gmail.com>
Fri, 31 Mar 2006 04:11:16 +0000 (04:11 +0000)
effect at the time test_decimal was imported.  Else
running test_decimal had the bad side effect of
permanently changing the decimal context in effect.
That caused text_tokenize to fail if it ran after
test_decimal.

Lib/test/test_decimal.py

index 6133b2ea19b74e726c94028315498e5b0d17fc1f..844cee0421456edd09021244464385f9e852d6c3 100644 (file)
@@ -29,7 +29,8 @@ import glob
 import os, sys
 import pickle, copy
 from decimal import *
-from test.test_support import TestSkipped, run_unittest, run_doctest, is_resource_enabled
+from test.test_support import (TestSkipped, run_unittest, run_doctest,
+                               is_resource_enabled)
 import random
 try:
     import threading
@@ -39,13 +40,14 @@ except ImportError:
 # Useful Test Constant
 Signals = getcontext().flags.keys()
 
-# Tests are built around these assumed context defaults
-DefaultContext.prec=9
-DefaultContext.rounding=ROUND_HALF_EVEN
-DefaultContext.traps=dict.fromkeys(Signals, 0)
+# Tests are built around these assumed context defaults.
+# test_main() restores the original context.
+ORIGINAL_CONTEXT = getcontext().copy()
+DefaultContext.prec = 9
+DefaultContext.rounding = ROUND_HALF_EVEN
+DefaultContext.traps = dict.fromkeys(Signals, 0)
 setcontext(DefaultContext)
 
-
 TESTDATADIR = 'decimaltestdata'
 if __name__ == '__main__':
     file = sys.argv[0]
@@ -1081,10 +1083,12 @@ def test_main(arith=False, verbose=None):
         DecimalTest,
     ]
 
-    run_unittest(*test_classes)
-    import decimal as DecimalModule
-    run_doctest(DecimalModule, verbose)
-
+    try:
+        run_unittest(*test_classes)
+        import decimal as DecimalModule
+        run_doctest(DecimalModule, verbose)
+    finally:
+        setcontext(ORIGINAL_CONTEXT)
 
 if __name__ == '__main__':
     # Calling with no arguments runs all tests.