Exemple #1
0
    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)
Exemple #5
0
 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)
Exemple #6
0
    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)
Exemple #7
0
    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)
Exemple #9
0
 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)
Exemple #10
0
]


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!')