v0.1.4-pre.014
This commit is contained in:
64
crates/ksp-app-config-desk/unit_tests/logging_editor.rs
Normal file
64
crates/ksp-app-config-desk/unit_tests/logging_editor.rs
Normal file
@@ -0,0 +1,64 @@
|
||||
// file: crates/ksp-app-config-desk/unit_tests/logging_editor.rs
|
||||
// version: 1
|
||||
|
||||
#[test]
|
||||
fn committed_logging_document_maps_complete_read_only_editor_contract() {
|
||||
let management = committed_management();
|
||||
assert!(management.is_ok(), "committed management should construct: {management:?}");
|
||||
if let std::result::Result::Ok(management) = management {
|
||||
let document = super::document_from_management(&management);
|
||||
assert!(document.is_ok(), "Logging editor document should load: {document:?}");
|
||||
if let std::result::Result::Ok(document) = document {
|
||||
assert_eq!(document.file_id, ksp_config_lib::FILE_ID_STD_LOGGING);
|
||||
assert_eq!(document.format_version, 1);
|
||||
assert_eq!(document.logs_directory, "${KSP_LOGS_DIRECTORY:-logs}");
|
||||
assert_eq!(document.default_profile, "local_dev");
|
||||
assert_eq!(document.profiles.len(), 1);
|
||||
let profile = &document.profiles[0];
|
||||
assert_eq!(profile.profile_id, "local_dev");
|
||||
assert_eq!(profile.default_filter, "warn");
|
||||
assert_eq!(profile.span_events, "new_and_close");
|
||||
assert!(profile.console.enabled);
|
||||
assert_eq!(profile.console.output, "stderr");
|
||||
assert_eq!(profile.console.format, "compact");
|
||||
assert_eq!(profile.console.filter.level, "debug");
|
||||
assert_eq!(profile.console.filter.targets, std::vec!["*".to_owned()]);
|
||||
assert_eq!(profile.console.filter.domains, std::vec!["*".to_owned()]);
|
||||
assert_eq!(profile.files.len(), 2);
|
||||
assert_eq!(profile.files[0].output_id, "file.all.debug");
|
||||
assert_eq!(profile.files[0].filter.targets, std::vec!["*".to_owned()]);
|
||||
assert_eq!(profile.files[0].filter.domains, std::vec!["*".to_owned()]);
|
||||
assert_eq!(profile.target_filters.len(), 3);
|
||||
assert_eq!(profile.target_filters[2].target_prefix, "ksp-app-config-desk");
|
||||
assert_eq!(profile.target_filters[2].level, "debug");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn logging_editor_mapping_preserves_multiple_targets_and_domains() {
|
||||
let filter = ksp_config_lib::LoggingOutputFilterConfig::new(
|
||||
"trace",
|
||||
std::vec!["ksp-config-lib".to_owned(), "ksp-app-config-desk".to_owned()],
|
||||
std::vec!["config".to_owned(), "frontend".to_owned()],
|
||||
);
|
||||
let mapped = super::project_output_filter(&filter);
|
||||
assert_eq!(mapped.level, "trace");
|
||||
assert_eq!(mapped.targets, std::vec!["ksp-config-lib".to_owned(), "ksp-app-config-desk".to_owned()]);
|
||||
assert_eq!(mapped.domains, std::vec!["config".to_owned(), "frontend".to_owned()]);
|
||||
}
|
||||
|
||||
fn committed_management() -> ksp_core_lib::Result<ksp_config_lib::ConfigManagement> {
|
||||
let workspace = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../..");
|
||||
let bootstrap = ksp_config_lib::ConfigBootstrapOptions::from_paths(workspace.join("config"), workspace.join("config/schemas"));
|
||||
let bootstrap = match bootstrap {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
let registry = ksp_config_lib::ConfigFileRegistry::defaults();
|
||||
let registry = match registry {
|
||||
std::result::Result::Ok(value) => value,
|
||||
std::result::Result::Err(error) => return std::result::Result::Err(error),
|
||||
};
|
||||
return std::result::Result::Ok(ksp_config_lib::ConfigManagement::new(ksp_config_lib::ConfigDocumentEngine::new(bootstrap, registry)));
|
||||
}
|
||||
Reference in New Issue
Block a user