Commit 0d38a394 by Randy Döring Committed by GitHub

locker: sort by name and version (#5446)

This ensures that `lock --no-update` does not change lockfile unnecessarily.
parent 4cc52f12
......@@ -472,7 +472,7 @@ class Locker:
def _lock_packages(self, packages: list[Package]) -> list:
locked = []
for package in sorted(packages, key=lambda x: x.name):
for package in sorted(packages, key=lambda x: (x.name, x.version)):
spec = self._dump_package(package)
locked.append(spec)
......
......@@ -45,6 +45,8 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
package_a = get_package("A", "1.0.0")
package_a.add_dependency(Factory.create_dependency("B", "^1.0"))
package_a.files = [{"file": "foo", "hash": "456"}, {"file": "bar", "hash": "123"}]
package_a2 = get_package("A", "2.0.0")
package_a2.files = [{"file": "baz", "hash": "345"}]
package_git = Package(
"git-package",
"1.2.3",
......@@ -53,14 +55,15 @@ def test_lock_file_data_is_ordered(locker: Locker, root: ProjectPackage):
source_reference="develop",
source_resolved_reference="123456",
)
packages = [package_a, get_package("B", "1.2"), package_git]
packages = [package_a2, package_a, get_package("B", "1.2"), package_git]
locker.set_lock_data(root, packages)
with locker.lock.open(encoding="utf-8") as f:
content = f.read()
expected = """[[package]]
expected = """\
[[package]]
name = "A"
version = "1.0.0"
description = ""
......@@ -72,6 +75,14 @@ python-versions = "*"
B = "^1.0"
[[package]]
name = "A"
version = "2.0.0"
description = ""
category = "main"
optional = false
python-versions = "*"
[[package]]
name = "B"
version = "1.2"
description = ""
......@@ -103,6 +114,7 @@ content-hash = "115cf985d932e9bf5f540555bbdd75decbb62cac81e399375fc19f6277f8c1d8
A = [
{file = "bar", hash = "123"},
{file = "foo", hash = "456"},
{file = "baz", hash = "345"},
]
B = []
git-package = []
......
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