Testläufer meldet einen Fehler, wenn kein Test lief

quit(1 if failed > 0 else 0) beendete einen Lauf mit "0 passed, 0 failed"
mit Code 0, zum Beispiel nachdem der Testordner umbenannt wurde oder alle
Tests falsch benannt waren. Die Prüfliste sah dann grün aus, ohne etwas
geprüft zu haben.

Der Läufer endet jetzt auch mit Code 1, wenn kein Test bestanden wurde.
Der Doc-Kommentar sagt das. Einmal von Hand geprüft: Mit einem Dateifilter,
den keine Testdatei erfüllt, meldete der alte Läufer 0 passed, 0 failed
mit Code 0, der neue endet mit Code 1.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
Steven Wroblewski
2026-10-01 13:21:31 +02:00
parent d986f2a5db
commit 400556134f
+3 -2
View File
@@ -2,7 +2,8 @@ extends SceneTree
## Runs every test script in res://tests whose file name starts with "test_". ## Runs every test script in res://tests whose file name starts with "test_".
## Every method whose name starts with "test_" is one test. A test fails if a ## Every method whose name starts with "test_" is one test. A test fails if a
## check fails or if an error is reported while it runs, for example a call ## check fails or if an error is reported while it runs, for example a call
## on a null value. Exits with code 1 if any test failed. ## on a null value. Exits with code 1 if any test failed or if no test ran,
## so that a renamed test folder or misnamed tests cannot pass as a clean run.
## ##
## From the repository root: ## From the repository root:
## godot --headless --path game -s res://tests/run_tests.gd ## godot --headless --path game -s res://tests/run_tests.gd
@@ -78,4 +79,4 @@ func _run_all() -> void:
print(" " + failure) print(" " + failure)
OS.remove_logger(counter) OS.remove_logger(counter)
print("%d passed, %d failed" % [passed, failed]) print("%d passed, %d failed" % [passed, failed])
quit(1 if failed > 0 else 0) quit(1 if failed > 0 or passed == 0 else 0)