forked from pool/python-mocket
- replace python311.patch splitted comments from the upstream PR:
* adds 0007-Switching-to-httptools.parser.HttpRequestParser.patch 0008-Disabling-tests-for-pook-when-testing-Python-3.11.patch 0009-Removing-DeprecationWarning-all-over-the-place.patch 0010-Python-3.11-needs-an-async-decorator.patch 0012-Removing-async-timeout-dependency.patch 0013-Refactoring-using-event_loop-fixture.patch 0014-Refactoring-using-tempfile-as-a-context-manager.patch 0015-Skip-those-tests-and-see-what-happens-to-the-rest.patch - skip now failing tests, update buildrequires for tests on py 3.11 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-mocket?expand=0&rev=57
This commit is contained in:
238
0008-Disabling-tests-for-pook-when-testing-Python-3.11.patch
Normal file
238
0008-Disabling-tests-for-pook-when-testing-Python-3.11.patch
Normal file
@@ -0,0 +1,238 @@
|
||||
From 5e0d8a8b75280372536bc85ea44b82e0acc841c4 Mon Sep 17 00:00:00 2001
|
||||
From: Giorgio Salluzzo <giorgio.salluzzo@gmail.com>
|
||||
Date: Mon, 5 Dec 2022 01:08:23 +0100
|
||||
Subject: [PATCH 08/15] Disabling tests for `pook` when testing Python 3.11
|
||||
|
||||
---
|
||||
mocket/plugins/pook_mock_engine.py | 147 +++++++++++++++--------------
|
||||
setup.py | 1 +
|
||||
tests/main/test_pook.py | 47 ++++-----
|
||||
3 files changed, 102 insertions(+), 93 deletions(-)
|
||||
|
||||
diff --git a/mocket/plugins/pook_mock_engine.py b/mocket/plugins/pook_mock_engine.py
|
||||
index 5b1d207..8df8776 100644
|
||||
--- a/mocket/plugins/pook_mock_engine.py
|
||||
+++ b/mocket/plugins/pook_mock_engine.py
|
||||
@@ -1,71 +1,76 @@
|
||||
-from pook.engine import MockEngine
|
||||
-from pook.interceptors.base import BaseInterceptor
|
||||
-
|
||||
-from mocket.mocket import Mocket
|
||||
-from mocket.mockhttp import Entry, Response
|
||||
-
|
||||
-
|
||||
-class MocketPookEntry(Entry):
|
||||
- pook_request = None
|
||||
- pook_engine = None
|
||||
-
|
||||
- def can_handle(self, data):
|
||||
- can_handle = super(MocketPookEntry, self).can_handle(data)
|
||||
-
|
||||
- if can_handle:
|
||||
- self.pook_engine.match(self.pook_request)
|
||||
- return can_handle
|
||||
-
|
||||
- @classmethod
|
||||
- def single_register(cls, method, uri, body='', status=200, headers=None, match_querystring=True):
|
||||
- entry = cls(
|
||||
- uri, method, Response(
|
||||
- body=body, status=status, headers=headers
|
||||
- ), match_querystring=match_querystring
|
||||
- )
|
||||
- Mocket.register(entry)
|
||||
- return entry
|
||||
-
|
||||
-
|
||||
-class MocketInterceptor(BaseInterceptor):
|
||||
- @staticmethod
|
||||
- def activate():
|
||||
- Mocket.disable()
|
||||
- Mocket.enable()
|
||||
-
|
||||
- @staticmethod
|
||||
- def disable():
|
||||
- Mocket.disable()
|
||||
-
|
||||
-
|
||||
-class MocketEngine(MockEngine):
|
||||
-
|
||||
- def __init__(self, engine):
|
||||
- def mocket_mock_fun(*args, **kwargs):
|
||||
- mock = self.pook_mock_fun(*args, **kwargs)
|
||||
-
|
||||
- request = mock._request
|
||||
- method = request.method
|
||||
- url = request.rawurl
|
||||
-
|
||||
- response = mock._response
|
||||
- body = response._body
|
||||
- status = response._status
|
||||
- headers = response._headers
|
||||
-
|
||||
- entry = MocketPookEntry.single_register(method, url, body, status, headers)
|
||||
- entry.pook_engine = self.engine
|
||||
- entry.pook_request = request
|
||||
-
|
||||
- return mock
|
||||
-
|
||||
- # Store plugins engine
|
||||
- self.engine = engine
|
||||
- # Store HTTP client interceptors
|
||||
- self.interceptors = []
|
||||
- # Self-register MocketInterceptor
|
||||
- self.add_interceptor(MocketInterceptor)
|
||||
-
|
||||
- # mocking pook.mock()
|
||||
- self.pook_mock_fun = self.engine.mock
|
||||
- self.engine.mock = mocket_mock_fun
|
||||
+import platform
|
||||
+
|
||||
+if not platform.python_version().startswith("3.11."):
|
||||
+ # it looks like `pook` is not compatible with Python 3.11
|
||||
+ from pook.engine import MockEngine
|
||||
+ from pook.interceptors.base import BaseInterceptor
|
||||
+
|
||||
+ from mocket.mocket import Mocket
|
||||
+ from mocket.mockhttp import Entry, Response
|
||||
+
|
||||
+ class MocketPookEntry(Entry):
|
||||
+ pook_request = None
|
||||
+ pook_engine = None
|
||||
+
|
||||
+ def can_handle(self, data):
|
||||
+ can_handle = super(MocketPookEntry, self).can_handle(data)
|
||||
+
|
||||
+ if can_handle:
|
||||
+ self.pook_engine.match(self.pook_request)
|
||||
+ return can_handle
|
||||
+
|
||||
+ @classmethod
|
||||
+ def single_register(
|
||||
+ cls, method, uri, body="", status=200, headers=None, match_querystring=True
|
||||
+ ):
|
||||
+ entry = cls(
|
||||
+ uri,
|
||||
+ method,
|
||||
+ Response(body=body, status=status, headers=headers),
|
||||
+ match_querystring=match_querystring,
|
||||
+ )
|
||||
+ Mocket.register(entry)
|
||||
+ return entry
|
||||
+
|
||||
+ class MocketInterceptor(BaseInterceptor):
|
||||
+ @staticmethod
|
||||
+ def activate():
|
||||
+ Mocket.disable()
|
||||
+ Mocket.enable()
|
||||
+
|
||||
+ @staticmethod
|
||||
+ def disable():
|
||||
+ Mocket.disable()
|
||||
+
|
||||
+ class MocketEngine(MockEngine):
|
||||
+ def __init__(self, engine):
|
||||
+ def mocket_mock_fun(*args, **kwargs):
|
||||
+ mock = self.pook_mock_fun(*args, **kwargs)
|
||||
+
|
||||
+ request = mock._request
|
||||
+ method = request.method
|
||||
+ url = request.rawurl
|
||||
+
|
||||
+ response = mock._response
|
||||
+ body = response._body
|
||||
+ status = response._status
|
||||
+ headers = response._headers
|
||||
+
|
||||
+ entry = MocketPookEntry.single_register(
|
||||
+ method, url, body, status, headers
|
||||
+ )
|
||||
+ entry.pook_engine = self.engine
|
||||
+ entry.pook_request = request
|
||||
+
|
||||
+ return mock
|
||||
+
|
||||
+ # Store plugins engine
|
||||
+ self.engine = engine
|
||||
+ # Store HTTP client interceptors
|
||||
+ self.interceptors = []
|
||||
+ # Self-register MocketInterceptor
|
||||
+ self.add_interceptor(MocketInterceptor)
|
||||
+
|
||||
+ # mocking pook.mock()
|
||||
+ self.pook_mock_fun = self.engine.mock
|
||||
+ self.engine.mock = mocket_mock_fun
|
||||
diff --git a/setup.py b/setup.py
|
||||
index 544e624..145fced 100644
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -57,6 +57,7 @@ setup(
|
||||
"Programming Language :: Python :: 3.8",
|
||||
"Programming Language :: Python :: 3.9",
|
||||
"Programming Language :: Python :: 3.10",
|
||||
+ "Programming Language :: Python :: 3.11",
|
||||
"Programming Language :: Python :: Implementation :: CPython",
|
||||
"Programming Language :: Python :: Implementation :: PyPy",
|
||||
"Topic :: Software Development",
|
||||
diff --git a/tests/main/test_pook.py b/tests/main/test_pook.py
|
||||
index 2d95d3d..2207e8f 100644
|
||||
--- a/tests/main/test_pook.py
|
||||
+++ b/tests/main/test_pook.py
|
||||
@@ -1,30 +1,33 @@
|
||||
-import pook
|
||||
-import requests
|
||||
+import platform
|
||||
|
||||
-from mocket.plugins.pook_mock_engine import MocketEngine
|
||||
+if not platform.python_version().startswith("3.11."):
|
||||
+ # it looks like `pook` is not compatible with Python 3.11
|
||||
+ import pook
|
||||
+ import requests
|
||||
|
||||
-pook.set_mock_engine(MocketEngine)
|
||||
+ from mocket.plugins.pook_mock_engine import MocketEngine
|
||||
|
||||
+ pook.set_mock_engine(MocketEngine)
|
||||
|
||||
-@pook.on
|
||||
-def test_pook_engine():
|
||||
+ @pook.on
|
||||
+ def test_pook_engine():
|
||||
|
||||
- url = "http://twitter.com/api/1/foobar"
|
||||
- status = 404
|
||||
- response_json = {"error": "foo"}
|
||||
+ url = "http://twitter.com/api/1/foobar"
|
||||
+ status = 404
|
||||
+ response_json = {"error": "foo"}
|
||||
|
||||
- mock = pook.get(
|
||||
- url,
|
||||
- headers={"content-type": "application/json"},
|
||||
- reply=status,
|
||||
- response_json=response_json,
|
||||
- )
|
||||
- mock.persist()
|
||||
+ mock = pook.get(
|
||||
+ url,
|
||||
+ headers={"content-type": "application/json"},
|
||||
+ reply=status,
|
||||
+ response_json=response_json,
|
||||
+ )
|
||||
+ mock.persist()
|
||||
|
||||
- requests.get(url)
|
||||
- assert mock.calls == 1
|
||||
+ requests.get(url)
|
||||
+ assert mock.calls == 1
|
||||
|
||||
- resp = requests.get(url)
|
||||
- assert resp.status_code == status
|
||||
- assert resp.json() == response_json
|
||||
- assert mock.calls == 2
|
||||
+ resp = requests.get(url)
|
||||
+ assert resp.status_code == status
|
||||
+ assert resp.json() == response_json
|
||||
+ assert mock.calls == 2
|
||||
--
|
||||
2.39.1
|
||||
|
Reference in New Issue
Block a user