[Python-checkins] r43467 - python/trunk/Lib/test/test_decimal.py

tim.peters python-checkins at python.org
Fri Mar 31 06:11:16 CEST 2006


Author: tim.peters
Date: Fri Mar 31 06:11:16 2006
New Revision: 43467

Modified:
   python/trunk/Lib/test/test_decimal.py
Log:
test_main():  Restore the decimal context that was in
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.


Modified: python/trunk/Lib/test/test_decimal.py
==============================================================================
--- python/trunk/Lib/test/test_decimal.py	(original)
+++ python/trunk/Lib/test/test_decimal.py	Fri Mar 31 06:11:16 2006
@@ -29,7 +29,8 @@
 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 @@
 # 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 @@
         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.


More information about the Python-checkins mailing list