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'
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'
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")
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
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
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
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'
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')
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()
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