Gesperrte Einstellungen nicht überschreiben

Wer eine Einstellung ändert, liest die Einstellungsdatei jetzt an
derselben Stelle wie Schlüssel und Speicherstand. Ist sie gerade nicht
lesbar, etwa weil ein anderes Programm sie hält, bleibt sie unverändert,
statt nur mit dem neuen Wert überschrieben zu werden. Von einer
beschädigten Datei bleibt, was Godot lesen konnte. Ein neuer Test deckt
die gehaltene Datei ab. Der Parameter von set_player_name heißt jetzt
new_name, damit er die Methode player_name nicht verdeckt.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-10-01 21:23:49 +02:00
parent d5debc5bcb
commit 51cd4572a8
2 changed files with 44 additions and 9 deletions
+15
View File
@@ -174,3 +174,18 @@ func test_the_settings_are_kept() -> void:
check_eq(later.player_name(), "Ada", "name")
check_eq(later.last_address(), "192.168.1.20", "address")
TestFiles.remove_dir(directory)
func test_settings_that_cannot_be_read_right_now_are_not_overwritten() -> void:
var directory := TestFiles.temporary_dir("held-settings")
var store := SaveStore.new(directory)
store.set_player_name("Ada")
store.set_last_address("192.168.1.20")
var held := HeldFileStore.new(directory)
held.unreadable = SaveStore.SETTINGS_FILE
check_eq(held.player_name(), "", "nothing read for now")
held.set_player_name("Grace")
var later := SaveStore.new(directory)
check_eq(later.player_name(), "Ada", "the name on disk is the old one")
check_eq(later.last_address(), "192.168.1.20", "the address is kept")
TestFiles.remove_dir(directory)