Skip to content

Commit c314ca8

Browse files
committed
🐛 Ignore digest when comparing
1 parent 06f89f5 commit c314ca8

File tree

4 files changed

+133
-97
lines changed

4 files changed

+133
-97
lines changed

src/docker_python_nodejs/cli.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
decide_version_combinations,
1212
find_new_or_updated,
1313
load_build_contexts,
14+
load_versions,
1415
persist_versions,
1516
supported_versions,
1617
)
@@ -37,13 +38,15 @@ def run_dockerfile(args: CLIArgs) -> None:
3738
def run_build_matrix(args: CLIArgs) -> None:
3839
supported_python_versions, supported_nodejs_versions = supported_versions()
3940
versions = decide_version_combinations(args.distros, supported_python_versions, supported_nodejs_versions)
40-
new_or_updated = find_new_or_updated(versions, args.force)
41+
current_versions = load_versions()
42+
new_or_updated = find_new_or_updated(versions, current_versions, args.force)
4143
build_matrix(new_or_updated, args.event)
4244

4345

4446
def run_release(args: CLIArgs) -> None:
4547
versions = load_build_contexts(args.builds_dir)
46-
new_or_updated = find_new_or_updated(versions, args.force)
48+
current_versions = load_versions()
49+
new_or_updated = find_new_or_updated(versions, current_versions, args.force)
4750
supported_python_versions, supported_nodejs_versions = supported_versions()
4851
if not new_or_updated:
4952
logger.info("No new or updated versions")

src/docker_python_nodejs/versions.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,19 +270,23 @@ def load_versions() -> list[BuildVersion]:
270270

271271
def find_new_or_updated(
272272
versions: list[BuildVersion],
273+
current_versions: list[BuildVersion],
273274
force: bool = False,
274275
) -> list[BuildVersion]:
275276
if force:
276277
logger.warning("Generating full build matrix because --force is set")
277278

278-
current_versions = load_versions()
279279
current_versions_dict = {ver.key: ver for ver in current_versions}
280280
versions_dict = {ver.key: ver for ver in versions}
281281
new_or_updated: list[BuildVersion] = []
282282

283283
for key, ver in versions_dict.items():
284+
current_ver = current_versions_dict.get(key)
285+
if current_ver is not None:
286+
current_ver.digest = "" # Ignore digest when comparing
287+
284288
# does key exist and are version dicts equal?
285-
updated = key in current_versions_dict and ver != current_versions_dict[key]
289+
updated = current_ver and ver != current_ver
286290
new = key not in current_versions_dict
287291
if new or updated or force:
288292
new_or_updated.append(ver)

tests/test_all.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import copy
12
import dataclasses
23
import json
34
from pathlib import Path
@@ -15,6 +16,7 @@
1516
decide_nodejs_versions,
1617
decide_version_combinations,
1718
fetch_supported_nodejs_versions,
19+
find_new_or_updated,
1820
load_build_contexts,
1921
scrape_supported_python_versions,
2022
)
@@ -264,3 +266,25 @@ def test_load_build_contexts(build_version: BuildVersion, tmp_path: Path) -> Non
264266
versions = load_build_contexts(tmp_path)
265267
assert len(versions) == 1
266268
assert versions[0].key == ver.key
269+
270+
271+
def test_find_new_or_updated_with_digest() -> None:
272+
new = BuildVersion(
273+
key="python3.11-nodejs20",
274+
python="3.11",
275+
python_canonical="3.11.3",
276+
python_image="3.11.3-trixie",
277+
nodejs="20",
278+
nodejs_canonical="20.2.0",
279+
distro="trixie",
280+
platforms=[
281+
"linux/amd64",
282+
"linux/arm64",
283+
],
284+
)
285+
existing = copy.deepcopy(new)
286+
existing.digest = "sha256:abcdef1234567890"
287+
288+
res = find_new_or_updated([new], [existing])
289+
290+
assert len(res) == 0

0 commit comments

Comments
 (0)