Files
jpmschweitzerandClaude Opus 4.6 61e0762a84 chore(client): add gdUnit4 test framework addon
Vendor gdUnit4 for Godot 4 client testing (D-030).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 16:52:00 +01:00

79 lines
2.6 KiB
GDScript

# GdUnit generated TestSuite
#warning-ignore-all:unused_argument
#warning-ignore-all:return_value_discarded
class_name GodotGdErrorMonitorTest
extends GdUnitTestSuite
var _save_is_report_push_errors :bool
var _save_is_report_script_errors :bool
func before() -> void:
_save_is_report_push_errors = GdUnitSettings.is_report_push_errors()
_save_is_report_script_errors = GdUnitSettings.is_report_script_errors()
# disable default error reporting for testing
ProjectSettings.set_setting(GdUnitSettings.REPORT_PUSH_ERRORS, false)
ProjectSettings.set_setting(GdUnitSettings.REPORT_SCRIPT_ERRORS, false)
func after() -> void:
ProjectSettings.set_setting(GdUnitSettings.REPORT_PUSH_ERRORS, _save_is_report_push_errors)
ProjectSettings.set_setting(GdUnitSettings.REPORT_SCRIPT_ERRORS, _save_is_report_script_errors)
func test_monitor_push_error() -> void:
var monitor := GodotGdErrorMonitor.new()
monitor._logger._is_report_push_errors = true
# no errors reported
monitor.start()
monitor.stop()
assert_array(monitor.to_reports()).is_empty()
# push error
monitor.start()
forcet_push_error()
monitor.stop()
var reports := monitor.to_reports()
assert_array(reports).has_size(1)
prints(reports[0].message())
assert_str(reports[0].message())\
.contains("Test GodotGdErrorMonitor 'push_error' reporting")\
.contains("at res://addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd:78")\
.contains("at res://addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd:73")\
.contains("at res://addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd:35")
assert_int(reports[0].line_number()).is_equal(35)
func test_monitor_push_waring() -> void:
var monitor := GodotGdErrorMonitor.new()
monitor._logger._is_report_push_errors = true
# push error
monitor.start()
push_warning("Test GodotGdErrorMonitor 'push_warning' reporting")
monitor.stop()
var reports := monitor.to_reports()
assert_array(reports).has_size(1)
assert_str(reports[0].message())\
.contains("Test GodotGdErrorMonitor 'push_warning' reporting")\
.contains("at res://addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd:55")
assert_int(reports[0].line_number()).is_equal(55)
func test_fail_by_push_error(_do_skip := true, _skip_reason := "disabled to not produce errors, enable only for direct testing") -> void:
GdUnitThreadManager.get_current_context().get_execution_context().error_monitor._logger._is_report_push_errors = true
push_error("test error")
func forcet_push_error() -> void:
@warning_ignore("redundant_await")
await forcet_push_error2()
func forcet_push_error2() -> void:
#await get_tree().process_frame
push_error("Test GodotGdErrorMonitor 'push_error' reporting")