Example #1
0
def test_required_by(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
    requires = pearl_env.required_by(
        Package(home_dir, "repo-test", "pkg-test2", "/blah"))
    assert requires[0].full_name == 'repo-test/pkg-test'
Example #2
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'
Example #3
0
def test_run_pearl_bash(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    pearl_env = create_pearl_env(home_dir, {})

    script = """
    echo $PEARL_HOME
    echo $PWD
    echo $PATH
    info "Test"
    """
    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            capture_stderr=True,
                            enable_xtrace=False)

    assert result.stderr == ''

    if platform.system() == 'Darwin':
        assert result.stdout == "{}\n{}\n{}\n{}\n".format(
            home_dir, home_dir, '/usr/local/opt/gnu-sed/libexec/gnubin:'
            '/usr/local/opt/grep/libexec/gnubin:'
            '/usr/local/opt/coreutils/libexec/gnubin:' + os.environ['PATH'],
            "\x1b[0;36mTest\x1b[0m")
    elif platform.system() == 'Linux':
        assert result.stdout == "{}\n{}\n{}\n{}\n".format(
            home_dir, home_dir, os.environ['PATH'], "\x1b[0;36mTest\x1b[0m")
Example #4
0
def test_run_pearl_bash_enable_xtrace(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    pearl_env = create_pearl_env(home_dir, {})

    script = "echo hello"
    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            capture_stderr=True,
                            enable_xtrace=True)
    assert re.match(r"\+\s?echo hello\n", result.stderr) is not None
Example #5
0
def test_unlink_from_path_null_executable_path(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    pearl_env = create_pearl_env(home_dir, {})

    script = """
    unlink_from_path ""
    """
    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            check=False)
    assert result.returncode == 11
Example #6
0
def test_link_to_path_new_executable_name(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'bin').mkdir()
    pearl_env = create_pearl_env(home_dir, {})

    script = f"""
    echo "Content" > {tmp_path}/binary
    link_to_path "{tmp_path}/binary" "new_binary"
    cat $PEARL_HOME/bin/new_binary
    """

    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            check=False)
    assert result.stdout == "Content\n"
    assert result.returncode == 0
Example #7
0
def test_infer_package(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'packages').mkdir(parents=True)
    pearl_env = PearlEnvironment(home_dir, env_initialized=False)

    with pytest.raises(PackageNotInstalledError):
        pearl_env.infer_package('repo-test/pkg-test')
    with pytest.raises(PackageNotInstalledError):
        pearl_env.infer_package('pkg-test')

    (home_dir / 'packages/repo-test/pkg-test').mkdir(parents=True)

    actual_package = pearl_env.infer_package('repo-test/pkg-test')
    assert actual_package.full_name == 'repo-test/pkg-test'

    actual_package = pearl_env.infer_package('pkg-test')
    assert actual_package.full_name == 'repo-test/pkg-test'
Example #8
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')
Example #9
0
def test_unlink_from_path_new_executable_name(tmp_path):
    (tmp_path / 'binary').write_text("Content")

    home_dir = create_pearl_home(tmp_path)
    (home_dir / 'bin').mkdir()
    (home_dir / 'bin/new_binary').symlink_to(tmp_path / 'binary')

    pearl_env = create_pearl_env(home_dir, {})

    assert (home_dir / 'bin/new_binary').exists()

    script = f"""
    unlink_from_path "{tmp_path}/binary" "new_binary"
    """

    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            check=False)

    assert result.returncode == 0
    assert not (home_dir / 'bin/new_binary').exists()
Example #10
0
def test_run_pearl_bash_enable_errexit(tmp_path):
    home_dir = create_pearl_home(tmp_path)
    pearl_env = create_pearl_env(home_dir, {})

    script = """
    echo hello1
    false
    echo hello2
    """
    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            capture_stderr=True,
                            check=False,
                            enable_errexit=True)
    assert "hello1\n" == result.stdout

    result = run_pearl_bash(script,
                            pearl_env,
                            capture_stdout=True,
                            capture_stderr=True,
                            check=False,
                            enable_errexit=False)
    assert "hello1\nhello2\n" == result.stdout