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:
source_url=url,
source_reference=source.get("reference"),
source_resolved_reference=source.get("resolved_reference"),
source_subdirectory=source.get("subdirectory"),
)
package.description = info.get("description", "")
package.category = info.get("category", "main")
......@@ -620,6 +621,9 @@ class Locker:
if 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"]:
data["develop"] = package.develop
......
......@@ -57,6 +57,15 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
source_reference="develop",
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(
"url-package",
"1.0",
......@@ -74,6 +83,7 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
package_a,
get_package("B", "1.2"),
package_git,
package_git_with_subdirectory,
package_url_win32,
package_url_linux,
]
......@@ -127,6 +137,22 @@ reference = "develop"
resolved_reference = "123456"
[[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"
version = "1.0"
description = ""
......@@ -163,6 +189,7 @@ A = [
]
B = []
git-package = []
git-package-subdir = []
url-package = []
"""
......@@ -344,6 +371,44 @@ content-hash = "123456789"
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):
package_a = get_package("A", "1.0.0")
package_a.description = None
......@@ -668,6 +733,51 @@ A = []
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(
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