Browse Source

Add _AppHandler option `use_sys_dir`

Allows API users to specify that the `sys_dir` argument should not be used (or rather, set to the same as the `app_dir`).
Vidar Tonaas Fauske 5 years ago
parent
commit
34b570e4d8
2 changed files with 19 additions and 2 deletions
  1. 4 1
      jupyterlab/commands.py
  2. 15 1
      jupyterlab/tests/test_jupyterlab.py

+ 4 - 1
jupyterlab/commands.py

@@ -518,8 +518,11 @@ class _AppHandler(object):
     def __init__(self, options):
         """Create a new _AppHandler object
         """
-        self.sys_dir = get_app_dir()
         self.app_dir = options.get('app_dir', None) or get_app_dir()
+        use_sys_dir = options.get('use_sys_dir', None) 
+        self.sys_dir = (
+            get_app_dir() if options.get('use_sys_dir', None) is not False
+            else self.app_dir)
         self.logger = _ensure_logger(options.get('logger'))
         core_config = options.get('core_config', None)
         self.core_data = (

+ 15 - 1
jupyterlab/tests/test_jupyterlab.py

@@ -372,6 +372,20 @@ class TestExtension(TestCase):
         assert ext_name in extensions
         assert check_extension(ext_name, options=options)
 
+    def test_app_dir_disable_sys_prefix(self):
+        app_dir = self.tempdir()
+        options = dict(app_dir=app_dir, use_sys_dir=False)
+        if os.path.exists(self.app_dir):
+            os.removedirs(self.app_dir)
+
+        assert install_extension(self.mock_extension) is True
+        path = pjoin(app_dir, 'extensions', '*.tgz')
+        assert not glob.glob(path)
+        extensions = get_app_info(options=options)['extensions']
+        ext_name = self.pkg_names['extension']
+        assert ext_name not in extensions
+        assert not check_extension(ext_name, options=options)
+
     def test_app_dir_shadowing(self):
         app_dir = self.tempdir()
         sys_dir = self.app_dir
@@ -455,6 +469,7 @@ class TestExtension(TestCase):
             app_dir=app_dir,
             core_config=core_config,
             logger=logger,
+            use_sys_dir=False,
         )
 
         extensions = (
@@ -489,7 +504,6 @@ class TestExtension(TestCase):
         assert list(data['jupyterlab']['extensions'].keys()) == [
             '@jupyterlab/application-extension',
             '@jupyterlab/apputils-extension',
-            self.pkg_names['extension'],
         ]
         assert data['jupyterlab']['mimeExtensions'] == {}
         for pkg in data['jupyterlab']['singletonPackages']: