108 lines
2.4 KiB
Markdown
108 lines
2.4 KiB
Markdown
<!-- file: deltas/0.2.5/pre.006-fix.001.md -->
|
|
<!-- version: 1 -->
|
|
|
|
# Delta `0.2.5-pre.006-fix.001` — alignement des tests de persistence sur le contrat Password
|
|
|
|
## Base requise
|
|
|
|
```text
|
|
livraison : 0.2.5-pre.006
|
|
workspace.package.version = "0.2.5-pre.6"
|
|
```
|
|
|
|
## Motif
|
|
|
|
Les validations opérateur de `pre.006` donnent :
|
|
|
|
```text
|
|
cargo fmt --all OK
|
|
cargo check --workspace OK
|
|
cargo clippy --workspace --all-targets ECHEC dans les tests Wallet
|
|
```
|
|
|
|
Les nouveaux tests de persistence et de surface publique construisaient `ViewPassword` et `OwnerPassword` comme si leurs constructeurs avaient le contrat historique/hypothétique :
|
|
|
|
```rust
|
|
Password::new("...").expect("...")
|
|
```
|
|
|
|
Or le contrat acquis de `pre.002+` est :
|
|
|
|
```rust
|
|
ViewPassword::new(String) -> ViewPassword
|
|
OwnerPassword::new(String) -> OwnerPassword
|
|
```
|
|
|
|
Les erreurs observées sont donc :
|
|
|
|
```text
|
|
E0308 : expected `String`, found `&str`
|
|
E0599 : no method named `expect` found for `ViewPassword` / `OwnerPassword`
|
|
```
|
|
|
|
Le code de production de `pre.006` compile ; l'incohérence est limitée aux nouveaux tests.
|
|
|
|
## Correction
|
|
|
|
Les cinq constructions fautives sont alignées sur le contrat public existant avec `std::string::String::from(...)` et sans `.expect(...)` sur les wrappers Password.
|
|
|
|
Exemple :
|
|
|
|
```rust
|
|
let owner_password = crate::OwnerPassword::new(std::string::String::from("pre006-owner-password"));
|
|
```
|
|
|
|
Le correctif ne modifie pas :
|
|
|
|
- `ViewPassword` ou `OwnerPassword` ;
|
|
- les règles de validation/password ;
|
|
- la persistence no-clobber ;
|
|
- le wire `.kspwallet` V1 ;
|
|
- les paramètres ou primitives cryptographiques ;
|
|
- les dépendances ;
|
|
- les API fichier introduites par `pre.006`.
|
|
|
|
## Version Cargo
|
|
|
|
Le correctif modifie des tests Rust participant au build :
|
|
|
|
```text
|
|
0.2.5-pre.6 -> 0.2.5-pre.6.fix.1
|
|
```
|
|
|
|
## Fichiers modifiés
|
|
|
|
```text
|
|
Cargo.toml
|
|
crates/ksp-wallet-lib/unit_tests/persistence.rs
|
|
crates/ksp-wallet-lib/tests/public_api.rs
|
|
```
|
|
|
|
## Fichiers ajoutés
|
|
|
|
```text
|
|
deltas/0.2.5/pre.006-fix.001.md
|
|
```
|
|
|
|
## Fichiers supprimés
|
|
|
|
Aucun.
|
|
|
|
## Validation attendue après application
|
|
|
|
```bash
|
|
cargo fmt --all
|
|
cargo check --workspace
|
|
cargo clippy --workspace --all-targets
|
|
cargo test -p ksp-wallet-lib
|
|
cargo test --workspace
|
|
```
|
|
|
|
Le `cargo tree` de `pre.006` n'est pas modifié par ce fix ; les résultats opérateur déjà obtenus pour `tempfile@3.27.0` restent valides.
|
|
|
|
## Commit attendu
|
|
|
|
```text
|
|
v0.2.5-pre.006-fix.001
|
|
```
|