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)