fix(i18n): keep pulled custom roles out of the tools-lane deploy and the core catalogs

Two store-i18n-only code paths predate updater's custom roles
(web-app-cst-*, d92375922d), which the merge c9e7f950d9 brought in:

- utils/i18n/libretranslate.py deploys the translation tools lane with
  cli.administration.deploy.dedicated but without --skip-pull. The lane
  bind-mounts the checkout and its generated inventory declares no custom
  role, so `make i18n-translate` would have run pull_custom_roles and
  removed every pulled web-app-cst-* from the host's roles/. It now
  passes --skip-pull, as every other generated deploy does.
- utils/i18n/extract.py role_messages globbed roles/*/meta/main.yml,
  including the gitignored custom roles, so a checkout with a pulled
  custom role failed test_core_catalogs_hold_exactly_the_current_sources
  and its remedy would have written the custom role's description into
  every tracked core catalog, against updater's rule that core never
  tracks custom roles. It now skips is_custom(role), like the README
  generators.

test_a_pulled_custom_role_stays_out_of_the_core_catalogs pins the second
point; without the skip it fails with the custom role in the list.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
kevinveenbirkenbachandClaude Opus 5.5 committed 2026-10-29 08:07:11 +01:00
1 parent c951657fe8
commit 6faa615135
3 files changed
+24 -2

No files matched your search

+19 -1
View File
@@ -3,7 +3,7 @@ import textwrap
import unittest
from pathlib import Path
from utils.i18n.extract import core_messages
from utils.i18n.extract import core_messages, role_messages
from utils.roles.mapping import ROLE_FILE_META_MAIN
@@ -75,6 +75,24 @@ class TestCoreMessages(unittest.TestCase):
],
)
def test_a_pulled_custom_role_stays_out_of_the_core_catalogs(self):
with tempfile.TemporaryDirectory() as tmp:
root = Path(tmp)
_write(
root,
f"roles/web-app-wiki/{ROLE_FILE_META_MAIN}",
"galaxy_info:\n description: A wiki\n",
)
_write(
root,
f"roles/web-app-cst-demo/{ROLE_FILE_META_MAIN}",
"galaxy_info:\n description: A custom app\n",
)
messages = role_messages(root)
self.assertEqual(messages, [("role:web-app-wiki:description", "A wiki")])
if __name__ == "__main__":
unittest.main()