Skip to content

Commit 76571cc

Browse files
committed
fix coverage
1 parent 830029d commit 76571cc

File tree

2 files changed

+72
-0
lines changed

2 files changed

+72
-0
lines changed

tests/test_asgi/test_init.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import sys
2+
from unittest import mock
3+
4+
import pytest
5+
6+
7+
def test_asgi_import_error():
8+
# Remove the module if it's already loaded so we can trigger the import logic
9+
if "reactpy.executors.asgi" in sys.modules:
10+
del sys.modules["reactpy.executors.asgi"]
11+
12+
# Mock one of the required modules to be missing (None in sys.modules causes ModuleNotFoundError)
13+
with mock.patch.dict(sys.modules, {"reactpy.executors.asgi.middleware": None}):
14+
with pytest.raises(
15+
ModuleNotFoundError,
16+
match=r"ASGI executors require the 'reactpy\[asgi\]' extra to be installed",
17+
):
18+
import reactpy.executors.asgi
19+
20+
# Clean up
21+
if "reactpy.executors.asgi" in sys.modules:
22+
del sys.modules["reactpy.executors.asgi"]

tests/test_pyscript/test_utils.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from pathlib import Path
2+
from unittest import mock
3+
from urllib.error import URLError
24
from uuid import uuid4
35

46
import orjson
@@ -57,3 +59,51 @@ def test_extend_pyscript_config_string_values():
5759

5860
# Check whether `packages_cache` has been overridden
5961
assert result["packages_cache"] == "always"
62+
63+
64+
def test_get_reactpy_versions_https_fail_http_success():
65+
utils.get_reactpy_versions.cache_clear()
66+
67+
mock_response = mock.Mock()
68+
mock_response.status = 200
69+
70+
# Mock json.load to return data when called with mock_response
71+
with (
72+
mock.patch("reactpy.pyscript.utils.request.urlopen") as mock_urlopen,
73+
mock.patch("reactpy.pyscript.utils.json.load") as mock_json_load,
74+
):
75+
76+
def side_effect(url, timeout):
77+
if url.startswith("https"):
78+
raise URLError("Fail")
79+
return mock_response
80+
81+
mock_urlopen.side_effect = side_effect
82+
mock_json_load.return_value = {
83+
"releases": {"1.0.0": []},
84+
"info": {"version": "1.0.0"},
85+
}
86+
87+
versions = utils.get_reactpy_versions()
88+
assert versions == {"versions": ["1.0.0"], "latest": "1.0.0"}
89+
90+
# Verify both calls were made
91+
assert mock_urlopen.call_count == 2
92+
assert mock_urlopen.call_args_list[0][0][0].startswith("https")
93+
assert mock_urlopen.call_args_list[1][0][0].startswith("http")
94+
95+
96+
def test_get_reactpy_versions_all_fail():
97+
utils.get_reactpy_versions.cache_clear()
98+
99+
with (
100+
mock.patch("reactpy.pyscript.utils.request.urlopen") as mock_urlopen,
101+
mock.patch("reactpy.pyscript.utils._logger") as mock_logger,
102+
):
103+
mock_urlopen.side_effect = URLError("Fail")
104+
105+
versions = utils.get_reactpy_versions()
106+
assert versions == {}
107+
108+
# Verify exception was logged
109+
assert mock_logger.exception.called

0 commit comments

Comments
 (0)