]> git.scottworley.com Git - pinch/commitdiff
Assert correct HTML document structure
authorScott Worley <scottworley@scottworley.com>
Sun, 14 Dec 2025 10:12:20 +0000 (02:12 -0800)
committerScott Worley <scottworley@scottworley.com>
Sun, 14 Dec 2025 10:12:20 +0000 (02:12 -0800)
25.11's typeshed has better dom type info.

pinch.py

index 989e08fd4f6769078290f749650fb7a6811ad397..c101dc333856953c1cae1f026c5630c79ef82bb1 100644 (file)
--- a/pinch.py
+++ b/pinch.py
@@ -293,14 +293,25 @@ def parse_channel(v: Verification, channel_html: str) \
     v.status(git_revision)
     v.ok()
     v.status('Verifying git commit label')
+    assert git_commit_node.previousSibling is not None
     v.result(git_commit_node.previousSibling.nodeValue == 'Git commit ')
 
     v.status('Parsing table')
     table: Dict[str, ChannelTableEntry] = {}
     for row in d.getElementsByTagName('tr')[1:]:
+        assert isinstance(
+            row.childNodes[0].firstChild, xml.dom.minidom.Element)
+        assert isinstance(
+            row.childNodes[0].firstChild.firstChild, xml.dom.minidom.Text)
         name = row.childNodes[0].firstChild.firstChild.nodeValue
+        assert name is not None
         url = row.childNodes[0].firstChild.getAttribute('href')
+        assert row.childNodes[1].firstChild is not None
+        assert row.childNodes[1].firstChild.nodeValue is not None
         size = int(row.childNodes[1].firstChild.nodeValue)
+        assert row.childNodes[2].firstChild is not None
+        assert row.childNodes[2].firstChild.firstChild is not None
+        assert row.childNodes[2].firstChild.firstChild.nodeValue is not None
         digest = Digest16(row.childNodes[2].firstChild.firstChild.nodeValue)
         table[name] = ChannelTableEntry(url=url, digest=digest, size=size)
     v.ok()