use std::env;
use std::thread;
fn test_foo_always_missing() {
insta::assert_debug_snapshot!(42);
}
fn foo_always_missing() {
insta::assert_debug_snapshot!(42);
}
#[test]
fn test_clash_detection() {
let old_update_value = env::var("INSTA_UPDATE");
let old_force_pass_value = env::var("INSTA_FORCE_PASS");
env::set_var("INSTA_UPDATE", "no");
env::set_var("INSTA_FORCE_PASS", "0");
let err1 = thread::Builder::new()
.spawn(|| {
test_foo_always_missing();
})
.unwrap()
.join()
.unwrap_err();
let err2 = thread::Builder::new()
.spawn(|| {
foo_always_missing();
})
.unwrap()
.join()
.unwrap_err();
if let Ok(value) = old_update_value {
env::set_var("INSTA_UPDATE", value);
} else {
env::remove_var("INSTA_UPDATE");
}
if let Ok(value) = old_force_pass_value {
env::set_var("INSTA_FORCE_PASS", value);
} else {
env::remove_var("INSTA_FORCE_PASS");
}
let s1 = err1.downcast_ref::<String>().unwrap();
let s2 = err2.downcast_ref::<String>().unwrap();
let mut values = vec![s1.as_str(), s2.as_str()];
values.sort();
assert_eq!(&values[..], &vec![
"Insta snapshot name clash detected between \'foo_always_missing\' and \'test_foo_always_missing\' in \'test_clash_detection\'. Rename one function.",
"snapshot assertion for \'foo_always_missing\' failed in line 5",
][..]);
}