From: Vladimír Vondruš Date: Sun, 30 Dec 2018 00:08:59 +0000 (+0100) Subject: doxygen: adapt for xrefitem anchor changes in 1.8.15. X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~cjwatson/git?a=commitdiff_plain;h=8f787ca5da28f668ade6b19f612eac3636fd5b0a;p=blog.git doxygen: adapt for xrefitem anchor changes in 1.8.15. --- diff --git a/doxygen/dox2html5.py b/doxygen/dox2html5.py index ad12025e..2c00e815 100755 --- a/doxygen/dox2html5.py +++ b/doxygen/dox2html5.py @@ -452,8 +452,12 @@ def parse_type(state: State, type: ET.Element) -> str: if i.tag == 'ref': out += parse_ref(state, i) elif i.tag == 'anchor': - # Anchor, used for example in deprecated/todo lists. Its base_url - # is always equal to base_url of the page. + # Anchor, used by <= 1.8.14 for deprecated/todo lists. Its base_url + # is always equal to base_url of the page. In 1.8.15 the anchor is + # in the description, making the anchor look extra awful: + # https://github.com/doxygen/doxygen/pull/6587 + # TODO: this should get reverted and fixed properly so the + # one-on-one case works as it should out += ''.format(extract_id_hash(state, i)) else: # pragma: no cover logging.warning("{}: ignoring {} in ".format(state.current, i.tag)) diff --git a/doxygen/test/contents_blocks/old.html b/doxygen/test/contents_blocks/old.html index dc815714..5e598ba9 100644 --- a/doxygen/test/contents_blocks/old.html +++ b/doxygen/test/contents_blocks/old.html @@ -22,7 +22,7 @@

Just old

-
Member foo ()

Xrefitem, gets merged

with this one by Doxygen itself.

page Main Page

This is old.

This is not merged.

With this. Only on the listing page.

+
Member foo ()

Xrefitem, gets merged

with this one by Doxygen itself.

page Main Page

This is old.

This is not merged.

With this. Only on the listing page.

diff --git a/doxygen/test/contents_blocks/old_1814.html b/doxygen/test/contents_blocks/old_1814.html new file mode 100644 index 00000000..dc815714 --- /dev/null +++ b/doxygen/test/contents_blocks/old_1814.html @@ -0,0 +1,31 @@ + + + + + Just old | My Project + + + + + +
+
+
+
+
+

+ Just old +

+
Member foo ()

Xrefitem, gets merged

with this one by Doxygen itself.

page Main Page

This is old.

This is not merged.

With this. Only on the listing page.

+
+
+
+
+ + diff --git a/doxygen/test/contents_blocks/todo.html b/doxygen/test/contents_blocks/todo.html index 108e61c9..6866a710 100644 --- a/doxygen/test/contents_blocks/todo.html +++ b/doxygen/test/contents_blocks/todo.html @@ -22,7 +22,7 @@

Todo List

-
page Main Page
Or a TODO.
Page Other page
Diffferent TODO
+
page Main Page
Or a TODO.
Page Other page
Diffferent TODO
diff --git a/doxygen/test/contents_blocks/todo_1814.html b/doxygen/test/contents_blocks/todo_1814.html new file mode 100644 index 00000000..108e61c9 --- /dev/null +++ b/doxygen/test/contents_blocks/todo_1814.html @@ -0,0 +1,31 @@ + + + + + Todo List | My Project + + + + + +
+
+ + diff --git a/doxygen/test/test_contents.py b/doxygen/test/test_contents.py index 12eec7ab..0cb1b989 100644 --- a/doxygen/test/test_contents.py +++ b/doxygen/test/test_contents.py @@ -53,11 +53,23 @@ class Blocks(IntegrationTestCase): def test(self): self.run_dox2html5(wildcard='*.xml') self.assertEqual(*self.actual_expected_contents('index.html')) - self.assertEqual(*self.actual_expected_contents('todo.html')) # Multiple xrefitems should be merged into one self.assertEqual(*self.actual_expected_contents('File_8h.html')) + + @unittest.skipUnless(LooseVersion(doxygen_version()) > LooseVersion("1.8.14"), + "https://github.com/doxygen/doxygen/pull/6587 fucking broke this") + def test_xrefitem1814(self): + self.run_dox2html5(wildcard='*.xml') + self.assertEqual(*self.actual_expected_contents('todo.html')) self.assertEqual(*self.actual_expected_contents('old.html')) + @unittest.skipUnless(LooseVersion(doxygen_version()) <= LooseVersion("1.8.14"), + "https://github.com/doxygen/doxygen/pull/6587 fucking broke this") + def test_xrefitem(self): + self.run_dox2html5(wildcard='*.xml') + self.assertEqual(*self.actual_expected_contents('todo.html', 'todo_1814.html')) + self.assertEqual(*self.actual_expected_contents('old.html', 'old_1814.html')) + class Code(IntegrationTestCase): def __init__(self, *args, **kwargs): super().__init__(__file__, 'code', *args, **kwargs)