]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
diagnostics: avoid stray trailing space in html sink in sarif-replay [PR116792]
authorDavid Malcolm <dmalcolm@redhat.com>
Mon, 4 Aug 2025 14:45:31 +0000 (10:45 -0400)
committerDavid Malcolm <dmalcolm@redhat.com>
Mon, 4 Aug 2025 14:45:31 +0000 (10:45 -0400)
For the common case where a diagnostic has no metadata, sarif-replay's
html output was adding a stray space followed by an empty <div> for
the metadata.

Fixed thusly.

gcc/ChangeLog:
PR diagnostics/116792
* diagnostics/html-sink.cc
(html_builder::make_element_for_diagnostic): Don't add the
metadata element if it's empty.
(html_builder::make_element_for_metadata): Return null rather than
an empty element.

gcc/testsuite/ChangeLog:
PR diagnostics/116792
* gcc.dg/plugin/diagnostic-test-graphs-html.py: Remove trailing
space from expected text of message.
* sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py:
Likewise.
* sarif-replay.dg/2.1.0-valid/graphs-check-html.py: Likewise.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
gcc/diagnostics/html-sink.cc
gcc/testsuite/gcc.dg/plugin/diagnostic-test-graphs-html.py
gcc/testsuite/sarif-replay.dg/2.1.0-valid/embedded-links-check-html.py
gcc/testsuite/sarif-replay.dg/2.1.0-valid/graphs-check-html.py

index 13d6309b7a45a15598e200c4774cc02a50d620d8..934d8e2cb34169e8d93093e833dd81ec4728a185 100644 (file)
@@ -1018,10 +1018,11 @@ html_builder::make_element_for_diagnostic (const diagnostic_info &diagnostic,
 
   // Add any metadata as a suffix to the message
   if (diagnostic.m_metadata)
-    {
-      xp.add_text (" ");
-      xp.append (make_element_for_metadata (*diagnostic.m_metadata));
-    }
+    if (auto e = make_element_for_metadata (*diagnostic.m_metadata))
+      {
+       xp.add_text (" ");
+       xp.append (std::move (e));
+      }
 
   // Add any option as a suffix to the message
 
@@ -1234,6 +1235,9 @@ html_builder::make_element_for_metadata (const metadata &m)
        (make_metadata_element (std::move (label), std::move (url)));
     }
 
+  if (span_metadata->m_children.empty ())
+    return nullptr;
+
   return span_metadata;
 }
 
index 11e5fd1a3859d43d020782e9cb33b51941195455..9ff4645754af44d40ba80290f8b38034ed3d8a67 100644 (file)
@@ -26,7 +26,7 @@ def test_result_graph(html_tree):
     assert message.attrib['id'] == 'gcc-diag-0-message'
 
     assert message[0].tag == make_tag('strong')
-    assert message[0].tail == ' this is a placeholder error, with graphs '
+    assert message[0].tail == ' this is a placeholder error, with graphs'
 
     graph = diag.find("./xhtml:div[@class='gcc-directed-graph']", ns)
     assert graph is not None
index ff1c2f26185342dcdb947ca7d76c6f01f99324ed..845a7afed9f4c2ec9f304affe0099121fdd204b4 100644 (file)
@@ -25,4 +25,4 @@ def test_generated_html(html_tree):
     assert_tag(msg[1], 'a')
     assert msg[1].text == 'link'
     assert msg[1].get('href') == 'http://www.example.com'
-    assert msg[1].tail == '. '
+    assert msg[1].tail == '.'
index 63b80c98738f7a276884443669bd9771a6ab71e4..355c84baa9c1f6915890eee080f0f6b1ba766b19 100644 (file)
@@ -24,7 +24,7 @@ def test_result_graph(html_tree):
     assert message.attrib['id'] == 'gcc-diag-0-message'
 
     assert message[0].tag == make_tag('strong')
-    assert message[0].tail == ' this is a placeholder error, with graphs '
+    assert message[0].tail == ' this is a placeholder error, with graphs'
 
     graph = diag.find("./xhtml:div[@class='gcc-directed-graph']", ns)
     assert graph is not None