diff --git a/Cargo.toml b/Cargo.toml index 54b6cad..ad185cd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,7 +6,7 @@ resolver = "3" members = ["crates/ksp-app-config-desk", "crates/ksp-config-lib", "crates/ksp-core-lib", "crates/ksp-logging-lib"] [workspace.package] -version = "0.1.4-pre.15.fix.2" +version = "0.1.4-pre.15.fix.3" edition = "2024" license = "MIT" repository = "https://git.sasedev.com/Sasedev/khadhroony-solana-project" diff --git a/crates/ksp-app-config-desk/unit_tests/logging_editor.rs b/crates/ksp-app-config-desk/unit_tests/logging_editor.rs index 7ca94dc..1695243 100644 --- a/crates/ksp-app-config-desk/unit_tests/logging_editor.rs +++ b/crates/ksp-app-config-desk/unit_tests/logging_editor.rs @@ -1,5 +1,5 @@ // file: crates/ksp-app-config-desk/unit_tests/logging_editor.rs -// version: 3 +// version: 4 #[test] fn committed_logging_document_maps_complete_read_only_editor_contract() { @@ -157,7 +157,8 @@ fn runtime_failure_rollback_restores_previous_logging_source() { if let std::result::Result::Err(error) = rolled_back { assert_eq!(error.code(), ksp_logging_lib::ERROR_CODE_RELOAD_FAILED); } - assert_eq!(std::fs::read_to_string(root.join("config/std.logging.json")).ok(), std::option::Option::Some(previous)); + let restored = std::fs::read_to_string(root.join("config").join(ksp_config_lib::DEFAULT_STD_LOGGING_FILENAME)).ok(); + assert_eq!(restored, std::option::Option::Some(previous)); } } let cleanup = std::fs::remove_dir_all(root.as_path()); @@ -181,10 +182,10 @@ fn rollback_fixture() -> ksp_core_lib::Result<(std::path::PathBuf, ksp_config_li return std::result::Result::Err(ksp_core_lib::Error::new(crate::ERROR_CODE_APP_STATE_INVALID, "cannot create rollback fixture").with_source(error)); } let workspace = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("../.."); - let source_config = workspace.join("config/std.logging.json"); - let source_schema = workspace.join("config/schemas/std.logging.schema.json"); - let config_path = config_root.join("std.logging.json"); - let schema_path = schema_root.join("std.logging.schema.json"); + let source_config = workspace.join("config").join(ksp_config_lib::DEFAULT_STD_LOGGING_FILENAME); + let source_schema = workspace.join("config/schemas").join(ksp_config_lib::DEFAULT_STD_LOGGING_SCHEMA_FILENAME); + let config_path = config_root.join(ksp_config_lib::DEFAULT_STD_LOGGING_FILENAME); + let schema_path = schema_root.join(ksp_config_lib::DEFAULT_STD_LOGGING_SCHEMA_FILENAME); let copied = std::fs::copy(source_config.as_path(), config_path.as_path()); if let std::result::Result::Err(error) = copied { return std::result::Result::Err( diff --git a/crates/ksp-config-lib/unit_tests/logging.rs b/crates/ksp-config-lib/unit_tests/logging.rs index 0abffb6..94a6c6d 100644 --- a/crates/ksp-config-lib/unit_tests/logging.rs +++ b/crates/ksp-config-lib/unit_tests/logging.rs @@ -1,5 +1,5 @@ // file: crates/ksp-config-lib/unit_tests/logging.rs -// version: 3 +// version: 4 #[test] fn fixture_logging_profile_maps_complete_runtime_contract() { @@ -316,29 +316,6 @@ fn resolved_logging_debug_uses_safe_effective_view() { } } -fn assert_file( - file: &ksp_logging_lib::FileSettings, - output_id: &str, - directory: &std::path::Path, - file_name: &str, - rotation: ksp_logging_lib::FileRotation, - format: ksp_logging_lib::LogFormat, - level: ksp_logging_lib::LogFilterLevel, - targets: &[&str], - domains: &[&str], -) { - assert_eq!(file.output_id(), output_id); - assert!(file.enabled()); - assert_eq!(file.directory(), directory); - assert_eq!(file.file_name_prefix(), file_name); - assert_eq!(file.rotation(), rotation); - assert_eq!(file.format(), format); - assert!(!file.ansi()); - assert_eq!(file.filter().level(), level); - assert_eq!(file.filter().targets().iter().map(String::as_str).collect::>(), targets.to_vec()); - assert_eq!(file.filter().domains().iter().map(String::as_str).collect::>(), domains.to_vec()); -} - fn fixture_engine() -> ksp_core_lib::Result { let workspace = workspace_root(); let fixture_root = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("unit_tests/fixtures"); diff --git a/deltas/0.1.4/pre.015-fix.003.md b/deltas/0.1.4/pre.015-fix.003.md new file mode 100644 index 0000000..7811843 --- /dev/null +++ b/deltas/0.1.4/pre.015-fix.003.md @@ -0,0 +1,65 @@ + + + +# Delta `0.1.4-pre.015-fix.003` — nettoyage Clippy et ownership des fixtures Logging + +## Statut + +Correctif de `0.1.4-pre.015-fix.002` livré pour validation locale. + +Le hot reload Logging introduit par `fix.002` est conservé sans modification fonctionnelle. La validation locale montre des générations runtime successives et l'utilisateur constate que le basculement console paraît fonctionner. + +Deux défauts de qualité empêchent néanmoins de considérer `fix.002` comme propre : + +1. `cargo clippy --workspace --all-targets` signale un helper `assert_file` devenu inutilisé après l'isolation des fixtures Logging ; +2. l'audit ownership détecte dans `ksp-app-config-desk/unit_tests/logging_editor.rs` des noms physiques Config (`std.logging.json` / `std.logging.schema.json`) écrits en dur dans la fixture de rollback. + +## Correction Clippy + +Le helper `assert_file` devenu orphelin est supprimé de `ksp-config-lib/unit_tests/logging.rs`. + +Aucun `#[allow(dead_code)]` n'est ajouté : le test reste nettoyé plutôt que de masquer le warning. + +## Correction ownership + +La fixture de rollback de Config Desk ne connaît plus les noms physiques du document Logging et de son schéma. + +Elle utilise désormais exclusivement les constantes publiques de `ksp-config-lib` : + +```text +DEFAULT_STD_LOGGING_FILENAME +DEFAULT_STD_LOGGING_SCHEMA_FILENAME +``` + +Le test continue donc à construire son répertoire temporaire et à vérifier le rollback source, mais la propriété des noms physiques reste dans Config. + +`config/std.logging.json` n'est pas livré par ce correctif et la configuration locale éditée pendant les essais n'est pas remplacée. + +## Hot reload + +Aucun changement de logique n'est apporté à la transaction `Sauvegarder et appliquer` de `fix.002` : + +- persistence Config ; +- résolution effective ; +- `ksp_logging_lib::reinitialize()` ; +- rollback source si l'application runtime échoue ; +- incrément de `logging_generation` seulement après succès. + +## Version technique + +```text +0.1.4-pre.15.fix.3 +``` + +## Validation attendue + +```bash +cargo fmt --all +cargo check --workspace +cargo clippy --workspace --all-targets +cargo test -p ksp-app-config-desk +cargo test -p ksp-config-lib +cargo tauri dev -c crates/ksp-app-config-desk/tauri.conf.json +``` + +Résultat attendu : aucun warning Clippy et `5/5` tests ownership.