4.4 KiB
4.4 KiB
REL-SAV-ESSAIS : cas d'essai de la garde B+ pour la fiche de tests COMMUN-4 (2026-10-13)
Source : REL-SAV-SPEC.md § 7, corrigée d'après l'IMPL :
- en Development, l'exe réel s'appelle
Windows\LifePlay\Binaries\Win64\LifePlay.exe; - le Shipping n'a pas de journal (
UE_LOGvide, pas debUseLoggingInShipping).
Code : Source/LifePlay/LPSaveRelaunch.cpp (MD5 a0cd668771ff5893ed2867f24de1df3a), LPSaveRelaunch.h (f31173f606a8f63db762f2d8960509f8), LifePlay.cpp (3f7ffa30e0ef83fc87aec297f699eea9).
Avant l'essai (sans jeton UE)
- Présence du code dans l'exe.
Binaries\Win64\LifePlay.exedu build COMMUN-4 contient la chaîne UTF-16LEDossier de sauvegarde :. Commande :Select-String -Path <exe> -Pattern 'Dossier de sauvegarde' -Encoding Unicode, oustrings -el. - Relevé témoin.
Get-ChildItem -Recurse -Force <build>\Windows\LifePlay\Saved | Get-FileHash -Algorithm MD5est enregistré dans un.csvhors du build, comme ancien dossier Development. - Dossier d'essai.
D:\Game\LifePlay_Backup_5.5\REL\essai_userdirdoit être absent. - Processus.
Get-CimInstance Win32_Process -Filter "Name='LifePlay.exe'" | Select ProcessId, ParentProcessId, ExecutablePath, CommandLine. Le bootstrap estWindows\LifePlay.exeet l'exe réelWindows\LifePlay\Binaries\Win64\LifePlay.exe. - Fichier de réglage.
LPSaveLocation.iniva dans<build>\Windows\LifePlay\, en ASCII ou UTF-16 avec BOM (pas d'UTF-8 accentué : réserve R2). Contenu :
[SaveLocation]
SaveDir=D:\Game\LifePlay_Backup_5.5\REL\essai_userdir
Cas
| Cas | Montage | Attendu (PASS si tout est vrai) |
|---|---|---|
| E1 | Sans LPSaveLocation.ini, lancement normal |
Une seule instance de Binaries\Win64\LifePlay.exe. Saved reste à côté de l'exe (comportement actuel). Journal Saved\Logs\LifePlay.log : Dossier de sauvegarde : … (relance=non, source=inactif, motif=Development-sans-ini). |
| E2 | .ini posé, lancement normal, puis nouvelle partie, sauvegarde, quitter, relancer, Continuer, mods actifs |
Deux instances de Binaries\Win64\LifePlay.exe pendant le jeu. Le parent n'a pas -UserDir ; l'enfant a ParentProcessId = parent et une ligne qui finit par -UserDir="D:\Game\LifePlay_Backup_5.5\REL\essai_userdir". essai_userdir\Saved\{Logs,Config,SaveGames} est créé. Journal de l'enfant (essai_userdir\Saved\Logs\LifePlay.log) : relance=oui, source=ini, motif=-. Le relevé de l'ancien Saved est identique avant et après, journal compris (0 fichier créé ou modifié). Tout écart est rapporté avec le fichier et l'heure. La partie se recharge par Continuer. |
| E3 | E2, plus le lancement Windows\LifePlay.exe -ScriptStackOnWarnings -LPPersonsLog |
La ligne de l'enfant contient -ScriptStackOnWarnings -LPPersonsLog dans l'ordre, avant -UserDir=…. LogInit: Command Line: du journal de l'enfant les montre aussi. |
| E4 | E2, plus -UserDir="D:\Game\LifePlay_Backup_5.5\REL\essai_explicite" |
Une seule instance. Le dossier essai_explicite\Saved est utilisé. Journal : relance=non, source=-UserDir. |
| E5 | .ini avec SaveDir=relatif\x, puis SaveDir= vide |
Relance vers %LOCALAPPDATA%\LifePlay-Revival. Journal : source=defaut. Fermer le jeu au menu titre ; supprimer ensuite ce dossier d'essai seulement s'il est vide de sauvegardes, avec l'accord de l'utilisateur. |
| E6 | E2, plus -LPNoSaveRelaunch |
Une seule instance ; Saved reste à côté de l'exe. Journal : motif=desactive. |
| E7 | E2, sortie par le menu (Quit) | Aucune instance restante. Le code de sortie du bootstrap (Start-Process -Wait -PassThru puis .ExitCode) est égal à celui de l'enfant, soit 0. |
| E8 | E2, enfant tué (Stop-Process sur l'enfant) |
Le parent sort aussitôt, avec le code de l'enfant (≠ 0). Aucune instance restante. |
| E9 (Shipping, sur accord de Big Boss et de l'utilisateur) | Shipping sans .ini |
Relance vers %LOCALAPPDATA%\LifePlay-Revival\Saved (créé). Le relevé MD5 de %LOCALAPPDATA%\LifePlay (vraies sauvegardes, lecture seule) est identique avant et après. Une nouvelle partie démarre et Continuer fonctionne. Sans journal Shipping, la preuve vient de la ligne de commande et des dossiers. |
Verdict attendu
PASS si E1 à E8 sont conformes. Un écart dans l'ancien Saved en E2 est un FAIL de la garde : rapporter le fichier, l'heure et la ligne de journal. Les réserves R2 (UTF-8 accentué), R3 (redirection de la sortie standard non transmise à l'enfant) et R4 (racine X:\.) ne sont pas testées ici.