Skip to content

Commit 17fd151

Browse files
authored
Test the plugin for pook separately (#256)
* Test the plugin for `pook` separately. * Better Makefile.
1 parent e7e8172 commit 17fd151

File tree

6 files changed

+47
-52
lines changed

6 files changed

+47
-52
lines changed

Makefile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@ types:
3030

3131
test: types
3232
@echo "Running Python tests"
33+
uv pip uninstall pook || true
3334
export VIRTUAL_ENV=.venv; .venv/bin/wait-for-it --service httpbin.local:443 --service localhost:6379 --timeout 5 -- .venv/bin/pytest
35+
uv pip install pook && .venv/bin/pytest tests/test_pook.py && uv pip uninstall pook
3436
@echo ""
3537

3638
safetest:
@@ -41,7 +43,7 @@ publish: clean install-test-requirements
4143
uv run twine upload --repository mocket dist/*.tar.gz
4244

4345
clean:
44-
rm -rf *.egg-info dist/ requirements.txt uv.lock || true
46+
rm -rf .coverage *.egg-info dist/ requirements.txt uv.lock || true
4547
find . -type d -name __pycache__ -exec rm -rf {} \; || true
4648

4749
.PHONY: clean publish safetest test setup develop lint-python test-python _services-up

mocket/mocket.py

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -48,14 +48,6 @@
4848
except ImportError:
4949
pyopenssl_override = False
5050

51-
try: # pragma: no cover
52-
from aiohttp import TCPConnector
53-
54-
aiohttp_make_ssl_context_cache_clear = TCPConnector._make_ssl_context.cache_clear
55-
except (ImportError, AttributeError):
56-
aiohttp_make_ssl_context_cache_clear = None
57-
58-
5951
true_socket = socket.socket
6052
true_create_connection = socket.create_connection
6153
true_gethostbyname = socket.gethostbyname
@@ -566,8 +558,6 @@ def enable(namespace=None, truesocket_recording_dir=None):
566558
if pyopenssl_override: # pragma: no cover
567559
# Take out the pyopenssl version - use the default implementation
568560
extract_from_urllib3()
569-
if aiohttp_make_ssl_context_cache_clear: # pragma: no cover
570-
aiohttp_make_ssl_context_cache_clear()
571561

572562
@staticmethod
573563
def disable():
@@ -604,8 +594,6 @@ def disable():
604594
if pyopenssl_override: # pragma: no cover
605595
# Put the pyopenssl version back in place
606596
inject_into_urllib3()
607-
if aiohttp_make_ssl_context_cache_clear: # pragma: no cover
608-
aiohttp_make_ssl_context_cache_clear()
609597

610598
@classmethod
611599
def get_namespace(cls):

mocket/plugins/pook_mock_engine.py

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
1-
from pook.engine import MockEngine
2-
from pook.interceptors.base import BaseInterceptor
1+
try:
2+
from pook.engine import MockEngine
3+
except ModuleNotFoundError:
4+
MockEngine = object
35

46
from mocket.mocket import Mocket
57
from mocket.mockhttp import Entry, Response
@@ -37,17 +39,6 @@ def single_register(
3739
return entry
3840

3941

40-
class MocketInterceptor(BaseInterceptor):
41-
@staticmethod
42-
def activate():
43-
Mocket.disable()
44-
Mocket.enable()
45-
46-
@staticmethod
47-
def disable():
48-
Mocket.disable()
49-
50-
5142
class MocketEngine(MockEngine):
5243
def __init__(self, engine):
5344
def mocket_mock_fun(*args, **kwargs):
@@ -68,6 +59,18 @@ def mocket_mock_fun(*args, **kwargs):
6859

6960
return mock
7061

62+
from pook.interceptors.base import BaseInterceptor
63+
64+
class MocketInterceptor(BaseInterceptor):
65+
@staticmethod
66+
def activate():
67+
Mocket.disable()
68+
Mocket.enable()
69+
70+
@staticmethod
71+
def disable():
72+
Mocket.disable()
73+
7174
# Store plugins engine
7275
self.engine = engine
7376
# Store HTTP client interceptors

pyproject.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,15 +46,14 @@ test = [
4646
"redis",
4747
"gevent",
4848
"sure",
49-
"pook",
5049
"flake8>5",
5150
"xxhash",
5251
"httpx",
5352
"pipfile",
5453
"build",
5554
"twine",
5655
"fastapi",
57-
"aiohttp<3.10.6",
56+
"aiohttp",
5857
"wait-for-it",
5958
"mypy",
6059
"types-decorator",
@@ -89,7 +88,7 @@ exclude = [
8988
testpaths = [
9089
"tests", "mocket",
9190
]
92-
addopts = "--doctest-modules --cov=mocket --cov-report=term-missing -v -x"
91+
addopts = "--doctest-modules --cov=mocket --cov-report=term-missing --cov-append -v -x"
9392

9493
[tool.ruff]
9594
src = ["mocket", "tests"]

tests/test_asyncio.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import socket
55
import tempfile
66

7-
import aiohttp
87
import pytest
98

109
from mocket import Mocketizer, async_mocketize
@@ -46,6 +45,8 @@ async def test_asyncio_connection():
4645
@pytest.mark.asyncio
4746
@async_mocketize
4847
async def test_aiohttp():
48+
import aiohttp
49+
4950
url = "https://bar.foo/"
5051
data = {"message": "Hello"}
5152

tests/test_pook.py

Lines changed: 24 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,31 @@
1-
import pook
2-
import requests
1+
import contextlib
32

4-
from mocket.plugins.pook_mock_engine import MocketEngine
3+
with contextlib.suppress(ModuleNotFoundError):
4+
import pook
5+
import requests
56

6-
pook.set_mock_engine(MocketEngine)
7+
from mocket.plugins.pook_mock_engine import MocketEngine
78

9+
pook.set_mock_engine(MocketEngine)
810

9-
@pook.on
10-
def test_pook_engine():
11-
url = "http://twitter.com/api/1/foobar"
12-
status = 404
13-
response_json = {"error": "foo"}
11+
@pook.on
12+
def test_pook_engine():
13+
url = "http://twitter.com/api/1/foobar"
14+
status = 404
15+
response_json = {"error": "foo"}
1416

15-
mock = pook.get(
16-
url,
17-
headers={"content-type": "application/json"},
18-
reply=status,
19-
response_json=response_json,
20-
)
21-
mock.persist()
17+
mock = pook.get(
18+
url,
19+
headers={"content-type": "application/json"},
20+
reply=status,
21+
response_json=response_json,
22+
)
23+
mock.persist()
2224

23-
requests.get(url)
24-
assert mock.calls == 1
25+
requests.get(url)
26+
assert mock.calls == 1
2527

26-
resp = requests.get(url)
27-
assert resp.status_code == status
28-
assert resp.json() == response_json
29-
assert mock.calls == 2
28+
resp = requests.get(url)
29+
assert resp.status_code == status
30+
assert resp.json() == response_json
31+
assert mock.calls == 2

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy