Commit ed88e34d by Ashwin Nair Committed by Randy Döring

Add subdirectory reference to locker.py

Co-authored-by: Randy Döring <30527984+radoering@users.noreply.github.com>
parent 8ef2a645
...@@ -126,6 +126,7 @@ class Locker: ...@@ -126,6 +126,7 @@ class Locker:
source_url=url, source_url=url,
source_reference=source.get("reference"), source_reference=source.get("reference"),
source_resolved_reference=source.get("resolved_reference"), source_resolved_reference=source.get("resolved_reference"),
source_subdirectory=source.get("subdirectory"),
) )
package.description = info.get("description", "") package.description = info.get("description", "")
package.category = info.get("category", "main") package.category = info.get("category", "main")
...@@ -620,6 +621,9 @@ class Locker: ...@@ -620,6 +621,9 @@ class Locker:
if package.source_resolved_reference: if package.source_resolved_reference:
data["source"]["resolved_reference"] = package.source_resolved_reference data["source"]["resolved_reference"] = package.source_resolved_reference
if package.source_subdirectory:
data["source"]["subdirectory"] = package.source_subdirectory
if package.source_type in ["directory", "git"]: if package.source_type in ["directory", "git"]:
data["develop"] = package.develop data["develop"] = package.develop
......
...@@ -57,6 +57,15 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage): ...@@ -57,6 +57,15 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
source_reference="develop", source_reference="develop",
source_resolved_reference="123456", source_resolved_reference="123456",
) )
package_git_with_subdirectory = Package(
"git-package-subdir",
"1.2.3",
source_type="git",
source_url="https://github.com/python-poetry/poetry.git",
source_reference="develop",
source_resolved_reference="123456",
source_subdirectory="subdir",
)
package_url_linux = Package( package_url_linux = Package(
"url-package", "url-package",
"1.0", "1.0",
...@@ -74,6 +83,7 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage): ...@@ -74,6 +83,7 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
package_a, package_a,
get_package("B", "1.2"), get_package("B", "1.2"),
package_git, package_git,
package_git_with_subdirectory,
package_url_win32, package_url_win32,
package_url_linux, package_url_linux,
] ]
...@@ -127,6 +137,22 @@ reference = "develop" ...@@ -127,6 +137,22 @@ reference = "develop"
resolved_reference = "123456" resolved_reference = "123456"
[[package]] [[package]]
name = "git-package-subdir"
version = "1.2.3"
description = ""
category = "main"
optional = false
python-versions = "*"
develop = false
[package.source]
type = "git"
url = "https://github.com/python-poetry/poetry.git"
reference = "develop"
resolved_reference = "123456"
subdirectory = "subdir"
[[package]]
name = "url-package" name = "url-package"
version = "1.0" version = "1.0"
description = "" description = ""
...@@ -163,6 +189,7 @@ A = [ ...@@ -163,6 +189,7 @@ A = [
] ]
B = [] B = []
git-package = [] git-package = []
git-package-subdir = []
url-package = [] url-package = []
""" """
...@@ -344,6 +371,44 @@ content-hash = "123456789" ...@@ -344,6 +371,44 @@ content-hash = "123456789"
assert dependency_b.name == "b" assert dependency_b.name == "b"
def test_locker_properly_loads_subdir(locker: Locker) -> None:
content = """\
[[package]]
name = "git-package-subdir"
version = "1.2.3"
description = ""
category = "main"
optional = false
python-versions = "*"
develop = false
[package.source]
type = "git"
url = "https://github.com/python-poetry/poetry.git"
reference = "develop"
resolved_reference = "123456"
subdirectory = "subdir"
[metadata]
lock-version = "1.1"
python-versions = "*"
content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8"
[metadata.files]
git-package-subdir = []
"""
locker.lock.write(tomlkit.parse(content))
repository = locker.locked_repository()
assert len(repository.packages) == 1
packages = repository.find_packages(get_dependency("git-package-subdir", "1.2.3"))
assert len(packages) == 1
package = packages[0]
assert package.source_subdirectory == "subdir"
def test_lock_packages_with_null_description(locker: Locker, root: ProjectPackage): def test_lock_packages_with_null_description(locker: Locker, root: ProjectPackage):
package_a = get_package("A", "1.0.0") package_a = get_package("A", "1.0.0")
package_a.description = None package_a.description = None
...@@ -668,6 +733,51 @@ A = [] ...@@ -668,6 +733,51 @@ A = []
assert content == expected assert content == expected
def test_locker_dumps_subdir(locker: Locker, root: ProjectPackage) -> None:
package_git_with_subdirectory = Package(
"git-package-subdir",
"1.2.3",
source_type="git",
source_url="https://github.com/python-poetry/poetry.git",
source_reference="develop",
source_resolved_reference="123456",
source_subdirectory="subdir",
)
locker.set_lock_data(root, [package_git_with_subdirectory])
with locker.lock.open(encoding="utf-8") as f:
content = f.read()
expected = """\
[[package]]
name = "git-package-subdir"
version = "1.2.3"
description = ""
category = "main"
optional = false
python-versions = "*"
develop = false
[package.source]
type = "git"
url = "https://github.com/python-poetry/poetry.git"
reference = "develop"
resolved_reference = "123456"
subdirectory = "subdir"
[metadata]
lock-version = "1.1"
python-versions = "*"
content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8"
[metadata.files]
git-package-subdir = []
"""
assert content == expected
def test_locked_repository_uses_root_dir_of_package( def test_locked_repository_uses_root_dir_of_package(
locker: Locker, mocker: MockerFixture locker: Locker, mocker: MockerFixture
): ):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment