Skip to content

Commit

Permalink
Merge pull request pypa#11713 from uranusjr/fix-link-hashes-tests
Browse files Browse the repository at this point in the history
Test and news for wheel cache restoration
  • Loading branch information
pradyunsg authored Jan 9, 2023
2 parents c20c789 + 5eda50d commit 1de6cf0
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 1 deletion.
2 changes: 2 additions & 0 deletions news/11527.bugfix.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Wheel cache behavior is restored to match previous versions, allowing the
cache to find existing entries.
44 changes: 43 additions & 1 deletion tests/unit/test_cache.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import os
from pathlib import Path

from pip._vendor.packaging.tags import Tag
from pip._vendor.packaging.tags import Tag, interpreter_name, interpreter_version

from pip._internal.cache import WheelCache, _hash_dict
from pip._internal.models.format_control import FormatControl
Expand Down Expand Up @@ -52,6 +52,48 @@ def test_cache_hash() -> None:
assert h == "f83b32dfa27a426dec08c21bf006065dd003d0aac78e7fc493d9014d"


def test_link_to_cache(tmpdir: Path) -> None:
"""
Test that Link.from_json() produces Links with consistent cache
locations
"""
wc = WheelCache(os.fspath(tmpdir), FormatControl())
# Define our expectations for stable cache path.
i_name = interpreter_name()
i_version = interpreter_version()
key_parts = {
"url": "https://files.pythonhosted.org/packages/a6/91/"
"86a6eac449ddfae239e93ffc1918cf33fd9bab35c04d1e963b311e347a73/"
"netifaces-0.11.0.tar.gz",
"sha256": "043a79146eb2907edf439899f262b3dfe41717d34124298ed281139a8b93ca32",
"interpreter_name": i_name,
"interpreter_version": i_version,
}
expected_hash = _hash_dict(key_parts)
parts = [
expected_hash[:2],
expected_hash[2:4],
expected_hash[4:6],
expected_hash[6:],
]
pathed_hash = os.path.join(*parts)
# Check working from a Link produces the same result.
file_data = {
"filename": "netifaces-0.11.0.tar.gz",
"hashes": {
"sha256": key_parts["sha256"],
},
"requires-python": "",
"url": key_parts["url"],
"yanked": False,
}
page_url = "https://pypi.org/simple/netifaces/"
link = Link.from_json(file_data=file_data, page_url=page_url)
assert link
path = wc.get_path_for_link(link)
assert pathed_hash in path


def test_get_cache_entry(tmpdir: Path) -> None:
wc = WheelCache(os.fspath(tmpdir), FormatControl())
persi_link = Link("https://g.c/o/r/persi")
Expand Down

0 comments on commit 1de6cf0

Please sign in to comment.