pub(crate) fn strip_line_comment(line: &str) -> &str {
let b = line.as_bytes();
let mut i = 0;
let mut in_str = false;
let mut in_char = false;
while i < b.len() {
match b[i] {
b'\\' if in_str || in_char => {
i += 2;
continue;
}
b'"' if !in_char => in_str = !in_str,
b'\'' if !in_str => {
let looks_like_char = b.get(i + 1) == Some(&b'\\')
|| (b.get(i + 2) == Some(&b'\'') && b.get(i + 1).is_some());
if in_char || looks_like_char {
in_char = !in_char;
}
}
b'/' if !in_str && !in_char && b.get(i + 1) == Some(&b'/') => {
return &line[..i];
}
_ => {}
}
i += 1;
}
line
}
pub(crate) fn source_files() -> Vec<(String, String)> {
fn walk(dir: &std::path::Path, out: &mut Vec<(String, String)>) {
let Ok(entries) = std::fs::read_dir(dir) else {
return;
};
for e in entries.flatten() {
let p = e.path();
if p.is_dir() {
walk(&p, out);
} else if p.extension().is_some_and(|x| x == "rs") {
if let Ok(s) = std::fs::read_to_string(&p) {
out.push((p.to_string_lossy().into_owned(), s));
}
}
}
}
let mut out = Vec::new();
walk(std::path::Path::new("src"), &mut out);
assert!(
out.len() > 50,
"source walk found only {} files — the walk is broken, and a guard \
over nothing passes vacuously",
out.len()
);
out
}
pub(crate) fn find_in_production(needle: &str) -> Vec<String> {
let mut hits = Vec::new();
for (path, text) in source_files() {
if is_test_path(&path) {
continue;
}
for (n, line) in text.lines().enumerate() {
if strip_line_comment(line).contains(needle) {
hits.push(format!("{path}:{}", n + 1));
}
}
}
hits
}
pub(crate) fn is_test_path(path: &str) -> bool {
path.contains("/tests/") || path.ends_with("/tests.rs") || path.ends_with("tests.rs")
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn a_url_literal_does_not_truncate_the_line() {
let line = r#" Some(format!("https://{}", host)) "#;
assert_eq!(
strip_line_comment(line),
line,
"a `//` inside a string literal is not a comment"
);
}
#[test]
fn a_real_comment_is_stripped() {
assert_eq!(strip_line_comment("let x = 1; // set x"), "let x = 1; ");
assert_eq!(strip_line_comment("// whole line"), "");
}
#[test]
fn code_after_a_url_literal_survives() {
let line = r#"let u = "https://x"; let c = arboard::Clipboard::new();"#;
assert!(
strip_line_comment(line).contains("arboard::Clipboard"),
"code after a URL literal must remain visible to the guards"
);
}
#[test]
fn a_comment_after_a_literal_is_still_stripped() {
let line = r#"let u = "https://x"; // trailing note"#;
let code = strip_line_comment(line);
assert!(code.contains("https://x"));
assert!(!code.contains("trailing note"));
}
#[test]
fn escaped_quotes_and_lifetimes_do_not_confuse_it() {
let line = r#"let s = "a \" b"; // c"#;
assert!(!strip_line_comment(line).contains("c"));
let lt = "fn f<'a>(x: &'a str) -> &'a str { x } // note";
let code = strip_line_comment(lt);
assert!(code.contains("&'a str"), "a lifetime is not a char literal");
assert!(!code.contains("note"));
}
#[test]
fn the_walk_finds_the_tree() {
let files = source_files();
assert!(files.iter().any(|(p, _)| p.ends_with("util.rs")));
}
#[test]
fn the_detector_finds_something_that_is_there() {
let hits = find_in_production("arboard::");
assert!(
!hits.is_empty(),
"the detector found no `arboard::` anywhere — it is not detecting"
);
assert!(
hits.iter().all(|h| !h.contains("/tests/")),
"test sources must be excluded: {hits:?}"
);
}
#[test]
fn the_detector_finds_nothing_that_is_not_there() {
assert!(find_in_production("ThisIdentifierDoesNotExistAnywhere").is_empty());
}
#[test]
fn test_paths_are_recognised() {
assert!(is_test_path("src/app/tests/safety.rs"));
assert!(is_test_path("src/app/tests.rs"));
assert!(!is_test_path("src/app/safety.rs"));
assert!(!is_test_path("src/util.rs"));
}
}