Speichern meldet Fehler und schützt unbrauchbare Stände
Lässt sich ein unbrauchbarer Spielstand nicht beiseitelegen, bleibt das Speichern gesperrt, bis ein Stand erfolgreich geladen wird; so wird er nie überschrieben. Ein gescheitertes automatisches Speichern zeigt SAVE_FAILED, und jedes gescheiterte Speichern wird protokolliert. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -58,3 +58,19 @@ func test_an_unusable_save_is_set_aside_and_a_new_world_starts() -> void:
|
||||
check_eq(main.hud.message(), tr("LOAD_FAILED"), "the player is told")
|
||||
_stop_main(main)
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
|
||||
func test_an_unusable_save_that_cannot_be_set_aside_is_never_overwritten() -> void:
|
||||
var directory := TestFiles.temporary_dir("stuck")
|
||||
var store := SaveStore.new(directory)
|
||||
store.write_save(PackedByteArray([1, 2, 3]))
|
||||
# A folder under the set-aside name keeps the unusable save from moving.
|
||||
DirAccess.make_dir_absolute(directory.path_join(SaveStore.SAVE_FILE + ".broken"))
|
||||
var main := _start_main(directory)
|
||||
await tree.process_frame
|
||||
check(main.session.is_running(), "a new world runs")
|
||||
check(not main.save_game(), "saving is refused")
|
||||
check_eq(store.read_save(), PackedByteArray([1, 2, 3]), "the unusable save is untouched")
|
||||
check_eq(main.hud.message(), tr("LOAD_FAILED"), "the player is told")
|
||||
_stop_main(main)
|
||||
TestFiles.remove_dir(directory)
|
||||
|
||||
Reference in New Issue
Block a user