# Verify that basics of HTML output work. # # For reference, we expect this textual output: # # PATH/missing-semicolon.c: In function ‘missing_semicolon’: # PATH/missing-semicolon.c:8:12: error: expected ‘;’ before ‘}’ token # 8 | return 42 /* { dg-error "expected ';' before '.' token" } */ # | ^ # | ; # 9 | } # | ~ from htmltest import * import pytest @pytest.fixture(scope='function', autouse=True) def html_tree(): return html_tree_from_env() def test_basics(html_tree): root = html_tree.getroot () assert root.tag == make_tag('html') head = root.find('xhtml:head', ns) assert head is not None title = head.find('xhtml:title', ns) assert title.text.endswith('gcc/testsuite/gcc.dg/html-output/missing-semicolon.c') 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-danger' assert diag.attrib['id'] == 'gcc-diag-0' icon = diag.find('xhtml:span', ns) assert icon.attrib['class'] == 'pficon pficon-error-circle-o' # The message line: message = diag.find("./xhtml:div[@class='gcc-message']", ns) assert message is not None # error: expected ';' before '}' token assert message[0].tag == make_tag('strong') assert message[0].text == 'error: ' assert message[0].tail == " expected '" assert message[1].tag == make_tag('span') assert message[1].attrib['class'] == 'gcc-quoted-text' assert message[1].text == ';' assert message[1].tail == "' before '" assert message[2].tag == make_tag('span') assert message[2].attrib['class'] == 'gcc-quoted-text' assert message[2].text == '}' assert message[2].tail == "' token" # Logical location logical_loc = diag.find("./xhtml:div[@id='logical-location']", ns) assert logical_loc is not None assert len(logical_loc) == 2 assert logical_loc[0].tag == make_tag('span') assert logical_loc[0].text == 'Function ' assert logical_loc[1].tag == make_tag('span') assert logical_loc[1].text == 'missing_semicolon' assert logical_loc[1].attrib['class'] == 'gcc-quoted-text' # Physical location file_ = diag.find("./xhtml:div[@id='file']", ns) assert file_ is not None assert len(file_) == 2 assert file_[0].tag == make_tag('span') assert file_[0].text == 'File ' assert file_[1].tag == make_tag('span') assert file_[1].text.endswith('gcc/testsuite/gcc.dg/html-output/missing-semicolon.c') line = diag.find("./xhtml:div[@id='line']", ns) assert line is not None assert len(line) == 2 assert line[0].tag == make_tag('span') assert line[0].text == 'Line ' assert line[1].tag == make_tag('span') assert line[1].text == '8' column = diag.find("./xhtml:div[@id='column']", ns) assert column is not None assert len(column) == 2 assert column[0].tag == make_tag('span') assert column[0].text == 'Column ' assert column[1].tag == make_tag('span') assert column[1].text == '12' # Suggested fix fix = diag.find("./xhtml:div[@id='suggested-fix']", ns) label = fix.find('xhtml:label', ns) assert label.text == "Suggested fix" pre = fix.find('xhtml:pre', ns) assert pre is not None assert pre.attrib['class'] == 'gcc-generated-patch' assert pre.text.startswith('--- ')