Skip to content

Commit b8abef7

Browse files
committed
Refactor get_created_direct_url test
1 parent 07e27b4 commit b8abef7

File tree

6 files changed

+31
-42
lines changed

6 files changed

+31
-42
lines changed

tests/functional/test_freeze.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
need_svn,
2525
wheel,
2626
)
27-
from tests.lib.direct_url import get_created_direct_url_path
2827
from tests.lib.venv import VirtualEnvironment
2928

3029
distribute_re = re.compile("^distribute==[0-9.]+\n", re.MULTILINE)
@@ -1039,7 +1038,7 @@ def test_freeze_pep610_editable(script: PipTestEnvironment) -> None:
10391038
"""
10401039
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
10411040
result = script.pip("install", pkg_path)
1042-
direct_url_path = get_created_direct_url_path(result, "testpkg")
1041+
direct_url_path = result.get_created_direct_url_path("testpkg")
10431042
assert direct_url_path
10441043
# patch direct_url.json to simulate an editable install
10451044
with open(direct_url_path) as f:

tests/functional/test_install_direct_url.py

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,19 @@
33
from pip._internal.models.direct_url import VcsInfo
44

55
from tests.lib import PipTestEnvironment, TestData, _create_test_package
6-
from tests.lib.direct_url import get_created_direct_url
76

87

98
def test_install_find_links_no_direct_url(script: PipTestEnvironment) -> None:
109
result = script.pip_install_local("simple")
11-
assert not get_created_direct_url(result, "simple")
10+
assert not result.get_created_direct_url("simple")
1211

1312

1413
def test_install_vcs_non_editable_direct_url(script: PipTestEnvironment) -> None:
1514
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
1615
url = pkg_path.as_uri()
1716
args = ["install", f"git+{url}#egg=testpkg"]
1817
result = script.pip(*args)
19-
direct_url = get_created_direct_url(result, "testpkg")
18+
direct_url = result.get_created_direct_url("testpkg")
2019
assert direct_url
2120
assert direct_url.url == url
2221
assert isinstance(direct_url.info, VcsInfo)
@@ -27,7 +26,7 @@ def test_install_archive_direct_url(script: PipTestEnvironment, data: TestData)
2726
req = "simple @ " + data.packages.joinpath("simple-2.0.tar.gz").as_uri()
2827
assert req.startswith("simple @ file://")
2928
result = script.pip("install", req)
30-
assert get_created_direct_url(result, "simple")
29+
assert result.get_created_direct_url("simple")
3130

3231

3332
@pytest.mark.network
@@ -39,7 +38,7 @@ def test_install_vcs_constraint_direct_url(script: PipTestEnvironment) -> None:
3938
"#egg=pip-test-package"
4039
)
4140
result = script.pip("install", "pip-test-package", "-c", constraints_file)
42-
assert get_created_direct_url(result, "pip_test_package")
41+
assert result.get_created_direct_url("pip_test_package")
4342

4443

4544
def test_install_vcs_constraint_direct_file_url(script: PipTestEnvironment) -> None:
@@ -48,4 +47,4 @@ def test_install_vcs_constraint_direct_file_url(script: PipTestEnvironment) -> N
4847
constraints_file = script.scratch_path / "constraints.txt"
4948
constraints_file.write_text(f"git+{url}#egg=testpkg")
5049
result = script.pip("install", "testpkg", "-c", constraints_file)
51-
assert get_created_direct_url(result, "testpkg")
50+
assert result.get_created_direct_url("testpkg")

tests/functional/test_list.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
make_wheel,
1616
wheel,
1717
)
18-
from tests.lib.direct_url import get_created_direct_url_path
1918

2019

2120
@pytest.fixture(scope="session")
@@ -736,7 +735,7 @@ def test_list_pep610_editable(script: PipTestEnvironment) -> None:
736735
"""
737736
pkg_path = _create_test_package(script.scratch_path, name="testpkg")
738737
result = script.pip("install", pkg_path)
739-
direct_url_path = get_created_direct_url_path(result, "testpkg")
738+
direct_url_path = result.get_created_direct_url_path("testpkg")
740739
assert direct_url_path
741740
# patch direct_url.json to simulate an editable install
742741
with open(direct_url_path) as f:

tests/functional/test_new_resolver.py

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
create_basic_wheel_for_package,
1515
create_test_package_with_setup,
1616
)
17-
from tests.lib.direct_url import get_created_direct_url
1817
from tests.lib.venv import VirtualEnvironment
1918
from tests.lib.wheel import make_wheel
2019

@@ -2155,9 +2154,9 @@ def test_new_resolver_direct_url_with_extras(
21552154
)
21562155

21572156
script.assert_installed(pkg1="1", pkg2="1", pkg3="1")
2158-
assert not get_created_direct_url(result, "pkg1")
2159-
assert get_created_direct_url(result, "pkg2")
2160-
assert not get_created_direct_url(result, "pkg3")
2157+
assert not result.get_created_direct_url("pkg1")
2158+
assert result.get_created_direct_url("pkg2")
2159+
assert not result.get_created_direct_url("pkg3")
21612160

21622161

21632162
def test_new_resolver_modifies_installed_incompatible(

tests/lib/__init__.py

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
from contextlib import contextmanager
1515
from hashlib import sha256
1616
from io import BytesIO, StringIO
17+
from pathlib import Path
1718
from textwrap import dedent
1819
from typing import Any, AnyStr, Callable, Literal, Protocol, Union, cast
1920
from urllib.request import pathname2url
@@ -28,6 +29,7 @@
2829
from pip._internal.index.collector import LinkCollector
2930
from pip._internal.index.package_finder import PackageFinder
3031
from pip._internal.locations import get_major_minor_version
32+
from pip._internal.models.direct_url import DIRECT_URL_METADATA_NAME, DirectUrl
3133
from pip._internal.models.search_scope import SearchScope
3234
from pip._internal.models.selection_prefs import SelectionPreferences
3335
from pip._internal.models.target_python import TargetPython
@@ -298,6 +300,24 @@ def _get_egg_link_path_created(self, egg_link_paths: list[str]) -> str | None:
298300
return egg_link_path
299301
return None
300302

303+
def get_created_direct_url_path(self, pkg: str) -> Path | None:
304+
dist_info_prefix = canonicalize_name(pkg).replace("-", "_") + "-"
305+
for filename in self.files_created:
306+
if (
307+
filename.name == DIRECT_URL_METADATA_NAME
308+
and filename.parent.name.endswith(".dist-info")
309+
and filename.parent.name.startswith(dist_info_prefix)
310+
):
311+
return self.test_env.base_path / filename
312+
return None
313+
314+
def get_created_direct_url(self, pkg: str) -> DirectUrl | None:
315+
direct_url_path = self.get_created_direct_url_path(pkg)
316+
if direct_url_path:
317+
with open(direct_url_path) as f:
318+
return DirectUrl.from_json(f.read())
319+
return None
320+
301321
def assert_installed(
302322
self,
303323
pkg_name: str,
@@ -313,7 +333,7 @@ def assert_installed(
313333
e = self.test_env
314334

315335
if editable:
316-
pkg_dir = e.venv / "src" / canonicalize_name(pkg_name)
336+
pkg_dir = e.venv / "src" / canonicalize_name(dist_name)
317337
# If package was installed in a sub directory
318338
if sub_dir:
319339
pkg_dir = pkg_dir / sub_dir

tests/lib/direct_url.py

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)