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