fix(manifest): avoid KeyError when override bottle has repos absent from base
test / integration-docker (pull_request) Successful in 19s
test / unit (pull_request) Successful in 38s
lint / lint (push) Failing after 2m47s
test / integration-firecracker (pull_request) Successful in 3m17s
test / coverage (pull_request) Successful in 44s
test / publish-infra (pull_request) Has been skipped
tracker-policy-pr / check-pr (pull_request) Failing after 12m13s

merge_bottles_runtime used .get(n, base_repos_by_name[n]) which eagerly
evaluates the default, crashing when a repo exists only in the override
bottle. Replaced with a conditional expression so the base lookup only
runs when needed.

Adds three regression tests covering override-only, base-only, and
name-collision cases.

Closes #457

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-07-23 22:17:32 +00:00
parent 0fb9b04c01
commit 7b9b1c6312
2 changed files with 25 additions and 1 deletions
+1 -1
View File
@@ -57,7 +57,7 @@ def _merge_two_bottles_runtime(base: "ManifestBottle", override: "ManifestBottle
n for n in override_repos_by_name if n not in base_repos_by_name
]
merged_git = tuple(
override_repos_by_name.get(n, base_repos_by_name[n])
override_repos_by_name[n] if n in override_repos_by_name else base_repos_by_name[n]
for n in merged_repos_names
)