From 84d2b0f026b4d78462a3322ff327cfe41eacc323 Mon Sep 17 00:00:00 2001 From: Chris Busillo Date: Thu, 28 May 2026 18:42:53 -0400 Subject: [PATCH] Use environment token for artifact selector resolution --- odoo_devkit/local_runtime.py | 2 +- tests/test_runtime.py | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/odoo_devkit/local_runtime.py b/odoo_devkit/local_runtime.py index fafd1e0..c9c5716 100644 --- a/odoo_devkit/local_runtime.py +++ b/odoo_devkit/local_runtime.py @@ -2087,7 +2087,7 @@ def resolve_artifact_runtime_source_repository_refs( runtime_values: dict[str, str], ) -> tuple[dict[str, str], tuple[dict[str, str], ...]]: resolved_values = dict(runtime_values) - github_token = clean_optional_value(runtime_values.get("GITHUB_TOKEN")) + github_token = resolve_github_token_for_build(runtime_values) selector_metadata: list[dict[str, str]] = [] for env_key in ARTIFACT_SOURCE_ENV_KEYS: raw_value = runtime_values.get(env_key, "") diff --git a/tests/test_runtime.py b/tests/test_runtime.py index 0b2c7b4..7de16e5 100644 --- a/tests/test_runtime.py +++ b/tests/test_runtime.py @@ -1610,6 +1610,41 @@ def test_resolve_source_repository_ref_to_git_sha_rejects_missing_remote_ref(sel ref="main", ) + def test_resolve_artifact_runtime_source_refs_uses_environment_token_fallback(self) -> None: + runtime_values = { + "ODOO_ADDON_REPOSITORIES": "cbusillo/disable_odoo_online@main", + } + with mock.patch.dict(os.environ, {"GITHUB_TOKEN": "env-token"}): + with mock.patch( + "odoo_devkit.local_runtime.resolve_source_repository_ref_to_git_sha", + return_value="411f6b8e85cac72dc7aa2e2dc5540001043c327d", + ) as resolve_ref_mock: + resolved_values, selector_metadata = ( + local_runtime.resolve_artifact_runtime_source_repository_refs( + runtime_values=runtime_values + ) + ) + + resolve_ref_mock.assert_called_once_with( + repository="cbusillo/disable_odoo_online", + ref="main", + github_token="env-token", + ) + self.assertEqual( + resolved_values["ODOO_ADDON_REPOSITORIES"], + "cbusillo/disable_odoo_online@411f6b8e85cac72dc7aa2e2dc5540001043c327d", + ) + self.assertEqual( + selector_metadata, + ( + { + "repository": "cbusillo/disable_odoo_online", + "selector": "main", + "resolved_ref": "411f6b8e85cac72dc7aa2e2dc5540001043c327d", + }, + ), + ) + def test_resolve_source_repository_ref_to_git_sha_rejects_ambiguous_matches(self) -> None: ambiguous_stdout = ( "1111111111111111111111111111111111111111\trefs/heads/main\n2222222222222222222222222222222222222222\trefs/tags/main\n"