diff --git a/html/comment_test.go b/html/comment_test.go
new file mode 100644
index 000000000..2c80bc748
--- /dev/null
+++ b/html/comment_test.go
@@ -0,0 +1,270 @@
+// Copyright 2023 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package html
+
+import (
+ "bytes"
+ "testing"
+)
+
+// TestComments exhaustively tests every 'interesting' N-byte string is
+// correctly parsed as a comment. N ranges from 4+1 to 4+suffixLen inclusive,
+// where 4 is the length of the "")
return
+ } else if c == '-' {
+ dashCount = 1
+ beginning = false
+ continue
}
}
}
@@ -645,6 +649,35 @@ func (z *Tokenizer) readComment() {
}
}
+func (z *Tokenizer) calculateAbruptCommentDataEnd() int {
+ raw := z.Raw()
+ const prefixLen = len("",
},
- // Comments.
+ // Comments. See also func TestComments.
{
"comment0",
"abcdef",
@@ -376,6 +376,41 @@ var tokenTests = []tokenTest{
"az",
"a$$z",
},
+ {
+ "comment16",
+ "az",
+ "a$$z",
+ },
+ {
+ "comment17",
+ "a",
+ },
+ {
+ "comment18",
+ "az",
+ "a$$z",
+ },
+ {
+ "comment19",
+ "a",
+ },
+ {
+ "comment20",
+ "az",
+ "a$$z",
+ },
+ {
+ "comment21",
+ "az",
+ "a$$z",
+ },
+ {
+ "comment22",
+ "az",
+ "a$$z",
+ },
// An attribute with a backslash.
{
"backslash",