The previous tests never compiled: they used GUT's assert functions, Godot 3 APIs and reassigned autoload functions, so no test ran. - 90 tests: unit tests for the playlist, songs, player scoring, time formatting, search and the server client, plus integration tests that run MainWindow and SyncWindow against a fake server - Keybind tests check that Alt+<number> and Ctrl+Alt+<number> keep following the player rows while players are added and removed - run_tests.sh finds Godot and runs the suite headless (~10 seconds) - CI runs the tests before the build job in gitea-build.yaml; the separate test.yml used a GitHub action that does not exist - GdUnit4 is committed instead of ignored, since the project enables it, and .gitea/ is no longer ignored - Exported builds leave out tests/ and addons/gdUnit4/
58 lines
1.8 KiB
GDScript
58 lines
1.8 KiB
GDScript
class_name GdAssertReports
|
|
extends RefCounted
|
|
|
|
const LAST_ERROR = "last_assert_error_message"
|
|
const LAST_ERROR_LINE = "last_assert_error_line"
|
|
|
|
|
|
static func report_success() -> void:
|
|
GdUnitSignals.instance().gdunit_set_test_failed.emit(false)
|
|
GdAssertReports.set_last_error_line_number(-1)
|
|
Engine.remove_meta(LAST_ERROR)
|
|
|
|
|
|
static func report_warning(message :String, line_number :int) -> void:
|
|
GdUnitSignals.instance().gdunit_set_test_failed.emit(false)
|
|
send_report(GdUnitReport.new().create(GdUnitReport.WARN, line_number, message))
|
|
|
|
|
|
static func report_error(error: GdUnitError) -> void:
|
|
GdUnitSignals.instance().gdunit_set_test_failed.emit(true)
|
|
GdAssertReports.set_last_error_line_number(error._line_number)
|
|
Engine.set_meta(LAST_ERROR, error._message)
|
|
Engine.set_meta("GD_TEST_FAILURE", true)
|
|
GdUnitThreadManager.get_current_context().get_execution_context().set_error(error)
|
|
|
|
# if we expect to fail we handle as success test
|
|
if _do_expect_assert_failing():
|
|
return
|
|
send_report(GdUnitReport.new().from_error(GdUnitReport.FAILURE, error))
|
|
|
|
|
|
static func reset_last_error_line_number() -> void:
|
|
Engine.remove_meta(LAST_ERROR_LINE)
|
|
|
|
|
|
static func set_last_error_line_number(line_number :int) -> void:
|
|
Engine.set_meta(LAST_ERROR_LINE, line_number)
|
|
|
|
|
|
static func get_last_error_line_number() -> int:
|
|
if Engine.has_meta(LAST_ERROR_LINE):
|
|
return Engine.get_meta(LAST_ERROR_LINE)
|
|
return -1
|
|
|
|
|
|
static func _do_expect_assert_failing() -> bool:
|
|
if Engine.has_meta(GdUnitConstants.EXPECT_ASSERT_REPORT_FAILURES):
|
|
return Engine.get_meta(GdUnitConstants.EXPECT_ASSERT_REPORT_FAILURES)
|
|
return false
|
|
|
|
|
|
static func current_failure() -> String:
|
|
return Engine.get_meta(LAST_ERROR)
|
|
|
|
|
|
static func send_report(report :GdUnitReport) -> void:
|
|
GdUnitThreadManager.get_current_context().get_execution_context().add_report(report)
|