Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-mocket for openSUSE:Factory 
checked in at 2021-01-26 14:44:20
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-mocket (Old)
 and      /work/SRC/openSUSE:Factory/.python-mocket.new.28504 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-mocket"

Tue Jan 26 14:44:20 2021 rev:10 rq:866084 version:3.9.39

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-mocket/python-mocket.changes      
2021-01-15 19:44:20.217849859 +0100
+++ /work/SRC/openSUSE:Factory/.python-mocket.new.28504/python-mocket.changes   
2021-01-26 14:44:20.999218095 +0100
@@ -1,0 +2,18 @@
+Fri Jan 15 16:56:37 UTC 2021 - Sebastian Wagner <sebix+novell....@sebix.at>
+
+- update to version 3.9.39:
+ - Use MocketSocket as context manager (#141)
+  * Adding support for using a `socket` as a context manager as requested by 
#139.
+  * Closing real socket.
+  * Bump version.
+- update to version 3.9.38:
+ - Update __init__.py
+- update to version 3.9.37:
+ - Fix for external decorators (#138)
+- update to version 3.9.36:
+ - New mocket method for checking if all entries have been served (#137)
+ * Mocket method for checking if all entries have been served at least once.
+ - Yet another refactor (#135)
+ - Refactor. (#136)
+
+-------------------------------------------------------------------

Old:
----
  mocket-3.9.35.tar.gz

New:
----
  mocket-3.9.39.tar.gz

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

Other differences:
------------------
++++++ python-mocket.spec ++++++
--- /var/tmp/diff_new_pack.SvTqlr/_old  2021-01-26 14:44:21.643219092 +0100
+++ /var/tmp/diff_new_pack.SvTqlr/_new  2021-01-26 14:44:21.647219099 +0100
@@ -26,7 +26,7 @@
 %bcond_with test
 %endif
 Name:           python-mocket%{psuffix}
-Version:        3.9.35
+Version:        3.9.39
 Release:        0
 Summary:        Python socket mock framework
 License:        BSD-3-Clause

++++++ mocket-3.9.35.tar.gz -> mocket-3.9.39.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/PKG-INFO new/mocket-3.9.39/PKG-INFO
--- old/mocket-3.9.35/PKG-INFO  2021-01-02 15:20:32.112968000 +0100
+++ new/mocket-3.9.39/PKG-INFO  2021-01-15 17:23:26.652558300 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mocket
-Version: 3.9.35
+Version: 3.9.39
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/mocket/__init__.py 
new/mocket-3.9.39/mocket/__init__.py
--- old/mocket-3.9.35/mocket/__init__.py        2021-01-02 15:19:24.000000000 
+0100
+++ new/mocket-3.9.39/mocket/__init__.py        2021-01-15 17:23:19.000000000 
+0100
@@ -1,10 +1,5 @@
-try:
-    # Py2
-    from mocket import Mocket, MocketEntry, Mocketizer, mocketize
-except ImportError:
-    # Py3
-    from mocket.mocket import Mocket, MocketEntry, Mocketizer, mocketize
+from mocket.mocket import Mocket, MocketEntry, Mocketizer, mocketize
 
 __all__ = ("mocketize", "Mocket", "MocketEntry", "Mocketizer")
 
-__version__ = "3.9.35"
+__version__ = "3.9.39"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/mocket/compat.py 
new/mocket-3.9.39/mocket/compat.py
--- old/mocket-3.9.35/mocket/compat.py  2021-01-02 15:19:24.000000000 +0100
+++ new/mocket-3.9.39/mocket/compat.py  2021-01-03 17:46:22.000000000 +0100
@@ -2,28 +2,20 @@
 import os
 import shlex
 
-encoding = os.getenv("MOCKET_ENCODING", "utf-8")
+ENCODING = os.getenv("MOCKET_ENCODING", "utf-8")
 
 text_type = str
 byte_type = bytes
 basestring = (str,)
 
-FileNotFoundError = FileNotFoundError
-BlockingIOError = BlockingIOError
 
-try:
-    from json.decoder import JSONDecodeError
-except ImportError:
-    JSONDecodeError = ValueError
-
-
-def encode_to_bytes(s, encoding=encoding):
+def encode_to_bytes(s, encoding=ENCODING):
     if isinstance(s, text_type):
         s = s.encode(encoding)
     return byte_type(s)
 
 
-def decode_from_bytes(s, encoding=encoding):
+def decode_from_bytes(s, encoding=ENCODING):
     if isinstance(s, byte_type):
         s = codecs.decode(s, encoding, "ignore")
     return text_type(s)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/mocket/mocket.py 
new/mocket-3.9.39/mocket/mocket.py
--- old/mocket-3.9.35/mocket/mocket.py  2021-01-02 15:19:24.000000000 +0100
+++ new/mocket-3.9.39/mocket/mocket.py  2021-01-15 17:23:19.000000000 +0100
@@ -3,28 +3,21 @@
 import errno
 import hashlib
 import io
+import itertools
 import json
 import os
 import select
 import socket
 import ssl
 from datetime import datetime, timedelta
+from json.decoder import JSONDecodeError
 
 import decorator
 import urllib3
 from urllib3.util.ssl_ import ssl_wrap_socket as urllib3_ssl_wrap_socket
 from urllib3.util.ssl_ import wrap_socket as urllib3_wrap_socket
 
-from .compat import (
-    BlockingIOError,
-    FileNotFoundError,
-    JSONDecodeError,
-    basestring,
-    byte_type,
-    decode_from_bytes,
-    encode_to_bytes,
-    text_type,
-)
+from .compat import basestring, byte_type, decode_from_bytes, encode_to_bytes, 
text_type
 from .utils import SSL_PROTOCOL, MocketSocketCore, hexdump, hexload, 
wrap_ssl_socket
 
 xxh32 = None
@@ -140,7 +133,6 @@
         self, family=socket.AF_INET, type=socket.SOCK_STREAM, proto=0, *args, 
**kwargs
     ):
         self.true_socket = true_socket(family, type, proto)
-        self._connected = False
         self._buflen = 65536
         self._entry = None
         self.family = int(family)
@@ -167,6 +159,12 @@
             self.__class__.__name__, self.family, self.type, self.proto
         )
 
+    def __enter__(self):
+        return self
+
+    def __exit__(self, exc_type, exc_val, exc_tb):
+        self.close()
+
     @property
     def fd(self):
         if self._fd is None:
@@ -385,6 +383,8 @@
         return len(data)
 
     def close(self):
+        if self.true_socket and not self.true_socket._closed:
+            self.true_socket.close()
         self._fd = None
 
     def __getattr__(self, name):
@@ -519,6 +519,13 @@
     def get_truesocket_recording_dir(cls):
         return cls._truesocket_recording_dir
 
+    @classmethod
+    def assert_fail_if_entries_not_served(cls):
+        """ Mocket checks that all entries have been served at least once. """
+        assert all(
+            entry._served for entry in itertools.chain(*cls._entries.values())
+        ), "Some Mocket entries have not been served"
+
 
 class MocketEntry(object):
     class Response(byte_type):
@@ -528,8 +535,11 @@
 
     request_cls = str
     response_cls = Response
+    responses = None
+    _served = None
 
     def __init__(self, location, responses):
+        self._served = False
         self.location = location
         self.response_index = 0
 
@@ -538,7 +548,7 @@
         ):
             responses = [responses]
 
-        lresponses = []
+        self.responses = []
         for r in responses:
             if isinstance(r, BaseException):
                 pass
@@ -546,11 +556,10 @@
                 if isinstance(r, text_type):
                     r = encode_to_bytes(r)
                 r = self.response_cls(r)
-            lresponses.append(r)
+            self.responses.append(r)
         else:
             if not responses:
-                lresponses = [self.response_cls(encode_to_bytes(""))]
-        self.responses = lresponses
+                self.responses = [self.response_cls(encode_to_bytes(""))]
 
     def can_handle(self, data):
         return True
@@ -564,6 +573,8 @@
         if self.response_index < len(self.responses) - 1:
             self.response_index += 1
 
+        self._served = True
+
         if isinstance(response, BaseException):
             raise response
 
@@ -595,8 +606,8 @@
         if callable(method):
             method()
 
-    @staticmethod
-    def wrap(test=None, truesocket_recording_dir=None):
+    @classmethod
+    def wrap(cls, test=None, truesocket_recording_dir=None):
         def wrapper(t, *args, **kw):
             instance = args[0] if args else None
             namespace = None
@@ -608,7 +619,7 @@
                         t.__name__,
                     )
                 )
-            with Mocketizer(
+            with cls(
                 instance,
                 namespace=namespace,
                 truesocket_recording_dir=truesocket_recording_dir,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/mocket.egg-info/PKG-INFO 
new/mocket-3.9.39/mocket.egg-info/PKG-INFO
--- old/mocket-3.9.35/mocket.egg-info/PKG-INFO  2021-01-02 15:20:31.000000000 
+0100
+++ new/mocket-3.9.39/mocket.egg-info/PKG-INFO  2021-01-15 17:23:26.000000000 
+0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: mocket
-Version: 3.9.35
+Version: 3.9.39
 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
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/tests/main/test_http.py 
new/mocket-3.9.39/tests/main/test_http.py
--- old/mocket-3.9.35/tests/main/test_http.py   2020-11-09 11:49:45.000000000 
+0100
+++ new/mocket-3.9.39/tests/main/test_http.py   2021-01-11 15:59:07.000000000 
+0100
@@ -363,3 +363,22 @@
 
         # Proof that worked.
         self.assertEqual(Mocket.last_request().body, '{"hello": "world"}')
+
+    @mocketize
+    def test_fail_because_entry_not_served(self):
+        url = "http://github.com/fluidicon.png";
+        Entry.single_register(Entry.GET, url)
+        Entry.single_register(Entry.GET, "http://github.com/fluidicon.jpg";)
+        requests.get(url)
+        with self.assertRaises(AssertionError):
+            Mocket.assert_fail_if_entries_not_served()
+
+    @mocketize
+    def test_does_not_fail_because_all_entries_are_served(self):
+        url = "http://github.com/fluidicon.png";
+        second_url = "http://github.com/fluidicon.jpg";
+        Entry.single_register(Entry.GET, url)
+        Entry.single_register(Entry.GET, second_url)
+        requests.get(url)
+        requests.get(second_url)
+        Mocket.assert_fail_if_entries_not_served()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/mocket-3.9.35/tests/main/test_mocket.py 
new/mocket-3.9.39/tests/main/test_mocket.py
--- old/mocket-3.9.35/tests/main/test_mocket.py 2020-11-09 11:49:45.000000000 
+0100
+++ new/mocket-3.9.39/tests/main/test_mocket.py 2021-01-15 17:23:19.000000000 
+0100
@@ -127,6 +127,16 @@
             self.assertEqual(fp.read().strip(), encode_to_bytes("Show me."))
             self.assertEqual(len(Mocket._requests), 1)
 
+    def test_socket_as_context_manager(self):
+        addr = ("localhost", 80)
+        Mocket.register(MocketEntry(addr, ["Show me.\r\n"]))
+        with Mocketizer():
+            with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as _so:
+                _so.connect(addr)
+                _so.sendall(encode_to_bytes("Whatever..."))
+                data = _so.recv(4096)
+                self.assertEqual(data, encode_to_bytes("Show me.\r\n"))
+
 
 class MocketizeTestCase(TestCase):
     def mocketize_setup(self):

Reply via email to