From ccc4f95b42c4caba74cf01f9aa898a96a3372b9e Mon Sep 17 00:00:00 2001 From: Jakob Lykke Andersen Date: Sat, 6 Nov 2021 14:33:47 +0100 Subject: [PATCH] intersphinx role, hax role name to preserve case --- sphinx/ext/intersphinx.py | 8 ++++++-- tests/test_ext_intersphinx.py | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/sphinx/ext/intersphinx.py b/sphinx/ext/intersphinx.py index 2c640925b..90ad8e758 100644 --- a/sphinx/ext/intersphinx.py +++ b/sphinx/ext/intersphinx.py @@ -482,14 +482,18 @@ class IntersphinxDispatcher(CustomReSTDispatcher): def role(self, role_name: str, language_module: ModuleType, lineno: int, reporter: Reporter ) -> Tuple[RoleFunction, List[system_message]]: if role_name.split(':')[0] == 'external': - return IntersphinxRole(), [] + return IntersphinxRole(role_name), [] else: return super().role(role_name, language_module, lineno, reporter) class IntersphinxRole(SphinxRole): + def __init__(self, orig_name: str) -> None: + self.orig_name = orig_name + def run(self) -> Tuple[List[Node], List[system_message]]: - inventory, name_suffix = self.get_inventory_and_name_suffix(self.name) + assert self.name == self.orig_name.lower() + inventory, name_suffix = self.get_inventory_and_name_suffix(self.orig_name) if inventory and not inventory_exists(self.env, inventory): logger.warning(__('inventory for external cross-reference not found: %s'), inventory, location=(self.env.docname, self.lineno)) diff --git a/tests/test_ext_intersphinx.py b/tests/test_ext_intersphinx.py index 11450e2c3..b2ad8afe5 100644 --- a/tests/test_ext_intersphinx.py +++ b/tests/test_ext_intersphinx.py @@ -565,7 +565,7 @@ def test_intersphinx_role(app, warning): # explicit inventory assert html.format('cfunc.html#CFunc') in content - #assert "WARNING: inventory for external cross-reference not found: invNope" in wStr + assert "WARNING: inventory for external cross-reference not found: invNope" in wStr # explicit title assert html.format('index.html#foons') in content