示例#1
0
def test_lookup_package(tmp_path):
    home_dir = create_pearl_home(tmp_path)

    packages_info = {
        "repo-test": {
            "pkg-test": {
                "repo_name": "repo-test",
                "name": "pkg-test",
                "url": "/blah",
                "depends": ["repo-test/pkg-test2"]
            },
            "pkg-test2": {
                "repo_name": "repo-test",
                "name": "pkg-test2",
                "url": "/blah",
                "depends": []
            }
        }
    }
    builder = PackageBuilder(home_dir)
    packages = builder.build_packages(packages_info)
    pearl_env = PearlEnvironment(home_dir, env_initialized=False)
    pearl_env._packages = packages
    actual_package = pearl_env.lookup_package('repo-test/pkg-test')
    assert actual_package.full_name == 'repo-test/pkg-test'

    actual_package = pearl_env.lookup_package('pkg-test')
    assert actual_package.full_name == 'repo-test/pkg-test'
示例#2
0
def test_lookup_package_repo_no_exists(tmp_path):
    home_dir = (tmp_path / 'home')
    home_dir.mkdir(parents=True)
    (tmp_path / 'config').mkdir(parents=True)
    conffile = (tmp_path / 'config/pearl.conf')
    conffile.touch()
    with pytest.raises(RepoDoesNotExistError):
        pearl_env = PearlEnvironment(home_dir, conffile)
        pearl_env.lookup_package('test/pkg-test')
示例#3
0
def test_lookup_package_not_in_repo(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    packages_info = {
        "repo-test": {
            "pkg-test": {
                "repo_name": "repo-test",
                "name": "pkg-test",
                "url": "/blah",
            },
        }
    }
    builder = PackageBuilder(home_dir)
    packages = builder.build_packages(packages_info)

    pearl_env = PearlEnvironment(home_dir, env_initialized=False)
    pearl_env._packages = packages
    with pytest.raises(PackageNotInRepoError):
        pearl_env.lookup_package('repo-test/pkg-a-test')

    with pytest.raises(PackageNotInRepoError):
        pearl_env.lookup_package('pkg-a-test')
示例#4
0
def _extract_packages(pearl_env: PearlEnvironment, command: PearlCommand,
                      args) -> List[Package]:
    try:
        return [
            pearl_env.lookup_package(package_name)
            for package_name in args.packages
        ]
    except (RepoDoesNotExistError, PackageNotInRepoError):
        if command != PearlCommand.REMOVE:
            raise

        if args.force:
            # The user can still be able to remove a package even if package does not exist in any repository.
            return [
                pearl_env.infer_package(package_name)
                for package_name in args.packages
            ]
        else:
            messenger.info("To remove the package, use option --force.")
            raise