boson_runtime/registry/
ext.rs1use boson_core::{BosonError, Result};
4
5use super::TaskDescriptor;
6use super::TaskRegistry;
7
8impl TaskRegistry {
9 pub fn get_or_err(&self, name: &str) -> Result<&'static TaskDescriptor> {
15 self.get(name)
16 .ok_or_else(|| BosonError::TaskNotFound(name.to_string()))
17 }
18
19 #[must_use]
21 pub fn sorted_task_names(&self) -> Vec<&str> {
22 let mut names = self.list();
23 names.sort_unstable();
24 names
25 }
26}
27
28#[cfg(test)]
29mod tests {
30 use super::*;
31
32 #[test]
33 fn empty_registry() {
34 let registry = TaskRegistry::new();
35 assert!(registry.is_empty());
36 assert!(registry.get("missing").is_none());
37 }
38
39 #[test]
40 fn auto_discover_runs() {
41 let _registry = TaskRegistry::auto_discover();
42 }
43
44 #[test]
45 fn get_or_err_not_found() {
46 let registry = TaskRegistry::new();
47 let err = registry.get_or_err("nonexistent").unwrap_err();
48 assert!(matches!(err, BosonError::TaskNotFound(_)));
49 }
50}