106 lines
No EOL
3.2 KiB
Rust
106 lines
No EOL
3.2 KiB
Rust
// Test support types and helpers for apt-ostree
|
|
|
|
#[derive(Debug, Clone)]
|
|
pub struct TestConfig {
|
|
pub test_name: String,
|
|
pub description: String,
|
|
pub should_pass: bool,
|
|
pub timeout_seconds: u64,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct TestResult {
|
|
pub test_name: String,
|
|
pub passed: bool,
|
|
pub error_message: Option<String>,
|
|
pub duration_ms: u64,
|
|
}
|
|
|
|
#[derive(Debug)]
|
|
pub struct TestSummary {
|
|
pub total_tests: usize,
|
|
pub passed_tests: usize,
|
|
pub failed_tests: usize,
|
|
pub total_duration_ms: u64,
|
|
pub results: Vec<TestResult>,
|
|
}
|
|
|
|
pub struct TestSuite {
|
|
pub configs: Vec<TestConfig>,
|
|
}
|
|
|
|
impl TestSuite {
|
|
pub fn new() -> Self {
|
|
Self {
|
|
configs: vec![
|
|
TestConfig {
|
|
test_name: "basic_apt_manager".to_string(),
|
|
description: "Test basic APT manager functionality".to_string(),
|
|
should_pass: true,
|
|
timeout_seconds: 30,
|
|
},
|
|
TestConfig {
|
|
test_name: "basic_ostree_manager".to_string(),
|
|
description: "Test basic OSTree manager functionality".to_string(),
|
|
should_pass: true,
|
|
timeout_seconds: 30,
|
|
},
|
|
TestConfig {
|
|
test_name: "dependency_resolution".to_string(),
|
|
description: "Test dependency resolution".to_string(),
|
|
should_pass: true,
|
|
timeout_seconds: 60,
|
|
},
|
|
TestConfig {
|
|
test_name: "script_execution".to_string(),
|
|
description: "Test script execution".to_string(),
|
|
should_pass: true,
|
|
timeout_seconds: 60,
|
|
},
|
|
TestConfig {
|
|
test_name: "filesystem_assembly".to_string(),
|
|
description: "Test filesystem assembly".to_string(),
|
|
should_pass: true,
|
|
timeout_seconds: 120,
|
|
},
|
|
],
|
|
}
|
|
}
|
|
|
|
pub async fn run_all_tests(&self) -> TestSummary {
|
|
let mut results = Vec::new();
|
|
let mut total_duration = 0;
|
|
|
|
for config in &self.configs {
|
|
let start_time = std::time::Instant::now();
|
|
let result = self.run_single_test(config).await;
|
|
let duration = start_time.elapsed().as_millis() as u64;
|
|
total_duration += duration;
|
|
|
|
results.push(TestResult {
|
|
test_name: config.test_name.clone(),
|
|
passed: result,
|
|
error_message: None,
|
|
duration_ms: duration,
|
|
});
|
|
}
|
|
|
|
let passed_tests = results.iter().filter(|r| r.passed).count();
|
|
let failed_tests = results.len() - passed_tests;
|
|
|
|
TestSummary {
|
|
total_tests: results.len(),
|
|
passed_tests,
|
|
failed_tests,
|
|
total_duration_ms: total_duration,
|
|
results,
|
|
}
|
|
}
|
|
|
|
async fn run_single_test(&self, config: &TestConfig) -> bool {
|
|
match config.test_name.as_str() {
|
|
// These should be implemented in the actual test modules
|
|
_ => false,
|
|
}
|
|
}
|
|
}
|