From: Tim Peters Date: Fri, 31 Mar 2006 04:11:16 +0000 (+0000) Subject: test_main(): Restore the decimal context that was in X-Git-Tag: v2.5a0~11 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=46cc702b722f6113114f3f4f86aed87ad0c24125;p=thirdparty%2FPython%2Fcpython.git 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. --- diff --git a/Lib/test/test_decimal.py b/Lib/test/test_decimal.py index 6133b2ea19b7..844cee042145 100644 --- a/Lib/test/test_decimal.py +++ b/Lib/test/test_decimal.py @@ -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.