mirror of
https://github.com/danbulant/cushy
synced 2026-05-19 12:19:02 +00:00
39 lines
1.5 KiB
Rust
39 lines
1.5 KiB
Rust
/// This macro creates a unit test that calls the named function, and
|
|
/// potentially ignores a `NoAdapter` error.
|
|
///
|
|
/// # Background
|
|
///
|
|
/// On GitHub CI, it seems fairly common for the MacOS runners to be configured
|
|
/// in such a way that wgpu returns no adapters from a request with the default
|
|
/// settings. The default settings appear to imply as high of flexibility as
|
|
/// possible, and sometimes the runners succeed in returning an adapter.
|
|
///
|
|
/// Because of these spurious failures, this macro checks for the environment
|
|
/// variable `NO_ADAPTER`. If it is set to a value, a warning will be printed
|
|
/// instead of panicking.
|
|
#[macro_export]
|
|
macro_rules! adapter_required_test {
|
|
($name:ident) => {
|
|
#[test]
|
|
fn runs() {
|
|
let no_adapter_setting = std::env::var("NO_ADAPTER");
|
|
match ($name(), no_adapter_setting) {
|
|
(Ok(()), _) => {}
|
|
(Err(cushy::window::VirtualRecorderError::NoAdapter), Ok(no_adapter))
|
|
if !no_adapter.is_empty() =>
|
|
{
|
|
let prefix = match no_adapter.as_ref() {
|
|
"github-ci" => "::warning::",
|
|
_ => "",
|
|
};
|
|
println!(
|
|
"{prefix}Ignoring {}:{}: no graphics adapters available",
|
|
file!(),
|
|
stringify!($name)
|
|
);
|
|
}
|
|
(Err(err), _) => unreachable!("Error testing example: {err}"),
|
|
}
|
|
}
|
|
};
|
|
}
|