From 80123e9e27910ea076ec8cda1d488a2fb7955f4b Mon Sep 17 00:00:00 2001 From: altair823 Date: Thu, 30 Apr 2026 14:42:21 +0000 Subject: [PATCH] p1-3: pin reviewer probe inputs as regression tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The quality reviewer named three specific input probes for the C1/C2/ C3 fixes. Encode each as a verbatim test so future regressions on those exact inputs surface immediately: - probe_overflow: parse_blocks(b"# h\nbody\n", u32::MAX) → empty + Warning::ExtractFailed. - probe_list_escape: list with embedded code block → single List block, two items. - probe_empty_heading: `# \n# Real\nbody\n` → body's heading_path is `["Real"]`. Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/kb-parse-md/src/blocks.rs | 34 ++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/crates/kb-parse-md/src/blocks.rs b/crates/kb-parse-md/src/blocks.rs index a4d2ee4..93bdc17 100644 --- a/crates/kb-parse-md/src/blocks.rs +++ b/crates/kb-parse-md/src/blocks.rs @@ -1751,3 +1751,37 @@ mod tests { } } } + +#[cfg(test)] +mod reviewer_probes { + use super::*; + + #[test] + fn probe_overflow() { + let (b, w) = parse_blocks(b"# h\nbody\n", u32::MAX).unwrap(); + assert!(b.is_empty(), "expected empty blocks, got {}", b.len()); + assert_eq!(w.len(), 1); + assert_eq!(w[0].kind, WarningKind::ExtractFailed); + } + + #[test] + fn probe_list_escape() { + let body = b"- item\n\n \x60\x60\x60rust\n fn f(){}\n \x60\x60\x60\n\n- next\n"; + let (b, _) = parse_blocks(body, 0).unwrap(); + assert_eq!(b.len(), 1, "expected single list block, got {}", b.len()); + match &b[0].payload { + ParsedPayload::List { items, .. } => assert_eq!(items.len(), 2), + _ => panic!("expected list, got {:?}", b[0].payload), + } + } + + #[test] + fn probe_empty_heading() { + let (b, _) = parse_blocks(b"# \n# Real\nbody\n", 0).unwrap(); + let para = b + .iter() + .find(|x| matches!(x.payload, ParsedPayload::Paragraph { .. })) + .expect("paragraph present"); + assert_eq!(para.heading_path, vec!["Real".to_string()]); + } +}