Skip to content

Commit 6ca9790

Browse files
jacobbramleyAmanieu
authored andcommitted
Report missing features when skipping tests.
1 parent 5a748ec commit 6ca9790

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

crates/simd-test-macro/src/lib.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -82,16 +82,16 @@ pub fn simd_test(
8282
};
8383
let macro_test = Ident::new(macro_test, Span::call_site());
8484

85-
let mut cfg_target_features = TokenStream::new();
85+
let mut detect_missing_features = TokenStream::new();
8686
for feature in target_features {
8787
let q = quote_spanned! {
8888
proc_macro2::Span::call_site() =>
89-
#macro_test!(#feature) &&
89+
if !#macro_test!(#feature) {
90+
missing_features.push(#feature);
91+
}
9092
};
91-
q.to_tokens(&mut cfg_target_features);
93+
q.to_tokens(&mut detect_missing_features);
9294
}
93-
let q = quote! { true };
94-
q.to_tokens(&mut cfg_target_features);
9595

9696
let test_norun = std::env::var("STDSIMD_TEST_NORUN").is_ok();
9797
let maybe_ignore = if test_norun {
@@ -107,11 +107,13 @@ pub fn simd_test(
107107
#maybe_ignore
108108
#(#item_attrs)*
109109
fn #name() {
110-
if #force_test | (#cfg_target_features) {
110+
let mut missing_features = ::std::vec::Vec::new();
111+
#detect_missing_features
112+
if #force_test || missing_features.is_empty() {
111113
let v = unsafe { #name() };
112114
return v;
113115
} else {
114-
::stdarch_test::assert_skip_test_ok(stringify!(#name));
116+
::stdarch_test::assert_skip_test_ok(stringify!(#name), &missing_features);
115117
}
116118

117119
#[target_feature(enable = #enable_feature)]

crates/stdarch-test/src/lib.rs

+8-4
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,15 @@ pub fn assert(shim_addr: usize, fnname: &str, expected: &str) {
173173
}
174174
}
175175

176-
pub fn assert_skip_test_ok(name: &str) {
177-
if env::var("STDARCH_TEST_EVERYTHING").is_err() {
178-
return;
176+
pub fn assert_skip_test_ok(name: &str, missing_features: &[&str]) {
177+
println!("Skipping test `{name}` due to missing target features:");
178+
for feature in missing_features {
179+
println!(" - {feature}");
180+
}
181+
match env::var("STDARCH_TEST_EVERYTHING") {
182+
Ok(_) => panic!("skipped test `{name}` when it shouldn't be skipped"),
183+
Err(_) => println!("Set STDARCH_TEST_EVERYTHING to make this an error."),
179184
}
180-
panic!("skipped test `{name}` when it shouldn't be skipped");
181185
}
182186

183187
// See comment in `assert-instr-macro` crate for why this exists

0 commit comments

Comments
 (0)