// file: crates/ksp-config-lib/unit_tests/profile.rs // version: 1 #[test] fn committed_default_profile_resolves_globals_profile_and_provenance() { let engine = committed_engine(); let file_id = crate::ConfigFileId::new(crate::FILE_ID_STD_LOGGING); assert!(engine.is_ok(), "committed Config engine should be constructible: {engine:?}"); assert!(file_id.is_ok(), "logging file_id should be valid: {file_id:?}"); if let (std::result::Result::Ok(engine), std::result::Result::Ok(file_id)) = (engine, file_id) { let resolved = engine.load_resolved_profile(&file_id, std::option::Option::None); assert!(resolved.is_ok(), "default profile should resolve: {resolved:?}"); if let std::result::Result::Ok(resolved) = resolved { assert_eq!(resolved.profile_id(), "local_dev"); assert_eq!(resolved.selection_source(), super::ConfigProfileSelectionSource::DefaultProfile); assert_eq!(resolved.globals().get("logs_directory").and_then(serde_json::Value::as_str), std::option::Option::Some("${KSP_LOGS_DIRECTORY:-logs}")); assert_eq!(resolved.profile().get("default_filter").and_then(serde_json::Value::as_str), std::option::Option::Some("warn")); assert_eq!(resolved.effective().get("default_filter").and_then(serde_json::Value::as_str), std::option::Option::Some("warn")); assert_eq!(resolved.origin("logs_directory"), std::option::Option::Some(super::ConfigValueOrigin::Global)); assert_eq!(resolved.origin("default_filter"), std::option::Option::Some(super::ConfigValueOrigin::Profile)); assert!(!resolved.effective().contains_key("default_profile")); assert!(!resolved.effective().contains_key("profiles")); } } } #[test] fn explicit_profile_selection_is_distinct_from_default_selection() { let engine = committed_engine(); let file_id = crate::ConfigFileId::new(crate::FILE_ID_STD_LOGGING); assert!(engine.is_ok(), "committed Config engine should be constructible: {engine:?}"); assert!(file_id.is_ok(), "logging file_id should be valid: {file_id:?}"); if let (std::result::Result::Ok(engine), std::result::Result::Ok(file_id)) = (engine, file_id) { let resolved = engine.load_resolved_profile(&file_id, std::option::Option::Some("local_dev")); assert!(resolved.is_ok(), "explicit committed profile should resolve: {resolved:?}"); if let std::result::Result::Ok(resolved) = resolved { assert_eq!(resolved.profile_id(), "local_dev"); assert_eq!(resolved.selection_source(), super::ConfigProfileSelectionSource::Explicit); } } } #[test] fn unknown_explicit_profile_has_distinct_error_code() { let engine = committed_engine(); let file_id = crate::ConfigFileId::new(crate::FILE_ID_STD_LOGGING); assert!(engine.is_ok(), "committed Config engine should be constructible: {engine:?}"); assert!(file_id.is_ok(), "logging file_id should be valid: {file_id:?}"); if let (std::result::Result::Ok(engine), std::result::Result::Ok(file_id)) = (engine, file_id) { let result = engine.load_resolved_profile(&file_id, std::option::Option::Some("does-not-exist")); assert!(result.is_err(), "unknown explicit profile must be rejected: {result:?}"); if let std::result::Result::Err(error) = result { assert_eq!(error.code(), crate::ERROR_CODE_PROFILE_NOT_FOUND); } } } fn committed_engine() -> ksp_core_lib::Result { let workspace = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../.."); let bootstrap = crate::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 = crate::ConfigFileRegistry::defaults(); return match registry { std::result::Result::Ok(value) => std::result::Result::Ok(crate::ConfigDocumentEngine::new(bootstrap, value)), std::result::Result::Err(error) => std::result::Result::Err(error), }; }