def test_package_install(monkeypatch, tmp_path, pipx_temp_env): pipx_venvs_dir = pipx.constants.PIPX_HOME / "venvs" run_pipx_cli(["install", PKG["pycowsay"]["spec"]]) assert (pipx_venvs_dir / "pycowsay" / "pipx_metadata.json").is_file() pipx_metadata = PipxMetadata(pipx_venvs_dir / "pycowsay") pycowsay_package_ref = create_package_info_ref("pycowsay", "pycowsay", pipx_venvs_dir) assert_package_metadata(pipx_metadata.main_package, pycowsay_package_ref) assert pipx_metadata.injected_packages == {}
def test_package_inject(monkeypatch, tmp_path, pipx_temp_env): pipx_venvs_dir = pipx.constants.PIPX_HOME / "venvs" run_pipx_cli(["install", PKG["pycowsay"]["spec"]]) run_pipx_cli(["inject", "pycowsay", PKG["black"]["spec"]]) assert (pipx_venvs_dir / "pycowsay" / "pipx_metadata.json").is_file() pipx_metadata = PipxMetadata(pipx_venvs_dir / "pycowsay") assert pipx_metadata.injected_packages.keys() == {"black"} black_package_ref = create_package_info_ref("pycowsay", "black", pipx_venvs_dir, include_apps=False) assert_package_metadata(pipx_metadata.injected_packages["black"], black_package_ref)
def test_list_json(pipx_temp_env, capsys): pipx_venvs_dir = constants.PIPX_HOME / "venvs" venv_bin_dir = "Scripts" if constants.WINDOWS else "bin" assert not run_pipx_cli(["install", PKG["pycowsay"]["spec"]]) assert not run_pipx_cli(["install", PKG["pylint"]["spec"]]) assert not run_pipx_cli(["inject", "pylint", PKG["isort"]["spec"]]) captured = capsys.readouterr() assert not run_pipx_cli(["list", "--json"]) captured = capsys.readouterr() assert not re.search(r"\S", captured.err) json_parsed = json.loads(captured.out, object_hook=_json_decoder_object_hook) # raises error if not valid json assert sorted(json_parsed["venvs"].keys()) == ["pycowsay", "pylint"] # pycowsay venv pycowsay_package_ref = create_package_info_ref("pycowsay", "pycowsay", pipx_venvs_dir) assert_package_metadata( PackageInfo( **json_parsed["venvs"]["pycowsay"]["metadata"]["main_package"]), pycowsay_package_ref, ) assert json_parsed["venvs"]["pycowsay"]["metadata"][ "injected_packages"] == {} # pylint venv pylint_package_ref = create_package_info_ref( "pylint", "pylint", pipx_venvs_dir, **{ "app_paths_of_dependencies": { "isort": [pipx_venvs_dir / "pylint" / venv_bin_dir / app_name("isort")] } }, ) assert_package_metadata( PackageInfo( **json_parsed["venvs"]["pylint"]["metadata"]["main_package"]), pylint_package_ref, ) assert sorted(json_parsed["venvs"]["pylint"]["metadata"] ["injected_packages"].keys()) == ["isort"] isort_package_ref = create_package_info_ref("pylint", "isort", pipx_venvs_dir, include_apps=False) print(isort_package_ref) print( PackageInfo(**json_parsed["venvs"]["pylint"]["metadata"] ["injected_packages"]["isort"])) assert_package_metadata( PackageInfo(**json_parsed["venvs"]["pylint"]["metadata"] ["injected_packages"]["isort"]), isort_package_ref, )