config_validation_test/
config_validation_test.rs

1//! 测试配置冲突检测
2use rat_logger::{LoggerBuilder, LevelFilter};
3use rat_logger::handler::term::TermConfig;
4use rat_logger::handler::file::FileProcessorConfig;
5use rat_logger::config::{FileConfig, FormatConfig, ColorConfig};
6
7fn main() {
8    println!("=== 配置冲突检测测试 ===\n");
9
10    // 测试1: TermConfig 颜色冲突
11    println!("1. 测试 TermConfig 颜色冲突:");
12    let invalid_term_config = TermConfig {
13        enable_color: false,  // 禁用颜色
14        color: Some(ColorConfig::default()),  // 但提供了颜色配置
15        ..Default::default()
16    };
17
18    match std::panic::catch_unwind(|| {
19        LoggerBuilder::new()
20            .with_level(LevelFilter::Debug)
21            .add_terminal_with_config(invalid_term_config)
22            .build()
23    }) {
24        Ok(_) => println!("   ❌ 错误: 应该检测到配置冲突但没有"),
25        Err(_) => println!("   ✅ 正确: 成功检测到颜色配置冲突"),
26    }
27
28    // 测试2: TermConfig 无效批量大小
29    println!("\n2. 测试 TermConfig 无效批量大小:");
30    let invalid_batch_config = TermConfig {
31        batch_size: 0,  // 无效的批量大小
32        ..Default::default()
33    };
34
35    match std::panic::catch_unwind(|| {
36        LoggerBuilder::new()
37            .with_level(LevelFilter::Debug)
38            .add_terminal_with_config(invalid_batch_config)
39            .build()
40    }) {
41        Ok(_) => println!("   ❌ 错误: 应该检测到批量大小错误但没有"),
42        Err(_) => println!("   ✅ 正确: 成功检测到批量大小错误"),
43    }
44
45    // 测试3: FileConfig 原始模式冲突
46    println!("\n3. 测试 FileConfig 原始模式冲突:");
47    let invalid_file_config = FileConfig {
48        is_raw: true,  // 原始模式
49        format: Some(FormatConfig::default()),  // 但提供了格式配置
50        ..Default::default()
51    };
52
53    let file_processor_config = FileProcessorConfig {
54        file_config: invalid_file_config,
55        ..Default::default()
56    };
57
58    match std::panic::catch_unwind(|| {
59        rat_logger::handler::file::FileProcessor::with_config(file_processor_config)
60    }) {
61        Ok(_) => println!("   ❌ 错误: 应该检测到原始模式冲突但没有"),
62        Err(_) => println!("   ✅ 正确: 成功检测到原始模式冲突"),
63    }
64
65    // 测试4: FileConfig 无效文件大小
66    println!("\n4. 测试 FileConfig 无效文件大小:");
67    let invalid_size_config = FileConfig {
68        max_file_size: 0,  // 无效的文件大小
69        ..Default::default()
70    };
71
72    let file_processor_config = FileProcessorConfig {
73        file_config: invalid_size_config,
74        ..Default::default()
75    };
76
77    match std::panic::catch_unwind(|| {
78        rat_logger::handler::file::FileProcessor::with_config(file_processor_config)
79    }) {
80        Ok(_) => println!("   ❌ 错误: 应该检测到文件大小错误但没有"),
81        Err(_) => println!("   ✅ 正确: 成功检测到文件大小错误"),
82    }
83
84    // 测试5: 正确配置应该工作
85    println!("\n5. 测试正确配置:");
86    let valid_term_config = TermConfig {
87        enable_color: true,
88        color: Some(ColorConfig::default()),
89        format: Some(FormatConfig::default()),
90        ..Default::default()
91    };
92
93    match std::panic::catch_unwind(|| {
94        LoggerBuilder::new()
95            .with_level(LevelFilter::Debug)
96            .add_terminal_with_config(valid_term_config)
97            .build()
98    }) {
99        Ok(_) => println!("   ✅ 正确: 有效配置正常工作"),
100        Err(_) => println!("   ❌ 错误: 有效配置被错误拒绝"),
101    }
102
103    println!("\n=== 配置冲突检测测试完成 ===");
104}