# Verify that metadata works in HTML output.
from htmltest import *
import pytest
@pytest.fixture(scope='function', autouse=True)
def html_tree():
return html_tree_from_env()
def test_metadata(html_tree):
root = html_tree.getroot ()
assert root.tag == make_tag('html')
body = root.find('xhtml:body', ns)
assert body is not None
diag_list = body.find('xhtml:div', ns)
assert diag_list is not None
assert diag_list.attrib['class'] == 'gcc-diagnostic-list'
diag = diag_list.find('xhtml:div', ns)
assert diag is not None
assert diag.attrib['class'] == 'alert alert-warning'
icon = diag.find('xhtml:span', ns)
assert icon.attrib['class'] == 'pficon pficon-warning-triangle-o'
message = diag.find("./xhtml:div[@class='gcc-message']", ns)
assert message.attrib['id'] == 'gcc-diag-0-message'
assert message[0].tag == make_tag('strong')
assert message[0].text == 'warning: '
assert message[0].tail == " never use '"
assert message[1].tag == make_tag('span')
assert message[1].attrib['class'] == 'gcc-quoted-text'
assert message[1].text == 'gets'
assert message[1].tail == "' "
metadata = message[2]
assert metadata.attrib['class'] == 'gcc-metadata'
assert metadata[0].tag == make_tag('span')
assert metadata[0].attrib['class'] == 'gcc-metadata-item'
assert metadata[0].text == '['
assert metadata[0][0].tag == make_tag('a')
assert metadata[0][0].attrib['href'] == 'https://cwe.mitre.org/data/definitions/242.html'
assert metadata[0][0].text == 'CWE-242'
assert metadata[0][0].tail == ']'
assert metadata[1].tag == make_tag('span')
assert metadata[1].attrib['class'] == 'gcc-metadata-item'
assert metadata[1].text == '['
assert metadata[1][0].tag == make_tag('a')
assert metadata[1][0].attrib['href'] == 'https://example.com/'
assert metadata[1][0].text == 'STR34-C'
assert metadata[1][0].tail == ']'
src = diag.find('xhtml:table', ns)
assert src.attrib['class'] == 'locus'
tbody = src.find('xhtml:tbody', ns)
assert tbody.attrib['class'] == 'line-span'
rows = tbody.findall('xhtml:tr', ns)
quoted_src_tr = rows[0]
assert_quoted_line(quoted_src_tr,
' 10', ' gets (buf);')
annotation_tr = rows[1]
assert_annotation_line(annotation_tr,
' ^~~~~~~~~~')