blob: e6038341ba966730028ce969f6b787270f236a29 [file] [log] [blame] [edit]
//! Tidy check to ensure that tests inside 'tests/crashes' have a '@known-bug' directive.
use std::path::Path;
use crate::diagnostics::{CheckId, TidyCtx};
use crate::walk::*;
pub fn check(filepath: &Path, tidy_ctx: TidyCtx) {
let mut check = tidy_ctx.start_check(CheckId::new("known_bug").path(filepath));
walk(filepath, |path, _is_dir| filter_not_rust(path), &mut |entry, contents| {
let file: &Path = entry.path();
// files in "auxiliary" do not need to crash by themselves
let test_path_segments =
file.iter().map(|s| s.to_string_lossy().into()).collect::<Vec<String>>();
let test_path_segments_str =
test_path_segments.iter().map(|s| s.as_str()).collect::<Vec<&str>>();
if !matches!(
test_path_segments_str[..],
[.., "tests", "crashes", "auxiliary", _aux_file_rs]
) && !contents.lines().any(|line| line.starts_with("//@ known-bug: "))
{
check.error(format!(
"{} crash/ice test does not have a \"//@ known-bug: \" directive",
file.display()
));
}
});
}