|
1 | 1 | import os
|
2 | 2 | import unittest.mock as mock
|
| 3 | +from contextlib import nullcontext |
3 | 4 |
|
4 | 5 | import pytest
|
5 | 6 | from jupyter_core.paths import jupyter_config_path
|
@@ -96,39 +97,42 @@ def test_extension_manager_linked_extensions(jp_serverapp):
|
96 | 97 | assert name in manager.linked_extensions
|
97 | 98 |
|
98 | 99 |
|
99 |
| -def test_extension_manager_fail_add(jp_serverapp): |
| 100 | +@pytest.mark.parametrize("has_app", [True, False]) |
| 101 | +def test_extension_manager_fail_add(jp_serverapp, has_app): |
100 | 102 | name = "tests.extension.notanextension"
|
101 |
| - manager = ExtensionManager(serverapp=jp_serverapp) |
| 103 | + manager = ExtensionManager(serverapp=jp_serverapp if has_app else None) |
102 | 104 | manager.add_extension(name, enabled=True) # should only warn
|
103 | 105 | jp_serverapp.reraise_server_extension_failures = True
|
104 |
| - with pytest.raises(ExtensionModuleNotFound): |
105 |
| - manager.add_extension(name, enabled=True) |
| 106 | + with pytest.raises(ExtensionModuleNotFound) if has_app else nullcontext(): |
| 107 | + assert manager.add_extension(name, enabled=True) is False |
106 | 108 |
|
107 | 109 |
|
108 |
| -def test_extension_manager_fail_link(jp_serverapp): |
| 110 | +@pytest.mark.parametrize("has_app", [True, False]) |
| 111 | +def test_extension_manager_fail_link(jp_serverapp, has_app): |
109 | 112 | name = "tests.extension.mockextensions.app"
|
110 | 113 | with mock.patch(
|
111 | 114 | "tests.extension.mockextensions.app.MockExtensionApp.parse_command_line",
|
112 | 115 | side_effect=RuntimeError,
|
113 | 116 | ):
|
114 |
| - manager = ExtensionManager(serverapp=jp_serverapp) |
| 117 | + manager = ExtensionManager(serverapp=jp_serverapp if has_app else None) |
115 | 118 | manager.add_extension(name, enabled=True)
|
116 | 119 | manager.link_extension(name) # should only warn
|
117 | 120 | jp_serverapp.reraise_server_extension_failures = True
|
118 |
| - with pytest.raises(RuntimeError): |
| 121 | + with pytest.raises(RuntimeError) if has_app else nullcontext(): |
119 | 122 | manager.link_extension(name)
|
120 | 123 |
|
121 | 124 |
|
122 |
| -def test_extension_manager_fail_load(jp_serverapp): |
| 125 | +@pytest.mark.parametrize("has_app", [True, False]) |
| 126 | +def test_extension_manager_fail_load(jp_serverapp, has_app): |
123 | 127 | name = "tests.extension.mockextensions.app"
|
124 | 128 | with mock.patch(
|
125 | 129 | "tests.extension.mockextensions.app.MockExtensionApp.initialize_handlers",
|
126 | 130 | side_effect=RuntimeError,
|
127 | 131 | ):
|
128 |
| - manager = ExtensionManager(serverapp=jp_serverapp) |
| 132 | + manager = ExtensionManager(serverapp=jp_serverapp if has_app else None) |
129 | 133 | manager.add_extension(name, enabled=True)
|
130 | 134 | manager.link_extension(name)
|
131 | 135 | manager.load_extension(name) # should only warn
|
132 | 136 | jp_serverapp.reraise_server_extension_failures = True
|
133 |
| - with pytest.raises(RuntimeError): |
| 137 | + with pytest.raises(RuntimeError) if has_app else nullcontext(): |
134 | 138 | manager.load_extension(name)
|
0 commit comments