2.4 KiB
Delta 0.1.3-pre.010-fix.001
Objectif
Corriger deux tests unitaires de pre.010 qui dépendaient à tort du répertoire courant du binaire de test pour retrouver les fichiers versionnés du workspace.
Le resolver environnemental, le parser .env, .env.example, les contrats publics et les dépendances restent inchangés.
Cause
Les tests :
committed_logging_profile_resolves_environment_fallback_without_changing_source_profile
env_example_inventory_contains_current_runtime_variable_with_preceding_comment
utilisaient respectivement :
config/
config/schemas/
.env.example
comme chemins relatifs au current working directory du processus de test. Cette hypothèse n'est pas un contrat Cargo fiable et différait déjà des tests document/profile existants, qui dérivent la racine du workspace depuis CARGO_MANIFEST_DIR.
Modifications
workspace.package.versionpasse de0.1.3-pre.10à0.1.3-pre.10.fix.1;- le header du
Cargo.tomlracine passe de52à53; crates/ksp-config-lib/unit_tests/environment.rspasse de la version de fichier1à2;- les deux tests concernés utilisent maintenant une fonction locale
workspace_root()basée sur :
env!("CARGO_MANIFEST_DIR")/../..
- le test du profil Logging ouvre donc les répertoires
config/etconfig/schemas/sous la racine du workspace ; - le test d'inventaire ouvre
.env.exampleviaDEFAULT_DOTENV_EXAMPLE_PATHsous cette même racine ; - aucun fichier runtime Config, schema,
.env.example, contrat public, resolver ou dépendance n'est modifié.
Validation utilisateur de pre.010
Avant ce fix :
cargo fmt --all OK
cargo check --workspace OK
cargo clippy --workspace --all-targets OK
cargo test --workspace 51/53 tests Config OK, 2 tests échoués
Les deux échecs sont ceux listés ci-dessus. Les autres tests, dont la priorité process > .env > fallback, le parser .env, les placeholders et les composites, passent.
Validation attendue
cargo fmt --all
cargo check --workspace
cargo clippy --workspace --all-targets
cargo test --workspace
Le résultat attendu est que les 53 tests unitaires de ksp-config-lib passent, ainsi que les 7 tests d'API publique et l'ensemble du workspace.