1
1
import os
2
+ import unittest .mock as mock
2
3
3
4
import pytest
4
5
from jupyter_core .paths import jupyter_config_path
@@ -78,7 +79,7 @@ def test_extension_manager_api(jp_serverapp):
78
79
jpserver_extensions = {"jupyter_server.tests.extension.mockextensions" : True }
79
80
manager = ExtensionManager (serverapp = jp_serverapp )
80
81
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" ))
82
83
assert _normalize_path (manager .config_manager .read_config_path [0 ]) == expected
83
84
manager .from_jpserver_extensions (jpserver_extensions )
84
85
assert len (manager .extensions ) == 1
@@ -91,3 +92,41 @@ def test_extension_manager_linked_extensions(jp_serverapp):
91
92
manager .add_extension (name , enabled = True )
92
93
manager .link_extension (name )
93
94
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 )
0 commit comments