Hello community,

here is the log from the commit of package python-mocket for openSUSE:Factory 
checked in at 2020-12-12 20:29:43
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mocket (Old)
 and      /work/SRC/openSUSE:Factory/.python-mocket.new.2328 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-mocket"

Sat Dec 12 20:29:43 2020 rev:7 rq:854523 version:3.9.3

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mocket/python-mocket.changes      
2020-10-29 09:48:32.480179445 +0100
+++ /work/SRC/openSUSE:Factory/.python-mocket.new.2328/python-mocket.changes    
2020-12-12 20:32:10.649840343 +0100
@@ -1,0 +2,16 @@
+Thu Dec 10 01:45:45 UTC 2020 - Benjamin Greiner <c...@bnavigator.de>
+
+- Relax pinned setup.py requires so that the installed egg-info
+  does not interfere with other packages
+
+-------------------------------------------------------------------
+Mon Nov  9 20:23:21 UTC 2020 - Sebastian Wagner <sebix+novell....@sebix.at>
+
+- Update to version 3.9.3:
+ * Fix for `.makefile()` as reported by @KyleKing.
+ * From `codecs` to `binascii` for PyPy. (#127)
+- Update to version 3.9.2:
+ * Mocket raises exceptions.
+ * Fix for Python 2.
+
+-------------------------------------------------------------------

Old:
----
  mocket-3.9.1.tar.gz

New:
----
  mocket-3.9.3.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-mocket.spec ++++++
--- /var/tmp/diff_new_pack.8ZGPVe/_old  2020-12-12 20:32:11.317841039 +0100
+++ /var/tmp/diff_new_pack.8ZGPVe/_new  2020-12-12 20:32:11.317841039 +0100
@@ -26,7 +26,7 @@
 %bcond_with test
 %endif
 Name:           python-mocket%{psuffix}
-Version:        3.9.1
+Version:        3.9.3
 Release:        0
 Summary:        Python socket mock framework
 License:        BSD-3-Clause
@@ -77,7 +77,7 @@
 %setup -q -n mocket-%{version}
 sed -i '/cov/ d' setup.cfg
 sed -i '/pipenv/ d' setup.py
-sed -i 's/==/>=/' requirements.txt
+sed -i 's/==.*$//' requirements.txt
 
 %build
 %if !%{with test}

++++++ mocket-3.9.1.tar.gz -> mocket-3.9.3.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/PKG-INFO new/mocket-3.9.3/PKG-INFO
--- old/mocket-3.9.1/PKG-INFO   2020-10-09 20:32:55.048277000 +0200
+++ new/mocket-3.9.3/PKG-INFO   2020-11-09 11:51:48.694063000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mocket
-Version: 3.9.1
+Version: 3.9.3
 Summary: Socket Mock Framework - for all kinds of socket animals, web-clients 
included -         with gevent/asyncio/SSL support
 Home-page: https://github.com/mindflayer/python-mocket
 Author: Giorgio Salluzzo
@@ -10,8 +10,8 @@
         mocket /mɔˈkɛt/
         ===============
         
-        .. image:: 
https://travis-ci.org/mindflayer/python-mocket.svg?branch=master
-            :target: https://travis-ci.org/mindflayer/python-mocket
+        .. image:: 
https://travis-ci.com/mindflayer/python-mocket.svg?branch=master
+            :target: https://travis-ci.com/mindflayer/python-mocket
         
         .. image:: 
https://coveralls.io/repos/github/mindflayer/python-mocket/badge.svg?branch=master
             :target: 
https://coveralls.io/github/mindflayer/python-mocket?branch=master
@@ -151,10 +151,24 @@
         
             $ py.test example.py
         
+        Example of how to fake socket errors
+        ====================================
+        
+        It's very important that we test non-happy paths.
+        
+        .. code-block:: python
+        
+            @mocketize
+            def test_raise_exception(self):
+                url = "http://github.com/fluidicon.png";
+                Entry.single_register(Entry.GET, url, exception=socket.error())
+                with self.assertRaises(requests.exceptions.ConnectionError):
+                    requests.get(url)
+        
         Example of how to record real socket traffic
         ============================================
         
-        You probably know what *VCRpy* is capable of, that's the `mocket`'s 
way of achieving it:
+        You probably know what *VCRpy* is capable of, that's the *mocket*'s 
way of achieving it:
         
         .. code-block:: python
         
@@ -180,9 +194,9 @@
         Mocket HTTP mock can work as *HTTPretty* replacement for many 
different use cases. Two main features are missing:
         
         - URL entries containing regular expressions;
-        - response body from functions.
+        - response body from functions (used mostly to fake errors, *mocket* 
doesn't need to do it this way).
         
-        Two features which are against the Zen of Python, at least imho 
(mindflayer), but of course I am open to call it into question.
+        Two features which are against the Zen of Python, at least imho 
(*mindflayer*), but of course I am open to call it into question.
         
         Example:
         
@@ -325,7 +339,7 @@
         - Slides as PDF: 
https://ep2013.europython.eu/media/conference/slides/mocket-a-socket-mock-framework.pdf
         
 Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
+Classifier: Development Status :: 6 - Mature
 Classifier: Intended Audience :: Developers
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
@@ -333,6 +347,7 @@
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/README.rst new/mocket-3.9.3/README.rst
--- old/mocket-3.9.1/README.rst 2020-10-09 20:32:23.000000000 +0200
+++ new/mocket-3.9.3/README.rst 2020-11-09 11:49:45.000000000 +0100
@@ -2,8 +2,8 @@
 mocket /mɔˈkɛt/
 ===============
 
-.. image:: https://travis-ci.org/mindflayer/python-mocket.svg?branch=master
-    :target: https://travis-ci.org/mindflayer/python-mocket
+.. image:: https://travis-ci.com/mindflayer/python-mocket.svg?branch=master
+    :target: https://travis-ci.com/mindflayer/python-mocket
 
 .. image:: 
https://coveralls.io/repos/github/mindflayer/python-mocket/badge.svg?branch=master
     :target: https://coveralls.io/github/mindflayer/python-mocket?branch=master
@@ -143,10 +143,24 @@
 
     $ py.test example.py
 
+Example of how to fake socket errors
+====================================
+
+It's very important that we test non-happy paths.
+
+.. code-block:: python
+
+    @mocketize
+    def test_raise_exception(self):
+        url = "http://github.com/fluidicon.png";
+        Entry.single_register(Entry.GET, url, exception=socket.error())
+        with self.assertRaises(requests.exceptions.ConnectionError):
+            requests.get(url)
+
 Example of how to record real socket traffic
 ============================================
 
-You probably know what *VCRpy* is capable of, that's the `mocket`'s way of 
achieving it:
+You probably know what *VCRpy* is capable of, that's the *mocket*'s way of 
achieving it:
 
 .. code-block:: python
 
@@ -172,9 +186,9 @@
 Mocket HTTP mock can work as *HTTPretty* replacement for many different use 
cases. Two main features are missing:
 
 - URL entries containing regular expressions;
-- response body from functions.
+- response body from functions (used mostly to fake errors, *mocket* doesn't 
need to do it this way).
 
-Two features which are against the Zen of Python, at least imho (mindflayer), 
but of course I am open to call it into question.
+Two features which are against the Zen of Python, at least imho 
(*mindflayer*), but of course I am open to call it into question.
 
 Example:
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket/__init__.py 
new/mocket-3.9.3/mocket/__init__.py
--- old/mocket-3.9.1/mocket/__init__.py 2020-10-09 20:32:23.000000000 +0200
+++ new/mocket-3.9.3/mocket/__init__.py 2020-11-09 11:49:45.000000000 +0100
@@ -7,4 +7,4 @@
 
 __all__ = ("mocketize", "Mocket", "MocketEntry", "Mocketizer")
 
-__version__ = "3.9.1"
+__version__ = "3.9.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket/mocket.py 
new/mocket-3.9.3/mocket/mocket.py
--- old/mocket-3.9.1/mocket/mocket.py   2020-10-09 20:32:23.000000000 +0200
+++ new/mocket-3.9.3/mocket/mocket.py   2020-11-09 11:49:45.000000000 +0100
@@ -112,14 +112,10 @@
             return getattr(self.sock, name)
 
 
-def create_connection(
-    address, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, source_address=None
-):
+def create_connection(address, timeout=None, source_address=None):
     s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, socket.IPPROTO_TCP)
-    if timeout is not socket._GLOBAL_DEFAULT_TIMEOUT:
+    if timeout:
         s.settimeout(timeout)
-    # if source_address:
-    #     s.bind(source_address)
     s.connect(address)
     return s
 
@@ -129,7 +125,8 @@
 
 
 class MocketSocket(object):
-    fd = None
+    timeout = None
+    _fd = None
     family = None
     type = None
     proto = None
@@ -145,7 +142,6 @@
     def __init__(
         self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, *args, 
**kwargs
     ):
-        self.settimeout(socket._GLOBAL_DEFAULT_TIMEOUT)
         self.true_socket = true_socket(family, type, proto)
         self._connected = False
         self._buflen = 65536
@@ -174,6 +170,12 @@
             self.__class__.__name__, self.family, self.type, self.proto
         )
 
+    @property
+    def fd(self):
+        if self._fd is None:
+            self._fd = MocketSocketCore()
+        return self._fd
+
     def gettimeout(self):
         return self.timeout
 
@@ -186,10 +188,7 @@
             self.true_socket.setsockopt(family, type, proto)
 
     def settimeout(self, timeout):
-        try:
-            self.timeout = timeout
-        except AttributeError:  # pragma: no cover
-            pass
+        self.timeout = timeout
 
     def getsockopt(self, level, optname, buflen=None):
         return socket.SOCK_STREAM
@@ -258,7 +257,6 @@
         else:
             response = self.true_sendall(data, *args, **kwargs)
 
-        self.fd = MocketSocketCore()
         self.fd.seek(0)
         self.fd.write(response)
         self.fd.truncate()
@@ -273,7 +271,7 @@
     def recv(self, buffersize, flags=None):
         if Mocket.r_fd and Mocket.w_fd:
             return os.read(Mocket.r_fd, buffersize)
-        if self.fd is not None:
+        if self.fd:
             data = self.read(buffersize)
             if data:
                 return data
@@ -391,7 +389,7 @@
         return len(data)
 
     def close(self):
-        self.fd = MocketSocketCore()
+        self._fd = None
 
     def __getattr__(self, name):
         """ Do nothing catchall function, for methods like close() and 
shutdown() """
@@ -472,7 +470,6 @@
             (2, 1, 6, "", (host, port))
         ]
         ssl.wrap_socket = ssl.__dict__["wrap_socket"] = 
FakeSSLContext.wrap_socket
-        # ssl.SSLSocket = ssl.__dict__["SSLSocket"] = MocketSocket
         ssl.SSLContext = ssl.__dict__["SSLContext"] = FakeSSLContext
         socket.inet_pton = socket.__dict__["inet_pton"] = lambda family, ip: 
byte_type(
             "\x7f\x00\x00\x01", "utf-8"
@@ -502,7 +499,6 @@
         socket.gethostbyname = socket.__dict__["gethostbyname"] = 
true_gethostbyname
         socket.getaddrinfo = socket.__dict__["getaddrinfo"] = true_getaddrinfo
         ssl.wrap_socket = ssl.__dict__["wrap_socket"] = true_ssl_wrap_socket
-        # ssl.SSLSocket = ssl.__dict__["SSLSocket"] = true_ssl_socket
         ssl.SSLContext = ssl.__dict__["SSLContext"] = true_ssl_context
         socket.inet_pton = socket.__dict__["inet_pton"] = true_inet_pton
         urllib3.util.ssl_.wrap_socket = urllib3.util.ssl_.__dict__[
@@ -548,7 +544,9 @@
 
         lresponses = []
         for r in responses:
-            if not getattr(r, "data", False):
+            if isinstance(r, BaseException):
+                pass
+            elif not getattr(r, "data", False):
                 if isinstance(r, text_type):
                     r = encode_to_bytes(r)
                 r = self.response_cls(r)
@@ -569,6 +567,10 @@
         response = self.responses[self.response_index]
         if self.response_index < len(self.responses) - 1:
             self.response_index += 1
+
+        if isinstance(response, BaseException):
+            raise response
+
         return response.data
 
 
@@ -600,9 +602,15 @@
     def wrap(test=None, truesocket_recording_dir=None):
         def wrapper(t, *args, **kw):
             instance = args[0] if args else None
-            namespace = ".".join(
-                (instance.__class__.__module__, instance.__class__.__name__, 
t.__name__)
-            )
+            namespace = None
+            if truesocket_recording_dir:
+                namespace = ".".join(
+                    (
+                        instance.__class__.__module__,
+                        instance.__class__.__name__,
+                        t.__name__,
+                    )
+                )
             with Mocketizer(
                 instance,
                 namespace=namespace,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket/mockhttp.py 
new/mocket-3.9.3/mocket/mockhttp.py
--- old/mocket-3.9.1/mocket/mockhttp.py 2020-10-09 20:32:23.000000000 +0200
+++ new/mocket-3.9.3/mocket/mockhttp.py 2020-10-11 12:45:14.000000000 +0200
@@ -231,11 +231,22 @@
 
     @classmethod
     def single_register(
-        cls, method, uri, body="", status=200, headers=None, 
match_querystring=True
+        cls,
+        method,
+        uri,
+        body="",
+        status=200,
+        headers=None,
+        match_querystring=True,
+        exception=None,
     ):
+
+        response = (
+            exception
+            if exception
+            else cls.response_cls(body=body, status=status, headers=headers)
+        )
+
         cls.register(
-            method,
-            uri,
-            cls.response_cls(body=body, status=status, headers=headers),
-            match_querystring=match_querystring,
+            method, uri, response, match_querystring=match_querystring,
         )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket/mockredis.py 
new/mocket-3.9.3/mocket/mockredis.py
--- old/mocket-3.9.1/mocket/mockredis.py        2020-02-20 11:00:16.000000000 
+0100
+++ new/mocket-3.9.3/mocket/mockredis.py        2020-10-11 12:45:14.000000000 
+0200
@@ -2,8 +2,7 @@
 
 from itertools import chain
 
-from .compat import (byte_type, decode_from_bytes, encode_to_bytes, shsplit,
-                     text_type)
+from .compat import byte_type, decode_from_bytes, encode_to_bytes, shsplit, 
text_type
 from .mocket import Mocket, MocketEntry
 
 
@@ -21,38 +20,45 @@
     @staticmethod
     def tokens(iterable):
         iterable = [encode_to_bytes(x) for x in iterable]
-        return [
-            '*{0}'.format(len(iterable)).encode('utf-8')
-        ] + list(
-            chain(*zip(['${0}'.format(len(x)).encode('utf-8') for x in 
iterable], iterable))
+        return ["*{0}".format(len(iterable)).encode("utf-8")] + list(
+            chain(
+                *zip(
+                    ["${0}".format(len(x)).encode("utf-8") for x in iterable], 
iterable
+                )
+            )
         )
 
     @staticmethod
     def redisize(data):
         def get_conversion(t):
             return {
-                dict: lambda x: 
b'\r\n'.join(Redisizer.tokens(list(chain(*tuple(x.items()))))),
-                int: lambda x: ':{0}'.format(x).encode('utf-8'),
-                text_type: lambda x: 
'${0}\r\n{1}'.format(len(x.encode('utf-8')), x).encode('utf-8'),
-                list: lambda x: b'\r\n'.join(Redisizer.tokens(x)),
+                dict: lambda x: b"\r\n".join(
+                    Redisizer.tokens(list(chain(*tuple(x.items()))))
+                ),
+                int: lambda x: ":{0}".format(x).encode("utf-8"),
+                text_type: lambda x: "${0}\r\n{1}".format(
+                    len(x.encode("utf-8")), x
+                ).encode("utf-8"),
+                list: lambda x: b"\r\n".join(Redisizer.tokens(x)),
             }[t]
+
         if isinstance(data, Redisizer):
             return data
         if isinstance(data, byte_type):
             data = decode_from_bytes(data)
-        return Redisizer(get_conversion(data.__class__)(data) + b'\r\n')
+        return Redisizer(get_conversion(data.__class__)(data) + b"\r\n")
 
     @staticmethod
-    def command(description, _type='+'):
-        return Redisizer('{0}{1}{2}'.format(_type, description, 
'\r\n').encode('utf-8'))
+    def command(description, _type="+"):
+        return Redisizer("{0}{1}{2}".format(_type, description, 
"\r\n").encode("utf-8"))
 
     @staticmethod
     def error(description):
-        return Redisizer.command(description, _type='-')
+        return Redisizer.command(description, _type="-")
 
 
-OK = Redisizer.command('OK')
-QUEUED = Redisizer.command('QUEUED')
+OK = Redisizer.command("OK")
+QUEUED = Redisizer.command("QUEUED")
 ERROR = Redisizer.error
 
 
@@ -61,7 +67,7 @@
     response_cls = Response
 
     def __init__(self, addr, command, responses):
-        super(Entry, self).__init__(addr or ('localhost', 6379), responses)
+        super(Entry, self).__init__(addr or ("localhost", 6379), responses)
         d = shsplit(command)
         d[0] = d[0].upper()
         self.command = Redisizer.tokens(d)
@@ -71,7 +77,10 @@
 
     @classmethod
     def register(cls, addr, command, *responses):
-        responses = [cls.response_cls(r) for r in responses]
+        responses = [
+            r if isinstance(r, BaseException) else cls.response_cls(r)
+            for r in responses
+        ]
         Mocket.register(cls(addr, command, responses))
 
     @classmethod
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket/utils.py 
new/mocket-3.9.3/mocket/utils.py
--- old/mocket-3.9.1/mocket/utils.py    2020-10-09 19:05:44.000000000 +0200
+++ new/mocket-3.9.3/mocket/utils.py    2020-10-12 09:58:19.000000000 +0200
@@ -1,4 +1,4 @@
-import codecs
+import binascii
 import io
 import os
 import ssl
@@ -52,7 +52,7 @@
     >>> hexdump(b"bar foobar foo") == decode_from_bytes(encode_to_bytes("62 61 
72 20 66 6F 6F 62 61 72 20 66 6F 6F"))
     True
     """
-    bs = decode_from_bytes(codecs.encode(binary_string, "hex_codec")).upper()
+    bs = decode_from_bytes(binascii.hexlify(binary_string).upper())
     return " ".join(a + b for a, b in zip(bs[::2], bs[1::2]))
 
 
@@ -62,4 +62,4 @@
     True
     """
     string_no_spaces = "".join(string.split())
-    return codecs.decode(encode_to_bytes(string_no_spaces), "hex_codec")
+    return encode_to_bytes(binascii.unhexlify(string_no_spaces))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket.egg-info/PKG-INFO 
new/mocket-3.9.3/mocket.egg-info/PKG-INFO
--- old/mocket-3.9.1/mocket.egg-info/PKG-INFO   2020-10-09 20:32:54.000000000 
+0200
+++ new/mocket-3.9.3/mocket.egg-info/PKG-INFO   2020-11-09 11:51:48.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mocket
-Version: 3.9.1
+Version: 3.9.3
 Summary: Socket Mock Framework - for all kinds of socket animals, web-clients 
included -         with gevent/asyncio/SSL support
 Home-page: https://github.com/mindflayer/python-mocket
 Author: Giorgio Salluzzo
@@ -10,8 +10,8 @@
         mocket /mɔˈkɛt/
         ===============
         
-        .. image:: 
https://travis-ci.org/mindflayer/python-mocket.svg?branch=master
-            :target: https://travis-ci.org/mindflayer/python-mocket
+        .. image:: 
https://travis-ci.com/mindflayer/python-mocket.svg?branch=master
+            :target: https://travis-ci.com/mindflayer/python-mocket
         
         .. image:: 
https://coveralls.io/repos/github/mindflayer/python-mocket/badge.svg?branch=master
             :target: 
https://coveralls.io/github/mindflayer/python-mocket?branch=master
@@ -151,10 +151,24 @@
         
             $ py.test example.py
         
+        Example of how to fake socket errors
+        ====================================
+        
+        It's very important that we test non-happy paths.
+        
+        .. code-block:: python
+        
+            @mocketize
+            def test_raise_exception(self):
+                url = "http://github.com/fluidicon.png";
+                Entry.single_register(Entry.GET, url, exception=socket.error())
+                with self.assertRaises(requests.exceptions.ConnectionError):
+                    requests.get(url)
+        
         Example of how to record real socket traffic
         ============================================
         
-        You probably know what *VCRpy* is capable of, that's the `mocket`'s 
way of achieving it:
+        You probably know what *VCRpy* is capable of, that's the *mocket*'s 
way of achieving it:
         
         .. code-block:: python
         
@@ -180,9 +194,9 @@
         Mocket HTTP mock can work as *HTTPretty* replacement for many 
different use cases. Two main features are missing:
         
         - URL entries containing regular expressions;
-        - response body from functions.
+        - response body from functions (used mostly to fake errors, *mocket* 
doesn't need to do it this way).
         
-        Two features which are against the Zen of Python, at least imho 
(mindflayer), but of course I am open to call it into question.
+        Two features which are against the Zen of Python, at least imho 
(*mindflayer*), but of course I am open to call it into question.
         
         Example:
         
@@ -325,7 +339,7 @@
         - Slides as PDF: 
https://ep2013.europython.eu/media/conference/slides/mocket-a-socket-mock-framework.pdf
         
 Platform: UNKNOWN
-Classifier: Development Status :: 5 - Production/Stable
+Classifier: Development Status :: 6 - Mature
 Classifier: Intended Audience :: Developers
 Classifier: Operating System :: OS Independent
 Classifier: Programming Language :: Python :: 2.7
@@ -333,6 +347,7 @@
 Classifier: Programming Language :: Python :: 3.6
 Classifier: Programming Language :: Python :: 3.7
 Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
 Classifier: Programming Language :: Python :: Implementation :: CPython
 Classifier: Programming Language :: Python :: Implementation :: PyPy
 Classifier: Topic :: Software Development
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/mocket.egg-info/requires.txt 
new/mocket-3.9.3/mocket.egg-info/requires.txt
--- old/mocket-3.9.1/mocket.egg-info/requires.txt       2020-10-09 
20:32:54.000000000 +0200
+++ new/mocket-3.9.3/mocket.egg-info/requires.txt       2020-11-09 
11:51:48.000000000 +0100
@@ -2,7 +2,7 @@
 http-parser==0.9.0
 python-magic==0.4.18
 six==1.15.0
-urllib3==1.25.10
+urllib3==1.25.11
 
 [dev]
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/requirements.txt 
new/mocket-3.9.3/requirements.txt
--- old/mocket-3.9.1/requirements.txt   2020-10-09 20:32:50.000000000 +0200
+++ new/mocket-3.9.3/requirements.txt   2020-11-09 11:51:45.000000000 +0100
@@ -3,4 +3,4 @@
 http-parser==0.9.0
 python-magic==0.4.18
 six==1.15.0
-urllib3==1.25.10
+urllib3==1.25.11
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/setup.py new/mocket-3.9.3/setup.py
--- old/mocket-3.9.1/setup.py   2020-10-09 19:05:44.000000000 +0200
+++ new/mocket-3.9.3/setup.py   2020-10-12 09:58:19.000000000 +0200
@@ -52,7 +52,7 @@
     test_suite="runtests.runtests",
     license="BSD",
     classifiers=[
-        "Development Status :: 5 - Production/Stable",
+        "Development Status :: 6 - Mature",
         "Intended Audience :: Developers",
         "Operating System :: OS Independent",
         "Programming Language :: Python :: 2.7",
@@ -60,6 +60,7 @@
         "Programming Language :: Python :: 3.6",
         "Programming Language :: Python :: 3.7",
         "Programming Language :: Python :: 3.8",
+        "Programming Language :: Python :: 3.9",
         "Programming Language :: Python :: Implementation :: CPython",
         "Programming Language :: Python :: Implementation :: PyPy",
         "Topic :: Software Development",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/tests/main/test_http.py 
new/mocket-3.9.3/tests/main/test_http.py
--- old/mocket-3.9.1/tests/main/test_http.py    2020-10-09 20:32:23.000000000 
+0200
+++ new/mocket-3.9.3/tests/main/test_http.py    2020-11-09 11:49:45.000000000 
+0100
@@ -324,6 +324,13 @@
         self.assertEqual(r.status_code, 201)
 
     @mocketize
+    def test_raise_exception(self):
+        url = "http://github.com/fluidicon.png";
+        Entry.single_register(Entry.GET, url, exception=socket.error())
+        with self.assertRaises(requests.exceptions.ConnectionError):
+            requests.get(url)
+
+    @mocketize
     def test_sockets(self):
         """
         https://github.com/mindflayer/python-mocket/issues/111
@@ -331,12 +338,12 @@
         """
 
         # Define HTTP conversation.
-        url = "http://127.0.0.1/api/data";
+        url = "http://127.0.0.1:8080/api/data";
         Entry.single_register(Entry.POST, url)
 
         # Define HTTP url segments and data.
         host = "127.0.0.1"
-        port = 80
+        port = 8080
         method = "POST"
         path = "/api/data"
         data = json.dumps({"hello": "world"})
@@ -355,5 +362,4 @@
         sock.close()
 
         # Proof that worked.
-        print(Mocket.last_request().__dict__)
-        assert Mocket.last_request().body == '{"hello": "world"}'
+        self.assertEqual(Mocket.last_request().body, '{"hello": "world"}')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/tests/main/test_https.py 
new/mocket-3.9.3/tests/main/test_https.py
--- old/mocket-3.9.1/tests/main/test_https.py   2020-10-09 19:05:44.000000000 
+0200
+++ new/mocket-3.9.3/tests/main/test_https.py   2020-10-11 12:45:14.000000000 
+0200
@@ -5,10 +5,10 @@
 
 import pytest
 import requests
-from tests import urlopen
 
-from mocket import Mocket, mocketize, Mocketizer
+from mocket import Mocket, Mocketizer, mocketize
 from mocket.mockhttp import Entry
+from tests import urlopen
 
 
 @pytest.fixture
@@ -22,18 +22,19 @@
 
 @mocketize
 def test_json(response):
-    url_to_mock = 'https://testme.org/json'
+    url_to_mock = "https://testme.org/json";
 
     Entry.single_register(
         Entry.GET,
         url_to_mock,
         body=json.dumps(response),
-        headers={'content-type': 'application/json'})
+        headers={"content-type": "application/json"},
+    )
 
     mocked_response = requests.get(url_to_mock).json()
     assert response == mocked_response
 
-    mocked_response = json.loads(urlopen(url_to_mock).read().decode('utf-8'))
+    mocked_response = json.loads(urlopen(url_to_mock).read().decode("utf-8"))
     assert response == mocked_response
 
 
@@ -43,21 +44,19 @@
 @pytest.mark.skipif('os.getenv("SKIP_TRUE_HTTP", False)')
 @mocketize(truesocket_recording_dir=recording_directory)
 def test_truesendall_with_recording_https():
-    url = 'https://httpbin.org/ip'
+    url = "https://httpbin.org/ip";
 
     requests.get(url, headers={"Accept": "application/json"})
     resp = requests.get(url, headers={"Accept": "application/json"})
-    print(resp.content)
     assert resp.status_code == 200
 
     dump_filename = os.path.join(
-        Mocket.get_truesocket_recording_dir(),
-        Mocket.get_namespace() + '.json',
+        Mocket.get_truesocket_recording_dir(), Mocket.get_namespace() + 
".json",
     )
     with io.open(dump_filename) as f:
         responses = json.load(f)
 
-    assert len(responses['httpbin.org']['443'].keys()) == 1
+    assert len(responses["httpbin.org"]["443"].keys()) == 1
 
 
 @pytest.mark.skipif('os.getenv("SKIP_TRUE_HTTP", False)')
@@ -65,7 +64,7 @@
     Mocket.enable()
     Mocket.disable()
 
-    url = 'https://httpbin.org/ip'
+    url = "https://httpbin.org/ip";
     resp = requests.get(url)
     assert resp.status_code == 200
 
@@ -74,8 +73,8 @@
 def test_real_request_session():
     session = requests.Session()
 
-    url1 = 'https://httpbin.org/ip'
-    url2 = 'http://httpbin.org/headers'
+    url1 = "https://httpbin.org/ip";
+    url2 = "http://httpbin.org/headers";
 
     with Mocketizer():
         assert len(session.get(url1).content) < len(session.get(url2).content)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/tests/main/test_mocket.py 
new/mocket-3.9.3/tests/main/test_mocket.py
--- old/mocket-3.9.1/tests/main/test_mocket.py  2020-10-09 19:11:59.000000000 
+0200
+++ new/mocket-3.9.3/tests/main/test_mocket.py  2020-11-09 11:49:45.000000000 
+0100
@@ -34,29 +34,29 @@
     def test_gethostname(self):
         hostname = socket.gethostname()
         Mocket.enable()
-        self.assertEqual(socket.gethostname(), 'localhost')
+        self.assertEqual(socket.gethostname(), "localhost")
         Mocket.disable()
         self.assertEqual(socket.gethostname(), hostname)
 
     def test_gethostbyname(self):
-        host = socket.gethostbyname('localhost')
+        host = socket.gethostbyname("localhost")
         Mocket.enable()
-        self.assertEqual(socket.gethostbyname('localhost'), '127.0.0.1')
+        self.assertEqual(socket.gethostbyname("localhost"), "127.0.0.1")
         Mocket.disable()
-        self.assertEqual(socket.gethostbyname('localhost'), host)
+        self.assertEqual(socket.gethostbyname("localhost"), host)
 
     def test_register(self):
-        entry_1 = MocketEntry(('localhost', 80), True)
-        entry_2 = MocketEntry(('localhost', 80), True)
-        entry_3 = MocketEntry(('localhost', 8080), True)
+        entry_1 = MocketEntry(("localhost", 80), True)
+        entry_2 = MocketEntry(("localhost", 80), True)
+        entry_3 = MocketEntry(("localhost", 8080), True)
         Mocket.register(entry_1, entry_2, entry_3)
-        self.assertEqual(Mocket._entries, {
-            ('localhost', 80): [entry_1, entry_2],
-            ('localhost', 8080): [entry_3],
-        })
+        self.assertEqual(
+            Mocket._entries,
+            {("localhost", 80): [entry_1, entry_2], ("localhost", 8080): 
[entry_3],},
+        )
 
     def test_collect(self):
-        request = 'GET /get/p/?b=2&a=1 HTTP/1.1\r\nAccept-Encoding: 
identity\r\nHost: testme.org\r\nConnection: close\r\nUser-Agent: 
Python-urllib/2.6\r\n\r\n'
+        request = "GET /get/p/?b=2&a=1 HTTP/1.1\r\nAccept-Encoding: 
identity\r\nHost: testme.org\r\nConnection: close\r\nUser-Agent: 
Python-urllib/2.6\r\n\r\n"
         Mocket.collect(request)
         self.assertEqual(Mocket.last_request(), request)
         self.assertEqual(Mocket._requests, [request])
@@ -71,58 +71,61 @@
         self.assertEqual(Mocket._requests, [])
 
     def test_getentry(self):
-        entry = MocketEntry(('localhost', 80), True)
+        entry = MocketEntry(("localhost", 80), True)
         Mocket.register(entry)
-        self.assertEqual(Mocket.get_entry('localhost', 80, True), entry)
+        self.assertEqual(Mocket.get_entry("localhost", 80, True), entry)
 
     def test_getresponse(self):
-        entry = MocketEntry(('localhost', 8080), ['Show me.\r\n'])
-        self.assertEqual(entry.get_response(), encode_to_bytes('Show me.\r\n'))
+        entry = MocketEntry(("localhost", 8080), ["Show me.\r\n"])
+        self.assertEqual(entry.get_response(), encode_to_bytes("Show me.\r\n"))
 
     def test_empty_getresponse(self):
-        entry = MocketEntry(('localhost', 8080), [])
-        self.assertEqual(entry.get_response(), encode_to_bytes(''))
+        entry = MocketEntry(("localhost", 8080), [])
+        self.assertEqual(entry.get_response(), encode_to_bytes(""))
+
+    def test_raise_exception(self):
+        entry = MocketEntry(("localhost", 8080), [IOError()])
+
+        with self.assertRaises(IOError):
+            entry.get_response()
 
     def test_subsequent_recv_requests_have_correct_length(self):
-        Mocket.register(
-            MocketEntry(
-                ('localhost', 80),
-                [
-                    b'Long payload',
-                    b'Short'
-                ]
-            )
-        )
+        addr = ("localhost", 80)
+        Mocket.register(MocketEntry(addr, [b"Long payload", b"Short"]))
         with Mocketizer():
             _so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            _so.connect(('localhost', 80))
-            _so.sendall(b'first\r\n')
-            assert _so.recv(4096) == b'Long payload'
-            _so.sendall(b'second\r\n')
-            assert _so.recv(4096) == b'Short'
+            _so.connect(addr)
+            _so.sendall(b"first\r\n")
+            self.assertEqual(_so.recv(4096), b"Long payload")
+            _so.sendall(b"second\r\n")
+            self.assertEqual(_so.recv(4096), b"Short")
             _so.close()
 
     def test_recv_into(self):
-        Mocket.register(
-            MocketEntry(
-                ('localhost', 80),
-                [
-                    b'Long payload',
-                    b'Short'
-                ]
-            )
-        )
+        addr = ("localhost", 80)
+        Mocket.register(MocketEntry(addr, [b"Long payload", b"Short"]))
         buffer = io.BytesIO()
         with Mocketizer():
             _so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-            _so.connect(('localhost', 80))
-            _so.sendall(b'first\r\n')
-            assert _so.recv_into(buffer, 4096) == 12
-            _so.sendall(b'second\r\n')
-            assert _so.recv_into(buffer) == 5
+            _so.connect(addr)
+            _so.sendall(b"first\r\n")
+            self.assertEqual(_so.recv_into(buffer, 4096), 12)
+            _so.sendall(b"second\r\n")
+            self.assertEqual(_so.recv_into(buffer), 5)
             _so.close()
         buffer.seek(0)
-        assert buffer.read() == b'Long payloadShort'
+        assert buffer.read() == b"Long payloadShort"
+
+    def test_makefile(self):
+        addr = ("localhost", 80)
+        Mocket.register(MocketEntry(addr, ["Show me.\r\n"]))
+        with Mocketizer():
+            _so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
+            _so.connect(addr)
+            fp = _so.makefile("rb")
+            _so.sendall(encode_to_bytes("...\r\n"))
+            self.assertEqual(fp.read().strip(), encode_to_bytes("Show me."))
+            self.assertEqual(len(Mocket._requests), 1)
 
 
 class MocketizeTestCase(TestCase):
@@ -134,7 +137,7 @@
 
     @mocketize
     def test_gethostname(self):
-        self.assertEqual(socket.gethostname(), 'localhost')
+        self.assertEqual(socket.gethostname(), "localhost")
 
 
 @mocketize
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.1/tests/main/test_redis.py 
new/mocket-3.9.3/tests/main/test_redis.py
--- old/mocket-3.9.1/tests/main/test_redis.py   2020-02-20 11:00:16.000000000 
+0100
+++ new/mocket-3.9.3/tests/main/test_redis.py   2020-10-11 12:45:14.000000000 
+0200
@@ -2,6 +2,7 @@
 
 from __future__ import unicode_literals
 
+import socket
 from unittest import TestCase
 
 import pytest
@@ -14,51 +15,41 @@
 class RedisizerTestCase(TestCase):
     def test_token(self):
         self.assertEqual(
-            Redisizer.tokens(['SET', 'snowman', 'is ☃!']),
-            [b'*3', b'$3', b'SET', b'$7', b'snowman', b'$7', b'is 
\xe2\x98\x83!']
+            Redisizer.tokens(["SET", "snowman", "is ☃!"]),
+            [b"*3", b"$3", b"SET", b"$7", b"snowman", b"$7", b"is 
\xe2\x98\x83!"],
         )
 
     def test_command(self):
-        self.assertEqual(Redisizer.command('OK'), b'+OK\r\n')
+        self.assertEqual(Redisizer.command("OK"), b"+OK\r\n")
 
     def test_error(self):
         self.assertEqual(
-            Redisizer.error('ERR: ☃ summer'),
-            b'-ERR: \xe2\x98\x83 summer\r\n'
+            Redisizer.error("ERR: ☃ summer"), b"-ERR: \xe2\x98\x83 summer\r\n"
         )
 
     def test_redisize_int(self):
-        self.assertEqual(Redisizer.redisize(10), b':10\r\n')
+        self.assertEqual(Redisizer.redisize(10), b":10\r\n")
 
     def test_redisize_list(self):
         self.assertEqual(
-            Redisizer.redisize(['snowman', '☃']),
-            b'*2\r\n$7\r\nsnowman\r\n$3\r\n\xe2\x98\x83\r\n'
+            Redisizer.redisize(["snowman", "☃"]),
+            b"*2\r\n$7\r\nsnowman\r\n$3\r\n\xe2\x98\x83\r\n",
         )
 
     def test_redisize_dict(self):
         self.assertEqual(
-            Redisizer.redisize({'snowman': '☃'}),
-            b'*2\r\n$7\r\nsnowman\r\n$3\r\n\xe2\x98\x83\r\n'
+            Redisizer.redisize({"snowman": "☃"}),
+            b"*2\r\n$7\r\nsnowman\r\n$3\r\n\xe2\x98\x83\r\n",
         )
 
     def test_redisize_text(self):
-        self.assertEqual(
-            Redisizer.redisize('☃'),
-            b'$3\r\n\xe2\x98\x83\r\n'
-        )
+        self.assertEqual(Redisizer.redisize("☃"), b"$3\r\n\xe2\x98\x83\r\n")
 
     def test_redisize_byte(self):
-        self.assertEqual(
-            Redisizer.redisize(b'\xe2\x98\x83'),
-            b'$3\r\n\xe2\x98\x83\r\n'
-        )
+        self.assertEqual(Redisizer.redisize(b"\xe2\x98\x83"), 
b"$3\r\n\xe2\x98\x83\r\n")
 
     def test_redisize_command(self):
-        self.assertEqual(
-            Redisizer.redisize(Redisizer.command('OK')),
-            b'+OK\r\n'
-        )
+        self.assertEqual(Redisizer.redisize(Redisizer.command("OK")), 
b"+OK\r\n")
 
 
 class RedisEntryTestCase(TestCase):
@@ -66,33 +57,38 @@
         entry = Entry(addr=None, command='SET snowman "is ☃!"', responses=[])
         self.assertEqual(
             entry.command,
-            [b'*3', b'$3', b'SET', b'$7', b'snowman', b'$7', b'is 
\xe2\x98\x83!']
+            [b"*3", b"$3", b"SET", b"$7", b"snowman", b"$7", b"is 
\xe2\x98\x83!"],
         )
 
     def test_init_byte(self):
-        entry = Entry(addr=None, command=b'SET snowman "is \xe2\x98\x83!"', 
responses=[])
+        entry = Entry(
+            addr=None, command=b'SET snowman "is \xe2\x98\x83!"', responses=[]
+        )
         self.assertEqual(
             entry.command,
-            [b'*3', b'$3', b'SET', b'$7', b'snowman', b'$7', b'is 
\xe2\x98\x83!']
+            [b"*3", b"$3", b"SET", b"$7", b"snowman", b"$7", b"is 
\xe2\x98\x83!"],
         )
 
     def test_can_handle(self):
         entry = Entry(addr=None, command='SET snowman "is ☃!"', responses=[])
-        
self.assertTrue(entry.can_handle(b'*3\r\n$3\r\nSET\r\n$7\r\nsnowman\r\n$7\r\nis 
\xe2\x98\x83!'))
+        self.assertTrue(
+            entry.can_handle(
+                b"*3\r\n$3\r\nSET\r\n$7\r\nsnowman\r\n$7\r\nis \xe2\x98\x83!"
+            )
+        )
 
     def test_register(self):
-        Entry.register(('localhost', 6379), 'SET snowman "is ☃!"', OK)
+        Entry.register(("localhost", 6379), 'SET snowman "is ☃!"', OK)
         self.assertEqual(
-            Mocket._entries[('localhost', 6379)][0].command,
-            [b'*3', b'$3', b'SET', b'$7', b'snowman', b'$7', b'is 
\xe2\x98\x83!']
+            Mocket._entries[("localhost", 6379)][0].command,
+            [b"*3", b"$3", b"SET", b"$7", b"snowman", b"$7", b"is 
\xe2\x98\x83!"],
         )
         self.assertEqual(
-            Mocket._entries[('localhost', 6379)][0].responses[0].data,
-            b'+OK\r\n'
+            Mocket._entries[("localhost", 6379)][0].responses[0].data, 
b"+OK\r\n"
         )
 
     def test_register_response(self):
-        Entry.register_response(command='SET snowman "is ☃!"', response='')
+        Entry.register_response(command='SET snowman "is ☃!"', response="")
 
 
 @pytest.mark.skipif('os.getenv("SKIP_TRUE_REDIS", False)')
@@ -107,59 +103,59 @@
 
     @mocketize
     def test_set(self):
-        self.assertTrue(self.rclient.set('mocket', 'is awesome!'))
+        self.assertTrue(self.rclient.set("mocket", "is awesome!"))
 
     @mocketize
     def test_incr(self):
-        self.assertEqual(self.rclient.incr('counter'), 1)
-        self.assertEqual(self.rclient.incr('counter'), 2)
-        self.assertEqual(self.rclient.incr('counter'), 3)
+        self.assertEqual(self.rclient.incr("counter"), 1)
+        self.assertEqual(self.rclient.incr("counter"), 2)
+        self.assertEqual(self.rclient.incr("counter"), 3)
 
     @mocketize
     def test_get(self):
-        self.rclient.set('mocket', 'is awesome!')
-        self.assertEqual(self.rclient.get('mocket'), b'is awesome!')
+        self.rclient.set("mocket", "is awesome!")
+        self.assertEqual(self.rclient.get("mocket"), b"is awesome!")
 
     @mocketize
     def test_get_utf8(self):
-        self.rclient.set('snowman', '☃')
-        self.assertEqual(self.rclient.get('snowman'), b'\xe2\x98\x83')
+        self.rclient.set("snowman", "☃")
+        self.assertEqual(self.rclient.get("snowman"), b"\xe2\x98\x83")
 
     @mocketize
     def test_get_unicode(self):
-        self.rclient.set('snowman', u'\u2603')
-        self.assertEqual(self.rclient.get('snowman'), b'\xe2\x98\x83')
+        self.rclient.set("snowman", "\u2603")
+        self.assertEqual(self.rclient.get("snowman"), b"\xe2\x98\x83")
 
     @mocketize
     def test_hm(self):
-        h = {b'f1': b'one', b'f2': b'two'}
-        self.assertTrue(self.rclient.hmset('hash', h))
-        self.assertEqual(self.rclient.hgetall('hash'), h)
+        h = {b"f1": b"one", b"f2": b"two"}
+        self.assertTrue(self.rclient.hmset("hash", h))
+        self.assertEqual(self.rclient.hgetall("hash"), h)
 
     @mocketize
     def test_lrange(self):
-        l = [b'one', b'two', b'three']
-        self.rclient.rpush('list', *l)
-        self.assertEqual(self.rclient.lrange('list', 0, -1), l)
+        l = [b"one", b"two", b"three"]
+        self.rclient.rpush("list", *l)
+        self.assertEqual(self.rclient.lrange("list", 0, -1), l)
 
     @mocketize
     def test_err(self):
-        self.assertRaises(redis.ResponseError, self.rclient.incr, 'counter', 
'one')
+        self.assertRaises(redis.ResponseError, self.rclient.incr, "counter", 
"one")
 
     @mocketize
     def test_shutdown(self):
-        rc = redis.StrictRedis(host='127.1.1.1')
+        rc = redis.StrictRedis(host="127.1.1.1")
         try:
-            rc.get('foo')
+            rc.get("foo")
         except redis.ConnectionError:
             pass
 
     @mocketize
     def test_select_db(self):
         r = redis.StrictRedis(db=1)
-        r.set('foo', 10)
-        foo = r.get('foo')
-        self.assertEqual(foo, b'10')
+        r.set("foo", 10)
+        foo = r.get("foo")
+        self.assertEqual(foo, b"10")
 
 
 class RedisTestCase(TestCase):
@@ -167,7 +163,7 @@
         self.rclient = redis.StrictRedis()
 
     def mocketize_setup(self):
-        Entry.register_response('FLUSHDB', OK)
+        Entry.register_response("FLUSHDB", OK)
         self.rclient.flushdb()
         self.assertEqual(len(Mocket._requests), 1)
         Mocket.reset()
@@ -175,61 +171,96 @@
     @mocketize
     def test_set(self):
         Entry.register_response('SET mocket "is awesome!"', OK)
-        self.assertTrue(self.rclient.set('mocket', 'is awesome!'))
+        self.assertTrue(self.rclient.set("mocket", "is awesome!"))
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket.last_request().data, 
b'*3\r\n$3\r\nSET\r\n$6\r\nmocket\r\n$11\r\nis awesome!\r\n')
+        self.assertEqual(
+            Mocket.last_request().data,
+            b"*3\r\n$3\r\nSET\r\n$6\r\nmocket\r\n$11\r\nis awesome!\r\n",
+        )
 
     @mocketize
     def test_incr(self):
-        Entry.register_responses('INCRBY counter 1', (1, 2, 3))
-        self.assertEqual(self.rclient.incr('counter'), 1)
-        self.assertEqual(self.rclient.incr('counter'), 2)
-        self.assertEqual(self.rclient.incr('counter'), 3)
+        Entry.register_responses("INCRBY counter 1", (1, 2, 3))
+        self.assertEqual(self.rclient.incr("counter"), 1)
+        self.assertEqual(self.rclient.incr("counter"), 2)
+        self.assertEqual(self.rclient.incr("counter"), 3)
         self.assertEqual(len(Mocket._requests), 3)
-        self.assertEqual(Mocket._requests[0].data, 
b'*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n')
-        self.assertEqual(Mocket._requests[1].data, 
b'*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n')
-        self.assertEqual(Mocket._requests[2].data, 
b'*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n')
+        self.assertEqual(
+            Mocket._requests[0].data,
+            b"*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n",
+        )
+        self.assertEqual(
+            Mocket._requests[1].data,
+            b"*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n",
+        )
+        self.assertEqual(
+            Mocket._requests[2].data,
+            b"*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$1\r\n1\r\n",
+        )
 
     @mocketize
     def test_hgetall(self):
-        h = {b'f1': b'one', b'f2': b'two'}
-        Entry.register_response('HGETALL hash', h)
-        self.assertEqual(self.rclient.hgetall('hash'), h)
+        h = {b"f1": b"one", b"f2": b"two"}
+        Entry.register_response("HGETALL hash", h)
+        self.assertEqual(self.rclient.hgetall("hash"), h)
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket._requests[0].data, 
b'*2\r\n$7\r\nHGETALL\r\n$4\r\nhash\r\n')
+        self.assertEqual(
+            Mocket._requests[0].data, b"*2\r\n$7\r\nHGETALL\r\n$4\r\nhash\r\n"
+        )
 
     @mocketize
     def test_get(self):
-        Entry.register_response('GET mocket', 'is awesome!')
-        self.assertEqual(self.rclient.get('mocket'), b'is awesome!')
+        Entry.register_response("GET mocket", "is awesome!")
+        self.assertEqual(self.rclient.get("mocket"), b"is awesome!")
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket._requests[0].data, 
b'*2\r\n$3\r\nGET\r\n$6\r\nmocket\r\n')
+        self.assertEqual(
+            Mocket._requests[0].data, b"*2\r\n$3\r\nGET\r\n$6\r\nmocket\r\n"
+        )
 
     @mocketize
     def test_get_utf8(self):
-        Entry.register_response('GET snowman', '☃')
-        self.assertEqual(self.rclient.get('snowman'), b'\xe2\x98\x83')
+        Entry.register_response("GET snowman", "☃")
+        self.assertEqual(self.rclient.get("snowman"), b"\xe2\x98\x83")
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket._requests[0].data, 
b'*2\r\n$3\r\nGET\r\n$7\r\nsnowman\r\n')
+        self.assertEqual(
+            Mocket._requests[0].data, b"*2\r\n$3\r\nGET\r\n$7\r\nsnowman\r\n"
+        )
 
     @mocketize
     def test_get_unicode(self):
-        Entry.register_response('GET snowman', '\u2603')
-        self.assertEqual(self.rclient.get('snowman'), b'\xe2\x98\x83')
+        Entry.register_response("GET snowman", "\u2603")
+        self.assertEqual(self.rclient.get("snowman"), b"\xe2\x98\x83")
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket.last_request().data, 
b'*2\r\n$3\r\nGET\r\n$7\r\nsnowman\r\n')
+        self.assertEqual(
+            Mocket.last_request().data, b"*2\r\n$3\r\nGET\r\n$7\r\nsnowman\r\n"
+        )
 
     @mocketize
     def test_lrange(self):
-        l = [b'one', b'two', b'three']
-        Entry.register_response('LRANGE list 0 -1', l)
-        self.assertEqual(self.rclient.lrange('list', 0, -1), l)
+        l = [b"one", b"two", b"three"]
+        Entry.register_response("LRANGE list 0 -1", l)
+        self.assertEqual(self.rclient.lrange("list", 0, -1), l)
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket.last_request().data, 
b'*4\r\n$6\r\nLRANGE\r\n$4\r\nlist\r\n$1\r\n0\r\n$2\r\n-1\r\n')
+        self.assertEqual(
+            Mocket.last_request().data,
+            b"*4\r\n$6\r\nLRANGE\r\n$4\r\nlist\r\n$1\r\n0\r\n$2\r\n-1\r\n",
+        )
 
     @mocketize
     def test_err(self):
-        Entry.register_response('INCRBY counter one', ERROR('ERR value is not 
an integer or out of range'))
-        self.assertRaises(redis.ResponseError, self.rclient.incr, 'counter', 
'one')
+        Entry.register_response(
+            "INCRBY counter one", ERROR("ERR value is not an integer or out of 
range")
+        )
+        self.assertRaises(redis.ResponseError, self.rclient.incr, "counter", 
"one")
         self.assertEqual(len(Mocket._requests), 1)
-        self.assertEqual(Mocket.last_request().data, 
b'*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$3\r\none\r\n')
+        self.assertEqual(
+            Mocket.last_request().data,
+            b"*3\r\n$6\r\nINCRBY\r\n$7\r\ncounter\r\n$3\r\none\r\n",
+        )
+
+    @mocketize
+    def test_raise_exception(self):
+        Entry.register_response("INCRBY counter one", socket.error("Mocket 
rulez!"))
+        self.assertRaises(
+            redis.exceptions.ConnectionError, self.rclient.incr, "counter", 
"one"
+        )
_______________________________________________
openSUSE Commits mailing list -- commit@lists.opensuse.org
To unsubscribe, email commit-le...@lists.opensuse.org
List Netiquette: https://en.opensuse.org/openSUSE:Mailing_list_netiquette
List Archives: 
https://lists.opensuse.org/archives/list/commit@lists.opensuse.org

Reply via email to