Skip to content

Commit 31ce1a6

Browse files
vidartfSteven Silvester
authored andcommitted
Add simple regression tests
1 parent 52e1095 commit 31ce1a6

File tree

4 files changed

+45
-6
lines changed

4 files changed

+45
-6
lines changed

jupyter_server/tests/extension/test_app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ def test_stop_extension(jp_serverapp, caplog):
9999

100100
# load extensions (make sure we only have the one extension loaded
101101
jp_serverapp.extension_manager.load_all_extensions()
102-
extension_name = 'jupyter_server.tests.extension.mockextensions'
102+
extension_name = "jupyter_server.tests.extension.mockextensions"
103103
assert list(jp_serverapp.extension_manager.extension_apps) == [extension_name]
104104

105105
# add a stop_extension method for the extension app

jupyter_server/tests/extension/test_manager.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import os
2+
import unittest.mock as mock
23

34
import pytest
45
from jupyter_core.paths import jupyter_config_path
@@ -78,7 +79,7 @@ def test_extension_manager_api(jp_serverapp):
7879
jpserver_extensions = {"jupyter_server.tests.extension.mockextensions": True}
7980
manager = ExtensionManager(serverapp=jp_serverapp)
8081
assert manager.config_manager
81-
expected = _normalize_path(os.path.join(jupyter_config_path()[0], 'serverconfig'))
82+
expected = _normalize_path(os.path.join(jupyter_config_path()[0], "serverconfig"))
8283
assert _normalize_path(manager.config_manager.read_config_path[0]) == expected
8384
manager.from_jpserver_extensions(jpserver_extensions)
8485
assert len(manager.extensions) == 1
@@ -91,3 +92,41 @@ def test_extension_manager_linked_extensions(jp_serverapp):
9192
manager.add_extension(name, enabled=True)
9293
manager.link_extension(name)
9394
assert name in manager.linked_extensions
95+
96+
97+
def test_extension_manager_fail_add(jp_serverapp):
98+
name = "jupyter_server.tests.extension.notanextension"
99+
manager = ExtensionManager(serverapp=jp_serverapp)
100+
manager.add_extension(name, enabled=True) # should only warn
101+
jp_serverapp.reraise_server_extension_failures = True
102+
with pytest.raises(ExtensionModuleNotFound):
103+
manager.add_extension(name, enabled=True)
104+
105+
106+
def test_extension_manager_fail_link(jp_serverapp):
107+
name = "jupyter_server.tests.extension.mockextensions.app"
108+
with mock.patch(
109+
"jupyter_server.tests.extension.mockextensions.app.MockExtensionApp.parse_command_line",
110+
side_effect=RuntimeError,
111+
):
112+
manager = ExtensionManager(serverapp=jp_serverapp)
113+
manager.add_extension(name, enabled=True)
114+
manager.link_extension(name) # should only warn
115+
jp_serverapp.reraise_server_extension_failures = True
116+
with pytest.raises(RuntimeError):
117+
manager.link_extension(name)
118+
119+
120+
def test_extension_manager_fail_load(jp_serverapp):
121+
name = "jupyter_server.tests.extension.mockextensions.app"
122+
with mock.patch(
123+
"jupyter_server.tests.extension.mockextensions.app.MockExtensionApp.initialize_handlers",
124+
side_effect=RuntimeError,
125+
):
126+
manager = ExtensionManager(serverapp=jp_serverapp)
127+
manager.add_extension(name, enabled=True)
128+
manager.link_extension(name)
129+
manager.load_extension(name) # should only warn
130+
jp_serverapp.reraise_server_extension_failures = True
131+
with pytest.raises(RuntimeError):
132+
manager.load_extension(name)

jupyter_server/tests/services/kernels/test_cull.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def jp_argv(request):
1515
]
1616

1717

18-
CULL_TIMEOUT = 10 if platform.python_implementation() == "PyPy" else 5
18+
CULL_TIMEOUT = 30 if platform.python_implementation() == "PyPy" else 5
1919
CULL_INTERVAL = 1
2020

2121

jupyter_server/tests/test_terminal.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def terminal_path(tmp_path):
2828
shutil.rmtree(str(subdir), ignore_errors=True)
2929

3030

31-
CULL_TIMEOUT = 2
31+
CULL_TIMEOUT = 10
3232
CULL_INTERVAL = 3
3333

3434

@@ -128,7 +128,7 @@ async def test_terminal_create_with_cwd(jp_fetch, jp_ws_fetch, terminal_path):
128128
message_stdout = ""
129129
while True:
130130
try:
131-
message = await asyncio.wait_for(ws.read_message(), timeout=1.0)
131+
message = await asyncio.wait_for(ws.read_message(), timeout=5.0)
132132
except asyncio.TimeoutError:
133133
break
134134

@@ -164,7 +164,7 @@ async def test_culling(jp_server_config, jp_fetch):
164164
last_activity = term["last_activity"]
165165

166166
culled = False
167-
for i in range(10): # Culling should occur in a few seconds
167+
for i in range(CULL_TIMEOUT + CULL_INTERVAL):
168168
try:
169169
resp = await jp_fetch(
170170
"api",

0 commit comments

Comments
 (0)