use slotgate::config::test_name_reader::TestNameReader;
#[test]
fn names_in_a_file_whose_attribute_precedes_a_struct_finds_none() {
let names = TestNameReader::names_in("#[test]\nstruct NotATest;\n");
assert!(names.is_empty(), "{names:?}");
}
#[test]
fn names_in_a_file_whose_attributes_stack_still_finds_the_test() {
let names = TestNameReader::names_in("#[test]\n#[serial]\nfn alpha() {}\n");
assert_eq!(names, ["alpha"]);
}
#[test]
fn names_in_a_file_with_a_non_harness_attribute_finds_none() {
let names = TestNameReader::names_in("#[cfg(test)]\nfn helper() {}\n");
assert!(names.is_empty(), "{names:?}");
}
#[test]
fn names_in_a_file_with_an_async_harness_finds_the_test() {
let names = TestNameReader::names_in("#[tokio::test]\nasync fn beta() {}\n");
assert_eq!(names, ["beta"]);
}
#[test]
fn names_in_a_file_with_no_harness_attributes_finds_none() {
let names = TestNameReader::names_in("pub mod widget_tests;\nfn helper() {}\n");
assert!(names.is_empty(), "{names:?}");
}
#[test]
fn names_in_a_file_with_several_tests_finds_them_in_order() {
let names = TestNameReader::names_in("#[test]\nfn alpha() {}\n\n#[test]\nfn beta() {}\n");
assert_eq!(names, ["alpha", "beta"]);
}