Skip to content

Commit e12feb9

Browse files
Darshan808Zsailer
andauthored
Validate extension name before toggling through CLI (#1509)
Co-authored-by: Zach Sailer <[email protected]>
1 parent d8ebeb1 commit e12feb9

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

jupyter_server/extension/serverextension.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -259,9 +259,23 @@ def toggle_server_extension(self, import_name: str) -> None:
259259
self.log.info(f"- Writing config: {config_dir}")
260260
# Validate the server extension.
261261
self.log.info(f" - Validating {import_name}...")
262+
config = extension_manager.config_manager
263+
enabled = False
264+
if config:
265+
jpserver_extensions = config.get_jpserver_extensions()
266+
if import_name not in jpserver_extensions:
267+
msg = (
268+
f"The module '{import_name}' could not be found. Are you "
269+
"sure the extension is installed?"
270+
)
271+
raise ValueError(msg)
272+
enabled = jpserver_extensions[import_name]
273+
262274
# Interface with the Extension Package and validate.
263-
extpkg = ExtensionPackage(name=import_name)
264-
extpkg.validate()
275+
extpkg = ExtensionPackage(name=import_name, enabled=enabled)
276+
if not extpkg.validate():
277+
msg = "validation failed"
278+
raise ValueError(msg)
265279
version = extpkg.version
266280
self.log.info(f" {import_name} {version} {GREEN_OK}")
267281

tests/extension/test_serverextension.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,3 +134,11 @@ def test_server_extension_apps(jp_env_config_path, jp_extension_environ):
134134
def test_server_extension_app():
135135
app = ServerExtensionApp()
136136
app.launch_instance(["list"])
137+
138+
139+
def test_toggle_missing_server_extension(jp_env_config_path, capsys):
140+
app = ToggleServerExtensionApp()
141+
app.extra_args = ["missingextension"]
142+
app.start()
143+
captured = capsys.readouterr()
144+
assert "Validation failed: The module 'missingextension' could not be found." in captured.err

0 commit comments

Comments
 (0)