def test_command_line_append_flags(script: PipTestEnvironment, virtualenv: VirtualEnvironment, data: TestData) -> None: """ Test command line flags that append to defaults set by environmental variables. """ script.environ["PIP_FIND_LINKS"] = "https://test.pypi.org" result = script.pip( "install", "-vvv", "INITools", "--trusted-host", "test.pypi.org", ) assert ("Fetching project page and analyzing links: https://test.pypi.org" in result.stdout), str(result) virtualenv.clear() result = script.pip( "install", "-vvv", "--find-links", data.find_links, "INITools", "--trusted-host", "test.pypi.org", ) assert ("Fetching project page and analyzing links: https://test.pypi.org" in result.stdout) assert (f"Skipping link: not a file: {data.find_links}" in result.stdout), f"stdout: {result.stdout}"
def test_env_vars_override_config_file(script: PipTestEnvironment, virtualenv: VirtualEnvironment) -> None: """ Test that environmental variables override settings in config files. """ config_file = script.scratch_path / "test-pip.cfg" # set this to make pip load it script.environ["PIP_CONFIG_FILE"] = str(config_file) # It's important that we test this particular config value ('no-index') # because there is/was a bug which only shows up in cases in which # 'config-item' and 'config_item' hash to the same value modulo the size # of the config dictionary. config_file.write_text( textwrap.dedent("""\ [global] no-index = 1 """)) result = script.pip("install", "-vvv", "INITools", expect_error=True) msg = "DistributionNotFound: No matching distribution found for INITools" # Case insensitive as the new resolver canonicalizes the project name assert msg.lower() in result.stdout.lower(), str(result) script.environ["PIP_NO_INDEX"] = "0" virtualenv.clear() result = script.pip("install", "-vvv", "INITools") assert "Successfully installed INITools" in result.stdout
def test_config_file_override_stack( script: PipTestEnvironment, virtualenv: VirtualEnvironment, mock_server: MockServer, shared_data: TestData, ) -> None: """ Test config files (global, overriding a global config with a local, overriding all with a command line flag). """ mock_server.set_responses([ package_page({}), package_page({}), package_page({"INITools-0.2.tar.gz": "/files/INITools-0.2.tar.gz"}), file_response(shared_data.packages.joinpath("INITools-0.2.tar.gz")), ]) mock_server.start() base_address = f"http://{mock_server.host}:{mock_server.port}" config_file = script.scratch_path / "test-pip.cfg" # set this to make pip load it script.environ["PIP_CONFIG_FILE"] = str(config_file) config_file.write_text( textwrap.dedent("""\ [global] index-url = {}/simple1 """.format(base_address))) script.pip("install", "-vvv", "INITools", expect_error=True) virtualenv.clear() config_file.write_text( textwrap.dedent("""\ [global] index-url = {address}/simple1 [install] index-url = {address}/simple2 """.format(address=base_address))) script.pip("install", "-vvv", "INITools", expect_error=True) script.pip( "install", "-vvv", "--index-url", f"{base_address}/simple3", "INITools", ) mock_server.stop() requests = mock_server.get_requests() assert len(requests) == 4 assert requests[0]["PATH_INFO"] == "/simple1/initools/" assert requests[1]["PATH_INFO"] == "/simple2/initools/" assert requests[2]["PATH_INFO"] == "/simple3/initools/" assert requests[3]["PATH_INFO"] == "/files/INITools-0.2.tar.gz"
def test_command_line_options_override_env_vars( script: PipTestEnvironment, virtualenv: VirtualEnvironment) -> None: """ Test that command line options override environmental variables. """ script.environ["PIP_INDEX_URL"] = "https://example.com/simple/" result = script.pip("install", "-vvv", "INITools", expect_error=True) assert "Getting page https://example.com/simple/initools" in result.stdout virtualenv.clear() result = script.pip( "install", "-vvv", "--index-url", "https://download.zope.org/ppix", "INITools", expect_error=True, ) assert "example.com" not in result.stdout assert "Getting page https://download.zope.org/ppix" in result.stdout