v0.1.4-pre.015-fix.003
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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::<std::vec::Vec<&str>>(), targets.to_vec());
|
||||
assert_eq!(file.filter().domains().iter().map(String::as_str).collect::<std::vec::Vec<&str>>(), domains.to_vec());
|
||||
}
|
||||
|
||||
fn fixture_engine() -> ksp_core_lib::Result<crate::ConfigDocumentEngine> {
|
||||
let workspace = workspace_root();
|
||||
let fixture_root = std::path::PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("unit_tests/fixtures");
|
||||
|
||||
65
deltas/0.1.4/pre.015-fix.003.md
Normal file
65
deltas/0.1.4/pre.015-fix.003.md
Normal file
@@ -0,0 +1,65 @@
|
||||
<!-- file: deltas/0.1.4/pre.015-fix.003.md -->
|
||||
<!-- version: 1 -->
|
||||
|
||||
# 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.
|
||||
Reference in New Issue
Block a user