#88: review — drop dead anchor branch, single marker scan in canary helper

This commit is contained in:
2026-08-11 13:32:14 +07:00
parent 78ce251b4d
commit 3396c50aac
+11 -14
View File
@@ -63,10 +63,11 @@ func TestSmokeLnwCommentBoundary(t *testing.T) {
if !lnwChapterRe.MatchString(body) { if !lnwChapterRe.MatchString(body) {
t.Fatalf("no chapter anchor in %d bytes — not a lightnovelworld Series page; not a marker failure, likely a Cloudflare challenge or a non-Series response", len(body)) t.Fatalf("no chapter anchor in %d bytes — not a lightnovelworld Series page; not a marker failure, likely a Cloudflare challenge or a non-Series response", len(body))
} }
markerIdx := strings.Index(body, lnwCommentMarker)
if failures := checkLnwCommentBoundary(body); len(failures) > 0 { if failures := checkLnwCommentBoundary(body); len(failures) > 0 {
t.Fatalf("%s (body %d bytes)", strings.Join(failures, "; "), len(body)) t.Fatalf("%s (body %d bytes)", strings.Join(failures, "; "), len(body))
} }
t.Logf("ok: %q once at byte %d, body %d bytes", lnwCommentMarker, strings.Index(body, lnwCommentMarker), len(body)) t.Logf("ok: %q once at byte %d, body %d bytes", lnwCommentMarker, markerIdx, len(body))
} }
// checkLnwCommentBoundary verifies the three marker assertions against a // checkLnwCommentBoundary verifies the three marker assertions against a
@@ -75,29 +76,25 @@ func TestSmokeLnwCommentBoundary(t *testing.T) {
// human-readable failure per broken assertion — with observed offsets and body // human-readable failure per broken assertion — with observed offsets and body
// length — and empty when the page is healthy. // length — and empty when the page is healthy.
func checkLnwCommentBoundary(body string) []string { func checkLnwCommentBoundary(body string) []string {
n := strings.Count(body, lnwCommentMarker)
if n == 0 {
return []string{fmt.Sprintf("%q occurs 0 times in %d bytes, want exactly 1", lnwCommentMarker, len(body))}
}
if n != 1 {
return []string{fmt.Sprintf("%q occurs %d times in %d bytes (first at byte %d), want exactly 1", lnwCommentMarker, n, len(body), strings.Index(body, lnwCommentMarker))}
}
markerIdx := strings.Index(body, lnwCommentMarker) markerIdx := strings.Index(body, lnwCommentMarker)
lastAnchor, before := -1, 0 switch n := strings.Count(body, lnwCommentMarker); {
case n == 0:
return []string{fmt.Sprintf("%q occurs 0 times in %d bytes, want exactly 1", lnwCommentMarker, len(body))}
case n != 1:
return []string{fmt.Sprintf("%q occurs %d times in %d bytes (first at byte %d), want exactly 1", lnwCommentMarker, n, len(body), markerIdx)}
}
lastAnchor, anchorsBefore := -1, 0
for _, m := range lnwChapterRe.FindAllStringIndex(body, -1) { for _, m := range lnwChapterRe.FindAllStringIndex(body, -1) {
if m[0] < markerIdx { if m[0] < markerIdx {
before++ anchorsBefore++
} }
lastAnchor = m[0] lastAnchor = m[0]
} }
if lastAnchor == -1 {
return []string{fmt.Sprintf("no chapter anchor in the %d-byte body", len(body))}
}
var failures []string var failures []string
if lastAnchor >= markerIdx { if lastAnchor >= markerIdx {
failures = append(failures, fmt.Sprintf("last chapter anchor at byte %d does not precede the marker at byte %d", lastAnchor, markerIdx)) failures = append(failures, fmt.Sprintf("last chapter anchor at byte %d does not precede the marker at byte %d", lastAnchor, markerIdx))
} }
if before == 0 { if anchorsBefore == 0 {
failures = append(failures, fmt.Sprintf("no chapter anchor before the marker at byte %d — the truncated prefix the scan sees yields nothing", markerIdx)) failures = append(failures, fmt.Sprintf("no chapter anchor before the marker at byte %d — the truncated prefix the scan sees yields nothing", markerIdx))
} }
return failures return failures