Move test.test_support.catch_warning() to the warnings module, rename it
catch_warnings(), and clean up the API.
While expanding the test suite, a bug was found where a warning about the
'line' argument to showwarning() was not letting functions with '*args' go
without a warning.
Closes issue 3602.
Code review by Benjamin Peterson.
diff --git a/Lib/asynchat.py b/Lib/asynchat.py
index 121b467..a97de93 100644
--- a/Lib/asynchat.py
+++ b/Lib/asynchat.py
@@ -49,8 +49,9 @@
import socket
import asyncore
from collections import deque
+from sys import py3kwarning
from test.test_support import catch_warning
-from warnings import filterwarnings
+from warnings import filterwarnings, catch_warnings
class async_chat (asyncore.dispatcher):
"""This is an abstract class. You must derive from this class, and add
@@ -218,8 +219,9 @@
# handle classic producer behavior
obs = self.ac_out_buffer_size
try:
- with catch_warning(record=False):
- filterwarnings("ignore", ".*buffer", DeprecationWarning)
+ with catch_warnings():
+ if py3kwarning:
+ filterwarnings("ignore", ".*buffer", DeprecationWarning)
data = buffer(first, 0, obs)
except TypeError:
data = first.more()