Browse Source

Add explicit tests using app dir

Steven Silvester 8 years ago
parent
commit
10af2be019
1 changed files with 65 additions and 6 deletions
  1. 65 6
      jupyterlab/tests/test_jupyterlab.py

+ 65 - 6
jupyterlab/tests/test_jupyterlab.py

@@ -70,6 +70,7 @@ class TestExtension(TestCase):
         self.test_dir = self.tempdir()
         self.data_dir = pjoin(self.test_dir, 'data')
         self.config_dir = pjoin(self.test_dir, 'config')
+        self.source_dir = pjoin(here, 'mockextension')
 
         self.patches = []
         p = patch.dict('os.environ', {
@@ -105,26 +106,26 @@ class TestExtension(TestCase):
             sys.modules.pop(modulename)
 
     def test_install_extension(self):
-        install_extension(pjoin(here, 'mockextension'))
+        install_extension(self.source_dir)
         path = pjoin(get_app_dir(), 'extensions', '*python-tests*.tgz')
         assert glob.glob(path)
         assert '@jupyterlab/python-tests' in list_extensions()
 
     def test_uninstall_extension(self):
-        install_extension(pjoin(here, 'mockextension'))
+        install_extension(self.source_dir)
         uninstall_extension('@jupyterlab/python-tests')
         path = pjoin(get_app_dir(), 'extensions', '*python_tests*.tgz')
         assert not glob.glob(path)
         assert '@jupyterlab/python-tests' not in list_extensions()
 
     def test_link_package(self):
-        link_package(pjoin(here, 'mockextension'))
+        link_package(self.source_dir)
         linked = _get_linked_packages().keys()
         assert '@jupyterlab/python-tests' in linked
         assert '@jupyterlab/python-tests' in list_extensions()
 
     def test_unlink_package(self):
-        target = pjoin(here, 'mockextension')
+        target = self.source_dir
         link_package(target)
         unlink_package(target)
         linked = _get_linked_packages().keys()
@@ -132,12 +133,70 @@ class TestExtension(TestCase):
         assert '@jupyterlab/python-tests' not in list_extensions()
 
     def test_list_extensions(self):
-        install_extension(pjoin(here, 'mockextension'))
+        install_extension(self.source_dir)
         extensions = list_extensions()
         assert '@jupyterlab/python-tests' in extensions
 
+    def test_app_dir(self):
+        app_dir = self.tempdir()
+
+        install_extension(self.source_dir, app_dir)
+        path = pjoin(app_dir, 'extensions', '*python-tests*.tgz')
+        assert glob.glob(path)
+        assert '@jupyterlab/python-tests' in list_extensions(app_dir)
+
+        uninstall_extension('@jupyterlab/python-tests', app_dir)
+        path = pjoin(app_dir, 'extensions', '*python-tests*.tgz')
+        assert not glob.glob(path)
+        assert '@jupyterlab/python-tests' not in list_extensions(app_dir)
+
+        link_package(self.source_dir, app_dir)
+        linked = _get_linked_packages(app_dir).keys()
+        assert '@jupyterlab/python-tests' in linked
+
+        unlink_package(self.source_dir, app_dir)
+        linked = _get_linked_packages(app_dir).keys()
+        assert '@jupyterlab/python-tests' not in linked
+
+    def test_app_dir_use_sys_prefix(self):
+        app_dir = self.tempdir()
+        if os.path.exists(get_app_dir()):
+            os.removedirs(get_app_dir())
+
+        install_extension(self.source_dir)
+        path = pjoin(app_dir, 'extensions', '*python-tests*.tgz')
+        assert not glob.glob(path)
+        assert '@jupyterlab/python-tests' in list_extensions(app_dir)
+
+    def test_app_dir_shadowing(self):
+        app_dir = self.tempdir()
+        sys_dir = get_app_dir()
+        if os.path.exists(sys_dir):
+            os.removedirs(sys_dir)
+
+        install_extension(self.source_dir)
+        sys_path = pjoin(sys_dir, 'extensions', '*python-tests*.tgz')
+        assert glob.glob(sys_path)
+        app_path = pjoin(app_dir, 'extensions', '*python-tests*.tgz')
+        assert not glob.glob(app_path)
+        assert '@jupyterlab/python-tests' in list_extensions(app_dir)
+
+        install_extension(self.source_dir, app_dir)
+        assert glob.glob(app_path)
+        assert '@jupyterlab/python-tests' in list_extensions(app_dir)
+
+        uninstall_extension('@jupyterlab/python-tests', app_dir)
+        assert not glob.glob(app_path)
+        assert glob.glob(sys_path)
+        assert '@jupyterlab/python-tests' in list_extensions(app_dir)
+
+        uninstall_extension('@jupyterlab/python-tests', app_dir)
+        assert not glob.glob(app_path)
+        assert not glob.glob(sys_path)
+        assert '@jupyterlab/python-tests' not in list_extensions(app_dir)
+
     def test_build(self):
-        install_extension(pjoin(here, 'mockextension'))
+        install_extension(self.source_dir)
         build()
         # check staging directory.
         entry = pjoin(get_app_dir(), 'staging', 'build', 'index.out.js')