def mypy_whl_no_range(mock_server, shared_data): mypy_whl = shared_data.packages / 'mypy-0.782-py3-none-any.whl' mock_server.set_responses([file_response(mypy_whl)]) mock_server.start() base_address = f'http://{mock_server.host}:{mock_server.port}' yield "{}/{}".format(base_address, 'mypy-0.782-py3-none-any.whl') mock_server.stop()
def test_download_http_url_bad_hash(shared_script, shared_data, tmpdir, mock_server): download_dir = tmpdir / 'download' download_dir.mkdir() downloaded_path = download_dir / 'simple-1.0.tar.gz' fake_existing_package = shared_data.packages / 'simple-2.0.tar.gz' shutil.copy(str(fake_existing_package), str(downloaded_path)) simple_pkg = shared_data.packages / 'simple-1.0.tar.gz' simple_pkg_bytes = simple_pkg.read_bytes() digest = sha256(simple_pkg_bytes).hexdigest() mock_server.set_responses([file_response(simple_pkg)]) mock_server.start() base_address = f'http://{mock_server.host}:{mock_server.port}' url = f"{base_address}/simple-1.0.tar.gz#sha256={digest}" shared_script.pip('download', '-d', str(download_dir), url) assert simple_pkg_bytes == downloaded_path.read_bytes() mock_server.stop() requests = mock_server.get_requests() assert len(requests) == 1 assert requests[0]['PATH_INFO'] == '/simple-1.0.tar.gz' assert requests[0]['HTTP_ACCEPT_ENCODING'] == 'identity'
def test_download_http_url_bad_hash( shared_script: PipTestEnvironment, shared_data: TestData, tmpdir: Path, mock_server: MockServer, ) -> None: """ If already-downloaded file has bad checksum, re-download. """ download_dir = tmpdir / "download" download_dir.mkdir() downloaded_path = download_dir / "simple-1.0.tar.gz" fake_existing_package = shared_data.packages / "simple-2.0.tar.gz" shutil.copy(str(fake_existing_package), str(downloaded_path)) simple_pkg = shared_data.packages / "simple-1.0.tar.gz" simple_pkg_bytes = simple_pkg.read_bytes() digest = sha256(simple_pkg_bytes).hexdigest() mock_server.set_responses([file_response(simple_pkg)]) mock_server.start() base_address = f"http://{mock_server.host}:{mock_server.port}" url = f"{base_address}/simple-1.0.tar.gz#sha256={digest}" shared_script.pip("download", "-d", str(download_dir), url) assert simple_pkg_bytes == downloaded_path.read_bytes() mock_server.stop() requests = mock_server.get_requests() assert len(requests) == 1 assert requests[0]["PATH_INFO"] == "/simple-1.0.tar.gz" assert requests[0]["HTTP_ACCEPT_ENCODING"] == "identity"
def mypy_whl_no_range(mock_server: MockServer, shared_data: TestData) -> Iterator[str]: mypy_whl = shared_data.packages / "mypy-0.782-py3-none-any.whl" mock_server.set_responses([file_response(mypy_whl)]) mock_server.start() base_address = f"http://{mock_server.host}:{mock_server.port}" yield "{}/{}".format(base_address, "mypy-0.782-py3-none-any.whl") mock_server.stop()
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"