]> granicus.if.org Git - python/commitdiff
deprecated_err(): Stop bizarre warning messages when the tests
authorTim Peters <tim.peters@gmail.com>
Tue, 30 May 2006 02:25:25 +0000 (02:25 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 30 May 2006 02:25:25 +0000 (02:25 +0000)
are run in the order:

    test_genexps (or any other doctest-based test)
    test_struct
    test_doctest

The `warnings` module needs an advertised way to save/restore
its internal filter list.

Lib/test/test_struct.py

index 701f7fd1e96ed58ef8435f00d1a98e7648da68f2..9f43c0952c2885761fdadd2dc9decfda3d35bf43 100644 (file)
@@ -50,8 +50,12 @@ def any_err(func, *args):
             func.__name__, args)
 
 def deprecated_err(func, *args):
+    # The `warnings` module doesn't have an advertised way to restore
+    # its filter list.  Cheat.
+    save_warnings_filters = warnings.filters[:]
     warnings.filterwarnings("error", r"""^struct.*""", DeprecationWarning)
-    warnings.filterwarnings("error", r""".*format requires.*""", DeprecationWarning)
+    warnings.filterwarnings("error", r""".*format requires.*""",
+                            DeprecationWarning)
     try:
         try:
             func(*args)
@@ -65,7 +69,7 @@ def deprecated_err(func, *args):
             raise TestFailed, "%s%s did not raise error" % (
                 func.__name__, args)
     finally:
-        warnings.resetwarnings()
+        warnings.filters[:] = save_warnings_filters[:]
 
 simple_err(struct.calcsize, 'Z')