Testdateien: Löschen nur unter user://tests, Altlasten räumen, Wortlaut
user://tests liegt im echten Benutzerordner des Spiels, neben Spielstand, Schlüssel und Aufzeichnungen des Spielers. TestFiles.remove_dir löschte jeden Pfad, den es bekam; ein falsches Argument hätte echte Spielerdateien gelöscht. Tests, die früh mit einem Laufzeitfehler abbrachen, ließen ihren Ordner zurück (es lagen 15 solche Ordner im Benutzerordner). - remove_dir vereinfacht den Pfad (simplify_path) und verweigert alles, was nicht user://tests oder darunter liegt, mit push_error und ohne zu löschen. Die Wurzel steht in der Konstante TestFiles.ROOT, die auch temporary_dir benutzt. - run_tests.gd entfernt user://tests zu Beginn von _run_all, vor dem Fehlerzähler, aber nur wenn der Ordner existiert, weil Godot beim Auflisten eines fehlenden Ordners einen Fehler meldet. - CLAUDE.md sagt jetzt, dass die Tests unter user://tests schreiben und nie die echten Dateien des Spielers anfassen. Das Verweigern wurde einmal von Hand geprüft, mit einem Wegwerfskript auf selbst angelegten Ordnern: Ohne Schutz löschte remove_dir sie, mit Schutz bleiben sie samt Datei stehen und es erscheint ein Fehler, auch für einen Geschwisterordner user://tests_probe und für user://tests/../…. Danach waren die 15 Altlasten verschwunden und die Ausgabe fehlerfrei, auch ohne vorhandenen Ordner user://tests. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -44,6 +44,11 @@ func _initialize() -> void:
|
||||
|
||||
|
||||
func _run_all() -> void:
|
||||
# Remove what runs that stopped early left behind, before the error
|
||||
# counter starts. Only if the folder exists, because Godot reports an
|
||||
# error when it lists a missing one.
|
||||
if DirAccess.dir_exists_absolute(TestFiles.ROOT):
|
||||
TestFiles.remove_dir(TestFiles.ROOT)
|
||||
var counter := ErrorCounter.new()
|
||||
OS.add_logger(counter)
|
||||
var passed := 0
|
||||
|
||||
Reference in New Issue
Block a user