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()
Beispiel #2
0
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'
Beispiel #3
0
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"
Beispiel #4
0
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()
Beispiel #5
0
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"