Merge pull request #1017 from zeroclaw-labs/test/peripherals-unit-tests

test(peripherals): add unit tests for peripheral module configuration and listing
This commit is contained in:
Alex Gorevski 2026-02-19 16:17:07 -08:00 committed by GitHub
commit 7d945aea6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 73 additions and 1 deletions

View file

@ -7,7 +7,9 @@ use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::path::{Path, PathBuf};
use std::sync::{OnceLock, RwLock};
use tokio::fs::{self, File, OpenOptions};
use tokio::fs::{self, OpenOptions};
#[cfg(unix)]
use tokio::fs::File;
use tokio::io::AsyncWriteExt;
const SUPPORTED_PROXY_SERVICE_KEYS: &[&str] = &[

View file

@ -231,3 +231,73 @@ pub async fn create_peripheral_tools(config: &PeripheralsConfig) -> Result<Vec<B
pub async fn create_peripheral_tools(_config: &PeripheralsConfig) -> Result<Vec<Box<dyn Tool>>> {
Ok(Vec::new())
}
#[cfg(test)]
mod tests {
use super::*;
use crate::config::{PeripheralBoardConfig, PeripheralsConfig};
#[test]
fn list_configured_boards_when_disabled_returns_empty() {
let config = PeripheralsConfig {
enabled: false,
boards: vec![PeripheralBoardConfig {
board: "nucleo-f401re".into(),
transport: "serial".into(),
path: Some("/dev/ttyACM0".into()),
baud: 115_200,
}],
datasheet_dir: None,
};
let result = list_configured_boards(&config);
assert!(result.is_empty(), "disabled peripherals should return no boards");
}
#[test]
fn list_configured_boards_when_enabled_with_boards() {
let config = PeripheralsConfig {
enabled: true,
boards: vec![
PeripheralBoardConfig {
board: "nucleo-f401re".into(),
transport: "serial".into(),
path: Some("/dev/ttyACM0".into()),
baud: 115_200,
},
PeripheralBoardConfig {
board: "rpi-gpio".into(),
transport: "native".into(),
path: None,
baud: 115_200,
},
],
datasheet_dir: None,
};
let result = list_configured_boards(&config);
assert_eq!(result.len(), 2);
assert_eq!(result[0].board, "nucleo-f401re");
assert_eq!(result[1].board, "rpi-gpio");
}
#[test]
fn list_configured_boards_when_enabled_but_no_boards() {
let config = PeripheralsConfig {
enabled: true,
boards: vec![],
datasheet_dir: None,
};
let result = list_configured_boards(&config);
assert!(result.is_empty(), "enabled with no boards should return empty");
}
#[tokio::test]
async fn create_peripheral_tools_returns_empty_when_disabled() {
let config = PeripheralsConfig {
enabled: false,
boards: vec![],
datasheet_dir: None,
};
let tools = create_peripheral_tools(&config).await.unwrap();
assert!(tools.is_empty(), "disabled peripherals should produce no tools");
}
}