diff --git a/ci/crates/pr-check/src/report.rs b/ci/crates/pr-check/src/report.rs
index 94a6df49d..9f828a764 100644
--- a/ci/crates/pr-check/src/report.rs
+++ b/ci/crates/pr-check/src/report.rs
@@ -153,11 +153,9 @@ mod tests {
..passing_report()
};
let reports = Reports::from_iter([report]);
- assert!(
- Comment::from(&reports)
- .to_string()
- .contains(&format!("Source: {source}\n"))
- );
+ let rendered = Comment::from(&reports).to_string();
+ let expected = format!("Source: {source}");
+ assert!(rendered.lines().any(|line| line == expected.as_str()));
}
}
diff --git a/ci/crates/render/src/lib.rs b/ci/crates/render/src/lib.rs
index d33045fc0..922b27f3e 100644
--- a/ci/crates/render/src/lib.rs
+++ b/ci/crates/render/src/lib.rs
@@ -188,20 +188,29 @@ mod tests {
collections: vec![],
};
let markdown = catalog.render()?;
+ let lines: Vec<_> = markdown.lines().collect();
assert_eq!(
- markdown
- .matches("Show Deprecated")
+ lines
+ .iter()
+ .filter(|line| line.trim() == "Show Deprecated")
+ .count(),
+ 3
+ );
+ assert_eq!(
+ lines
+ .iter()
+ .filter(|line| line.contains("[Active Tool](https://example.com)"))
.count(),
3
);
assert_eq!(
- markdown
- .matches("[Active Tool](https://example.com)")
+ lines
+ .iter()
+ .filter(|line| line.contains("**Deprecated Tool**"))
.count(),
3
);
- assert_eq!(markdown.matches("**Deprecated Tool**").count(), 3);
assert!(!markdown.contains("[Deprecated Tool]("));
assert!(!markdown.contains("Security",
] {
- let section = markdown.split_once(heading).context("Missing section")?.1;
+ let heading_position = lines
+ .iter()
+ .position(|line| line.trim() == heading)
+ .context("Missing section")?;
+ let section = &lines[heading_position + 1..];
let active_position = section
- .find("[Active Tool]")
+ .iter()
+ .position(|line| line.contains("[Active Tool]"))
.context("Missing active tool")?;
- let details_position = section.find("").context("Missing details")?;
+ let details_position = section
+ .iter()
+ .position(|line| line.trim() == "")
+ .context("Missing details")?;
assert!(active_position < details_position);
- let hidden = section[details_position..]
- .split_once(" ")
- .context("Unclosed details")?
- .0;
- assert!(hidden.contains("Show Deprecated
\n\n- **Deprecated Tool**"));
- assert!(hidden.contains(
- "[:information_source:]() :warning: :copyright:"
- ));
- assert!(!hidden.contains("[Active Tool]"));
+ let hidden = §ion[details_position..];
+ let hidden_end = hidden
+ .iter()
+ .position(|line| line.trim() == " ")
+ .context("Unclosed details")?;
+ let hidden = &hidden[..=hidden_end];
+ assert!(hidden.windows(3).any(|window| {
+ window[0].trim() == "Show Deprecated
"
+ && window[1].trim().is_empty()
+ && window[2].contains("- **Deprecated Tool**")
+ }));
+ assert!(hidden.iter().any(|line| {
+ line.contains("[:information_source:]() :warning: :copyright:")
+ }));
+ assert!(!hidden.iter().any(|line| line.contains("[Active Tool]")));
}
Ok(())
}
@@ -257,13 +280,21 @@ mod tests {
collections: vec![],
}
.render()?;
+ let lines: Vec<_> = markdown.lines().collect();
assert_eq!(
- markdown
- .matches("Show Deprecated
")
+ lines
+ .iter()
+ .filter(|line| line.trim() == "Show Deprecated
")
.count(),
1
);
- assert!(markdown.contains("\n\n- **Multi Tool** :warning: — Example tool\n\n "));
+ assert!(lines.windows(4).any(|window| {
+ window[0].trim().is_empty()
+ && window[1].contains("- **Multi Tool** :warning:")
+ && window[1].contains("Example tool")
+ && window[2].trim().is_empty()
+ && window[3].trim() == ""
+ }));
Ok(())
}