From 87298c98e2032cfe23ac51c96c0f63bcea7071ee Mon Sep 17 00:00:00 2001 From: Min RK Date: Mon, 3 May 2021 11:14:17 +0200 Subject: [PATCH 1/2] return True on successful ExtensionPoint validation and include validate() in test coverage, which fails prior to the change because validate() returned None --- jupyter_server/extension/manager.py | 2 ++ jupyter_server/tests/extension/test_manager.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/jupyter_server/extension/manager.py b/jupyter_server/extension/manager.py index 9bd2cb5cb2..e954182cb8 100644 --- a/jupyter_server/extension/manager.py +++ b/jupyter_server/extension/manager.py @@ -129,6 +129,8 @@ def validate(self): self._get_loader() except Exception: return False + else: + return True def link(self, serverapp): """Link the extension to a Jupyter ServerApp object. diff --git a/jupyter_server/tests/extension/test_manager.py b/jupyter_server/tests/extension/test_manager.py index 24da92b6bc..c474a3e9ed 100644 --- a/jupyter_server/tests/extension/test_manager.py +++ b/jupyter_server/tests/extension/test_manager.py @@ -30,6 +30,7 @@ def test_extension_point_api(): assert app is not None assert callable(e.load) assert callable(e.link) + assert e.validate() def test_extension_point_metadata_error(): @@ -59,6 +60,7 @@ def test_extension_package_api(): assert hasattr(e, "extension_points") assert len(e.extension_points) == len(metadata_list) assert app.name in e.extension_points + assert e.validate() def test_extension_package_notfound_error(): From 0a86f7c4f9373ca43abac2a15ef0646356747f46 Mon Sep 17 00:00:00 2001 From: Min RK Date: Mon, 3 May 2021 11:55:00 +0200 Subject: [PATCH 2/2] fail validation if validate returns False ExtensionPoint.validate returns False when any error is raised ListServerExtension does not check the return value, only errors --- jupyter_server/extension/serverextension.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jupyter_server/extension/serverextension.py b/jupyter_server/extension/serverextension.py index d716ed1ff8..74b8b28f0a 100644 --- a/jupyter_server/extension/serverextension.py +++ b/jupyter_server/extension/serverextension.py @@ -306,7 +306,8 @@ def list_server_extensions(self): GREEN_ENABLED if enabled else RED_DISABLED)) try: self.log.info(" - Validating {}...".format(name)) - extension.validate() + if not extension.validate(): + raise ValueError("validation failed") version = extension.version self.log.info( " {} {} {}".format(name, version, GREEN_OK)