From a458419eb83aacc27f81b0d5c389e040c3e36e9c Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sat, 21 Jun 2025 13:20:30 -0300 Subject: [PATCH 1/4] fix: handle absent front/title in get_title() --- ietf/utils/xmldraft.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ietf/utils/xmldraft.py b/ietf/utils/xmldraft.py index 3ac9a269c79..3d5b6ac0109 100644 --- a/ietf/utils/xmldraft.py +++ b/ietf/utils/xmldraft.py @@ -147,7 +147,8 @@ def parse_docname(xmlroot): return revmatch.group('filename'), revmatch.group('rev') def get_title(self): - return self.xmlroot.findtext('front/title').strip() + title_text = self.xmlroot.findtext('front/title') + return "" if title_text is None else title_text.strip() @staticmethod def parse_creation_date(date_elt): From a37b888e3e0922df2fa5bbf009d2c224570148f3 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Sat, 21 Jun 2025 13:51:07 -0300 Subject: [PATCH 2/4] test: test get_title() --- ietf/utils/tests.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index 2dd861cd11c..e9b451e28c2 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -5,6 +5,7 @@ import datetime import io import json + import lxml.etree import os.path import pytz @@ -741,6 +742,23 @@ def test_render_author_name(self): "J. Q.", ) + @patch("ietf.utils.xmldraft.XMLDraft.__init__", return_value=None) + def test_get_title(self, mock_init): + xmldraft = XMLDraft("fake") + self.assertTrue(mock_init.called) + # Stub XML that does not have a front/title element + xmldraft.xmlroot = lxml.etree.XML( + "" # no title + ) + self.assertEqual(xmldraft.get_title(), "") + + # Stub XML that has a front/title element + xmldraft.xmlroot = lxml.etree.XML( + "This Is the Title" + ) + self.assertEqual(xmldraft.get_title(), "This Is the Title") + + def test_capture_xml2rfc_output(self): """capture_xml2rfc_output reroutes and captures xml2rfc logs""" orig_write_out = xml2rfc_log.write_out From 7d5f85d5c3e9b33c1264da52d9b01037a593062a Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Jun 2025 10:08:34 -0300 Subject: [PATCH 3/4] chore: copyrights --- ietf/utils/tests.py | 2 +- ietf/utils/xmldraft.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index e9b451e28c2..b24425b7d1e 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2014-2020, All Rights Reserved +# Copyright The IETF Trust 2014-2025, All Rights Reserved # -*- coding: utf-8 -*- diff --git a/ietf/utils/xmldraft.py b/ietf/utils/xmldraft.py index 3d5b6ac0109..bc615b7eb4b 100644 --- a/ietf/utils/xmldraft.py +++ b/ietf/utils/xmldraft.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2022, All Rights Reserved +# Copyright The IETF Trust 2025, All Rights Reserved # -*- coding: utf-8 -*- import datetime import io From 57a8085c37c5f81014751a8ce63e616845bcdff6 Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Mon, 23 Jun 2025 10:41:21 -0300 Subject: [PATCH 4/4] chore: fix copyright + remove stray newline --- ietf/utils/tests.py | 1 - ietf/utils/xmldraft.py | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/ietf/utils/tests.py b/ietf/utils/tests.py index b24425b7d1e..872aa366b9b 100644 --- a/ietf/utils/tests.py +++ b/ietf/utils/tests.py @@ -5,7 +5,6 @@ import datetime import io import json - import lxml.etree import os.path import pytz diff --git a/ietf/utils/xmldraft.py b/ietf/utils/xmldraft.py index bc615b7eb4b..7ef6605c784 100644 --- a/ietf/utils/xmldraft.py +++ b/ietf/utils/xmldraft.py @@ -1,4 +1,4 @@ -# Copyright The IETF Trust 2025, All Rights Reserved +# Copyright The IETF Trust 2022-2025, All Rights Reserved # -*- coding: utf-8 -*- import datetime import io