Zwei-Instanzen-Test unabhängig von der Startzeit, Bot endet immer
Die Uhr des Hosts wartet jetzt auf den Gast. So kann ein langsamer Start des zweiten Prozesses die Takte bis zum Vergleich nicht mehr verbrauchen. Der Bot endet auch dann, wenn er seinen Bericht nicht schreiben kann, und überlebt den Test nie. Ein leeres --storage= führt ihn nicht mehr in den Ordner des Spielers. Ein neuer Test prüft, dass der Bot ohne schreibbaren Bericht mit Exit-Code 1 endet. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
+13
-5
@@ -24,7 +24,9 @@ func _run() -> void:
|
||||
var report := {"error": "the host did not answer"}
|
||||
|
||||
var main: Node = load("res://main.tscn").instantiate()
|
||||
main.storage_dir = settings.get("--storage", "user://bot")
|
||||
# Never the player's own folder, even for an empty --storage=.
|
||||
var storage: String = settings.get("--storage", "")
|
||||
main.storage_dir = storage if not storage.is_empty() else "user://bot"
|
||||
main.command_line = PackedStringArray(["--join=" + settings.get("--join", ""), "--name=Bot"])
|
||||
root.add_child(main)
|
||||
|
||||
@@ -50,10 +52,16 @@ func _run() -> void:
|
||||
}
|
||||
break
|
||||
|
||||
var file := FileAccess.open(settings.get("--out", "user://bot.json"), FileAccess.WRITE)
|
||||
file.store_string(JSON.stringify(report))
|
||||
file.close()
|
||||
# The bot ends in every case, even if the report cannot be written, so that
|
||||
# it never outlives the test that started it.
|
||||
var path: String = settings.get("--out", "user://bot.json")
|
||||
var file := FileAccess.open(path, FileAccess.WRITE)
|
||||
if file == null:
|
||||
push_error("the report cannot be written to %s: %s" % [path, error_string(FileAccess.get_open_error())])
|
||||
else:
|
||||
file.store_string(JSON.stringify(report))
|
||||
file.close()
|
||||
main.notification(Node.NOTIFICATION_WM_CLOSE_REQUEST)
|
||||
root.remove_child(main)
|
||||
main.free()
|
||||
quit(0 if not report.has("error") else 1)
|
||||
quit(0 if file != null and not report.has("error") else 1)
|
||||
|
||||
Reference in New Issue
Block a user