Browse Source

cleanup and write tests

Steven Silvester 8 years ago
parent
commit
af3997b8bb
2 changed files with 36 additions and 10 deletions
  1. 15 7
      jupyterlab/commands.py
  2. 21 3
      jupyterlab/tests/test_jupyterlab.py

+ 15 - 7
jupyterlab/commands.py

@@ -158,13 +158,13 @@ def unlink_package(package, app_dir=None):
 def enable_extension(extension, app_dir=None):
     """Enable a JupyterLab extension.
     """
-    _toggle_extension(extension, True, app_dir)
+    _toggle_extension(extension, False, app_dir)
 
 
 def disable_extension(extension, app_dir=None):
     """Disable a JupyterLab package.
     """
-    _toggle_extension(extension, False, app_dir)
+    _toggle_extension(extension, True, app_dir)
 
 
 def should_build(app_dir=None):
@@ -244,17 +244,19 @@ def _toggle_extension(extension, value, app_dir=None):
     app_dir = get_app_dir(app_dir)
     config = _get_page_config(app_dir)
     extensions = _get_extensions(app_dir)
-    if extension not in extensions:
+    core_extensions = _get_core_extensions()
+
+    if extension not in extensions and extension not in core_extensions:
         raise ValueError('Extension %s is not installed' % extension)
     disabled = config.get('disabled_extensions', dict())
     disabled[extension] = value
 
     # Prune extensions that are not installed.
     for key in list(disabled):
-        if (key not in extensions):
+        if (key not in extensions and key not in core_extensions):
             del disabled[key]
     config['disabled_extensions'] = disabled
-    _write_page_config(config)
+    _write_page_config(config, app_dir)
 
 
 def _write_build_config(config, app_dir):
@@ -359,8 +361,7 @@ def list_extensions(app_dir=None):
         print('\nUninstalled core extensiosn:')
         [print(item) for item in sorted(uninstalled_core)]
 
-    with open(pjoin(here, 'package.app.json')) as fid:
-        core_extensions = json.load(fid)['jupyterlab']['extensions']
+    core_extensions = _get_core_extensions()
 
     disabled_core = []
     for key in core_extensions:
@@ -502,6 +503,13 @@ def _get_disabled(app_dir):
     return config.get('disabled_extensions', dict())
 
 
+def _get_core_extensions():
+    """Get the core extensions.
+    """
+    with open(pjoin(here, 'package.app.json')) as fid:
+        return json.load(fid)['jupyterlab']['extensions']
+
+
 def _get_extensions(app_dir):
     """Get the extensions in a given app dir.
     """

+ 21 - 3
jupyterlab/tests/test_jupyterlab.py

@@ -28,7 +28,8 @@ from jupyterlab.extension import (
 from jupyterlab.commands import (
     install_extension, uninstall_extension, list_extensions,
     build, link_package, unlink_package, get_app_dir, should_build,
-    _get_linked_packages, _ensure_package
+    disable_extension, enable_extension,
+    _get_linked_packages, _ensure_package, _get_disabled
 )
 
 here = os.path.dirname(os.path.abspath(__file__))
@@ -165,8 +166,7 @@ class TestExtension(TestCase):
 
     def test_list_extensions(self):
         install_extension(self.source_dir)
-        extensions = list_extensions()
-        assert '@jupyterlab/python-tests' in extensions
+        list_extensions()
 
     def test_app_dir(self):
         app_dir = self.tempdir()
@@ -249,6 +249,24 @@ class TestExtension(TestCase):
         sys.stderr = stderr
         load_jupyter_server_extension(app)
 
+    def test_disable_extension(self):
+        app_dir = self.tempdir()
+        install_extension(self.source_dir, app_dir)
+        disable_extension('@jupyterlab/python-tests', app_dir)
+        disabled = _get_disabled(app_dir)
+        assert disabled['@jupyterlab/python-tests']
+        disable_extension('@jupyterlab/notebook-extension', app_dir)
+        disabled = _get_disabled(app_dir)
+        assert disabled['@jupyterlab/notebook-extension']
+
+    def test_enable_extension(self):
+        app_dir = self.tempdir()
+        install_extension(self.source_dir, app_dir)
+        disable_extension('@jupyterlab/python-tests', app_dir)
+        enable_extension('@jupyterlab/python-tests', app_dir)
+        disabled = _get_disabled(app_dir)
+        assert not disabled['@jupyterlab/python-tests']
+
     def test_should_build(self):
         assert not should_build()[0]
         install_extension(self.source_dir)