use super::*;
#[test]
fn a_marked_summary_refuses_composition_naming_the_path() {
let wt = TempDir::new().unwrap();
write(
wt.path(),
"summary/001.md",
b"fine\n<<<<<<< HEAD\nours\n=======\ntheirs\n>>>>>>> compactor\n",
);
let r = rules(&[], &["summary/**"], 100, OverflowPolicy::Drop);
let err = compose(wt.path(), Some(&r)).unwrap_err();
assert!(matches!(
&err,
Error::SummaryConflictMarkers { path } if path == "summary/001.md"
));
assert!(err.to_string().contains("summary/001.md"));
}
#[test]
fn a_pinned_marked_summary_is_refused_too() {
let wt = TempDir::new().unwrap();
write(wt.path(), "summary/001.md", b">>>>>>> theirs\n");
let r = rules(&["summary/**"], &[], 100, OverflowPolicy::Drop);
assert!(matches!(
compose(wt.path(), Some(&r)).unwrap_err(),
Error::SummaryConflictMarkers { .. }
));
}
#[test]
fn a_bare_setext_underline_in_a_summary_composes() {
let wt = TempDir::new().unwrap();
write(wt.path(), "summary/001.md", b"Title\n=======\nbody\n");
let r = rules(&[], &["summary/**"], 100, OverflowPolicy::Drop);
let out = compose(wt.path(), Some(&r)).unwrap();
assert_eq!(paths(&out), vec!["summary/001.md"]);
}
#[test]
fn quoted_marker_text_mid_line_in_a_summary_composes() {
let wt = TempDir::new().unwrap();
write(
wt.path(),
"summary/001.md",
b"the diff showed `<<<<<<< HEAD` there\n >>>>>>> quoted\n",
);
let r = rules(&[], &["summary/**"], 100, OverflowPolicy::Drop);
let out = compose(wt.path(), Some(&r)).unwrap();
assert_eq!(paths(&out), vec!["summary/001.md"]);
}
#[test]
fn marker_lines_outside_summary_compose_unguarded() {
let wt = TempDir::new().unwrap();
write(
wt.path(),
"skills/git/SKILL.md",
b"<<<<<<< HEAD\n=======\n>>>>>>> other\n",
);
let r = rules(&[], &["skills/**"], 100, OverflowPolicy::Drop);
let out = compose(wt.path(), Some(&r)).unwrap();
assert_eq!(paths(&out), vec!["skills/git/SKILL.md"]);
}