asyncio: New error handling API. Issue #20681.
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index de2916b..28e5243 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -4,6 +4,7 @@
import contextlib
import io
import os
+import re
import socket
import socketserver
import sys
@@ -301,7 +302,7 @@
raise AssertionError("Time generator is not finished")
def add_reader(self, fd, callback, *args):
- self.readers[fd] = events.Handle(callback, args)
+ self.readers[fd] = events.Handle(callback, args, self)
def remove_reader(self, fd):
self.remove_reader_count[fd] += 1
@@ -320,7 +321,7 @@
handle._args, args)
def add_writer(self, fd, callback, *args):
- self.writers[fd] = events.Handle(callback, args)
+ self.writers[fd] = events.Handle(callback, args, self)
def remove_writer(self, fd):
self.remove_writer_count[fd] += 1
@@ -362,3 +363,16 @@
def MockCallback(**kwargs):
return unittest.mock.Mock(spec=['__call__'], **kwargs)
+
+
+class MockPattern(str):
+ """A regex based str with a fuzzy __eq__.
+
+ Use this helper with 'mock.assert_called_with', or anywhere
+ where a regexp comparison between strings is needed.
+
+ For instance:
+ mock_call.assert_called_with(MockPattern('spam.*ham'))
+ """
+ def __eq__(self, other):
+ return bool(re.search(str(self), other, re.S))