use crate::doctor::types::Check;
pub mod amd;
pub mod apple;
pub mod container;
pub mod env;
pub mod furiosa;
pub mod gaudi;
pub mod level_zero;
pub mod network;
pub mod nvidia;
pub mod platform;
pub mod privileges;
pub mod rebellions;
pub mod tenstorrent;
pub mod tpu;
pub mod windows;
pub fn all() -> Vec<&'static Check> {
let mut v: Vec<&'static Check> = Vec::new();
v.extend(platform::checks());
v.extend(privileges::checks());
v.extend(container::checks());
v.extend(nvidia::checks());
v.extend(amd::checks());
v.extend(apple::checks());
v.extend(gaudi::checks());
v.extend(tpu::checks());
v.extend(tenstorrent::checks());
v.extend(rebellions::checks());
v.extend(furiosa::checks());
v.extend(level_zero::checks());
v.extend(windows::checks());
v.extend(env::checks());
v.extend(network::checks());
v
}
#[cfg(test)]
mod tests {
use super::*;
use std::collections::HashSet;
#[test]
fn check_ids_are_unique() {
let ids: Vec<&str> = all().iter().map(|c| c.id).collect();
let unique: HashSet<&str> = ids.iter().copied().collect();
assert_eq!(ids.len(), unique.len(), "duplicate check IDs: {ids:?}");
}
#[test]
fn check_ids_follow_dotted_convention() {
for c in all() {
assert!(
c.id.contains('.'),
"check id {:?} must contain a dot separator",
c.id
);
}
}
}