def test_app_dir(self): app_dir = self.tempdir() options = AppOptions(app_dir=app_dir) assert install_extension(self.mock_extension, app_options=options) is True path = pjoin(app_dir, "extensions", "*.tgz") assert glob.glob(path) extensions = get_app_info(app_options=options)["extensions"] ext_name = self.pkg_names["extension"] assert ext_name in extensions assert check_extension(ext_name, app_options=options) assert uninstall_extension(self.pkg_names["extension"], app_options=options) is True path = pjoin(app_dir, "extensions", "*.tgz") assert not glob.glob(path) extensions = get_app_info(app_options=options)["extensions"] assert ext_name not in extensions assert not check_extension(ext_name, app_options=options) assert link_package(self.mock_package, app_options=options) is True linked = get_app_info(app_options=options)["linked_packages"] pkg_name = self.pkg_names["package"] assert pkg_name in linked assert check_extension(pkg_name, app_options=options) assert unlink_package(self.mock_package, app_options=options) is True linked = get_app_info(app_options=options)["linked_packages"] assert pkg_name not in linked assert not check_extension(pkg_name, app_options=options)
def test_app_dir(self): app_dir = self.tempdir() options = AppOptions(app_dir=app_dir) assert install_extension(self.mock_extension, app_options=options) is True path = pjoin(app_dir, 'extensions', '*.tgz') assert glob.glob(path) extensions = get_app_info(app_options=options)['extensions'] ext_name = self.pkg_names['extension'] assert ext_name in extensions assert check_extension(ext_name, app_options=options) assert uninstall_extension(self.pkg_names['extension'], app_options=options) is True path = pjoin(app_dir, 'extensions', '*.tgz') assert not glob.glob(path) extensions = get_app_info(app_options=options)['extensions'] assert ext_name not in extensions assert not check_extension(ext_name, app_options=options) assert link_package(self.mock_package, app_options=options) is True linked = get_app_info(app_options=options)['linked_packages'] pkg_name = self.pkg_names['package'] assert pkg_name in linked assert check_extension(pkg_name, app_options=options) assert unlink_package(self.mock_package, app_options=options) is True linked = get_app_info(app_options=options)['linked_packages'] assert pkg_name not in linked assert not check_extension(pkg_name, app_options=options)
def test_build_custom_minimal_core_config(self): default_config = CoreConfig() core_config = CoreConfig() core_config.clear_packages() logger = logging.getLogger('jupyterlab_test_logger') logger.setLevel('DEBUG') app_dir = self.tempdir() options = AppOptions( app_dir=app_dir, core_config=core_config, logger=logger, use_sys_dir=False, ) extensions = ( '@jupyterlab/application-extension', '@jupyterlab/apputils-extension', ) singletons = ( "@jupyterlab/application", "@jupyterlab/apputils", "@jupyterlab/coreutils", "@jupyterlab/services", ) for name in extensions: semver = default_config.extensions[name] core_config.add(name, semver, extension=True) for name in singletons: semver = default_config.singletons[name] core_config.add(name, semver) assert install_extension(self.mock_extension, app_options=options) is True build(app_options=options) # check static directory. entry = pjoin(app_dir, 'static', 'index.out.js') with open(entry) as fid: data = fid.read() assert self.pkg_names['extension'] in data pkg = pjoin(app_dir, 'static', 'package.json') with open(pkg) as fid: data = json.load(fid) assert sorted(data['jupyterlab']['extensions'].keys()) == [ '@jupyterlab/application-extension', '@jupyterlab/apputils-extension', '@jupyterlab/mock-extension', ] assert data['jupyterlab']['mimeExtensions'] == {} for pkg in data['jupyterlab']['singletonPackages']: if pkg.startswith('@jupyterlab/'): assert pkg in singletons
def test_app_dir_disable_sys_prefix(self): app_dir = self.tempdir() options = AppOptions(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(app_options=options)['extensions'] ext_name = self.pkg_names['extension'] assert ext_name not in extensions assert not check_extension(ext_name, app_options=options)
def test_enable_extension(self): options = AppOptions(app_dir=self.tempdir()) assert install_extension(self.mock_extension, app_options=options) is True assert disable_extension(self.pkg_names['extension'], app_options=options) is True assert enable_extension(self.pkg_names['extension'], app_options=options) is True info = get_app_info(app_options=options) assert '@jupyterlab/notebook-extension' not in info['disabled'] name = self.pkg_names['extension'] assert info['disabled'].get(name, False) is False assert check_extension(name, app_options=options) assert disable_extension('@jupyterlab/notebook-extension', app_options=options) is True assert check_extension(name, app_options=options) assert not check_extension('@jupyterlab/notebook-extension', app_options=options)
def test_app_dir_use_sys_prefix(self): app_dir = self.tempdir() options = AppOptions(app_dir=app_dir) 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(app_options=options)["extensions"] ext_name = self.pkg_names["extension"] assert ext_name in extensions assert check_extension(ext_name, app_options=options)
def test_build_splice_packages(self): app_options = AppOptions(splice_source=True) assert install_extension(self.mock_extension) is True build(app_options=app_options) assert '-spliced' in get_app_version(app_options) # check staging directory. entry = pjoin(self.app_dir, 'staging', 'build', 'index.out.js') with open(entry) as fid: data = fid.read() assert self.pkg_names['extension'] in data # check static directory. entry = pjoin(self.app_dir, 'static', 'index.out.js') with open(entry) as fid: data = fid.read() assert self.pkg_names['extension'] in data
def test_app_dir_shadowing(self): app_dir = self.tempdir() sys_dir = self.app_dir app_options = AppOptions(app_dir=app_dir) if os.path.exists(sys_dir): os.removedirs(sys_dir) assert install_extension(self.mock_extension) is True sys_path = pjoin(sys_dir, 'extensions', '*.tgz') assert glob.glob(sys_path) app_path = pjoin(app_dir, 'extensions', '*.tgz') assert not glob.glob(app_path) extensions = get_app_info(app_options=app_options)['extensions'] ext_name = self.pkg_names['extension'] assert ext_name in extensions assert check_extension(ext_name, app_options=app_options) assert install_extension(self.mock_extension, app_options=app_options) is True assert glob.glob(app_path) extensions = get_app_info(app_options=app_options)['extensions'] assert ext_name in extensions assert check_extension(ext_name, app_options=app_options) assert uninstall_extension(self.pkg_names['extension'], app_options=app_options) is True assert not glob.glob(app_path) assert glob.glob(sys_path) extensions = get_app_info(app_options=app_options)['extensions'] assert ext_name in extensions assert check_extension(ext_name, app_options=app_options) assert uninstall_extension(self.pkg_names['extension'], app_options=app_options) is True assert not glob.glob(app_path) assert not glob.glob(sys_path) extensions = get_app_info(app_options=app_options)['extensions'] assert ext_name not in extensions assert not check_extension(ext_name, app_options=app_options)
def test_disable_extension(self): options = AppOptions(app_dir=self.tempdir()) assert install_extension(self.mock_extension, app_options=options) is True assert disable_extension(self.pkg_names["extension"], app_options=options) is True info = get_app_info(app_options=options) name = self.pkg_names["extension"] assert info["disabled"].get(name) is True assert not check_extension(name, app_options=options) assert check_extension(name, installed=True, app_options=options) assert disable_extension("@jupyterlab/notebook-extension", app_options=options) is True info = get_app_info(app_options=options) assert info["disabled"].get("@jupyterlab/notebook-extension") is True assert not check_extension("@jupyterlab/notebook-extension", app_options=options) assert check_extension("@jupyterlab/notebook-extension", installed=True, app_options=options) assert info["disabled"].get(name) is True assert not check_extension(name, app_options=options) assert check_extension(name, installed=True, app_options=options)
] try: from jupyterlab.commands import check_extension, AppOptions from jupyterlab_server.config import get_federated_extensions except ImportError: print(FIX_PREFIX, 'Please install jupyterlab before checking extensions.') else: missing_extensions = [] # Fetch federated extensions federated_extensions = get_federated_extensions([sys.base_prefix + '/share/jupyter/labextensions']).keys() # JupyterLab be quiet logger = logging.Logger('quiet') logger.setLevel(logging.CRITICAL) app_options = AppOptions(logger=logger) for extension in lab_extensions: if not check_extension(extension, app_options=app_options) and extension not in federated_extensions: missing_extensions.append(extension) if missing_extensions: print(FIX_PREFIX, 'These lab extensions are missing: ', ', '.join(missing_extensions)) print(FIX_PREFIX,' Please try to install the following packages with conda or pip: ', ', '.join(missing_extensions)) else: print(f'\t{SUCCESS_PREFIX} All extensions are installed!')