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:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user