From 267f70915b68659f364362faf41411ac2ac32308 Mon Sep 17 00:00:00 2001 From: Takeshi KOMIYA Date: Wed, 8 Apr 2020 22:46:03 +0900 Subject: [PATCH] Fix #7418: std domain: duplication warning for glossary terms is case insensitive --- CHANGES | 2 ++ sphinx/domains/std.py | 4 ++-- tests/test_domain_std.py | 8 ++++---- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/CHANGES b/CHANGES index 212f4571fb..3544dcba5d 100644 --- a/CHANGES +++ b/CHANGES @@ -16,6 +16,8 @@ Features added Bugs fixed ---------- +* #7418: std domain: duplication warning for glossary terms is case insensitive + Testing -------- diff --git a/sphinx/domains/std.py b/sphinx/domains/std.py index d820cfe5c5..52546fb4c7 100644 --- a/sphinx/domains/std.py +++ b/sphinx/domains/std.py @@ -305,7 +305,7 @@ def make_glossary_term(env: "BuildEnvironment", textnodes: Iterable[Node], index term['ids'].append(node_id) std = cast(StandardDomain, env.get_domain('std')) - std.note_object('term', termtext.lower(), node_id, location=term) + std.note_object('term', termtext, node_id, location=term) # add an index entry too indexnode = addnodes.index() @@ -565,7 +565,7 @@ class StandardDomain(Domain): # links to tokens in grammar productions 'token': TokenXRefRole(), # links to terms in glossary - 'term': XRefRole(lowercase=True, innernodeclass=nodes.inline, + 'term': XRefRole(innernodeclass=nodes.inline, warn_dangling=True), # links to headings or arbitrary labels 'ref': XRefRole(lowercase=True, innernodeclass=nodes.inline, diff --git a/tests/test_domain_std.py b/tests/test_domain_std.py index aa1d29eb11..0032c18ef3 100644 --- a/tests/test_domain_std.py +++ b/tests/test_domain_std.py @@ -99,7 +99,7 @@ def test_glossary(app): text = (".. glossary::\n" "\n" " term1\n" - " term2\n" + " TERM2\n" " description\n" "\n" " term3 : classifier\n" @@ -114,7 +114,7 @@ def test_glossary(app): assert_node(doctree, ( [glossary, definition_list, ([definition_list_item, ([term, ("term1", index)], - [term, ("term2", + [term, ("TERM2", index)], definition)], [definition_list_item, ([term, ("term3", @@ -127,7 +127,7 @@ def test_glossary(app): assert_node(doctree[0][0][0][0][1], entries=[("single", "term1", "term-term1", "main", None)]) assert_node(doctree[0][0][0][1][1], - entries=[("single", "term2", "term-term2", "main", None)]) + entries=[("single", "TERM2", "term-TERM2", "main", None)]) assert_node(doctree[0][0][0][2], [definition, nodes.paragraph, "description"]) assert_node(doctree[0][0][1][0][1], @@ -143,7 +143,7 @@ def test_glossary(app): # index objects = list(app.env.get_domain("std").get_objects()) assert ("term1", "term1", "term", "index", "term-term1", -1) in objects - assert ("term2", "term2", "term", "index", "term-term2", -1) in objects + assert ("TERM2", "TERM2", "term", "index", "term-TERM2", -1) in objects assert ("term3", "term3", "term", "index", "term-term3", -1) in objects assert ("term4", "term4", "term", "index", "term-term4", -1) in objects