Adding log.gd

This commit is contained in:
Dan Baker 2024-05-02 09:36:31 +01:00
parent eb32d6614e
commit 4522259397
547 changed files with 46844 additions and 0 deletions

View file

@ -0,0 +1,27 @@
# GdUnit generated TestSuite
class_name ErrorLogEntryTest
extends GdUnitTestSuite
@warning_ignore('unused_parameter')
@warning_ignore('return_value_discarded')
# TestSuite generated from
const __source = 'res://addons/gdUnit4/src/monitor/ErrorLogEntry.gd'
const error_report = """
USER ERROR: this is an error
at: push_error (core/variant/variant_utility.cpp:880)
"""
const script_error = """
USER SCRIPT ERROR: Trying to call a function on a previously freed instance.
at: GdUnitScriptTypeTest.test_xx (res://addons/gdUnit4/test/GdUnitScriptTypeTest.gd:22)
"""
func test_parse_script_error_line_number() -> void:
var line := ErrorLogEntry._parse_error_line_number(script_error.dedent())
assert_int(line).is_equal(22)
func test_parse_push_error_line_number() -> void:
var line := ErrorLogEntry._parse_error_line_number(error_report.dedent())
assert_int(line).is_equal(-1)

View file

@ -0,0 +1,125 @@
# GdUnit generated TestSuite
#warning-ignore-all:unused_argument
#warning-ignore-all:return_value_discarded
class_name GodotGdErrorMonitorTest
extends GdUnitTestSuite
# TestSuite generated from
const __source = 'res://addons/gdUnit4/src/monitor/GodotGdErrorMonitor.gd'
const error_report = """
USER ERROR: this is an error
at: push_error (core/variant/variant_utility.cpp:880)
"""
const script_error = """
USER SCRIPT ERROR: Trying to call a function on a previously freed instance.
at: GdUnitScriptTypeTest.test_xx (res://addons/gdUnit4/test/GdUnitScriptTypeTest.gd:22)
"""
var _save_is_report_push_errors :bool
var _save_is_report_script_errors :bool
func before():
_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():
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 write_log(content :String) -> String:
var log_file := create_temp_file("/test_logs/", "test.log")
log_file.store_string(content)
log_file.flush()
return log_file.get_path_absolute()
func test_scan_for_push_errors() -> void:
var monitor := mock(GodotGdErrorMonitor, CALL_REAL_FUNC) as GodotGdErrorMonitor
monitor._godot_log_file = write_log(error_report)
monitor._report_enabled = true
# with disabled push_error reporting
do_return(false).on(monitor)._is_report_push_errors()
await monitor.scan()
assert_array(monitor.to_reports()).is_empty()
# with enabled push_error reporting
do_return(true).on(monitor)._is_report_push_errors()
var entry := ErrorLogEntry.new(ErrorLogEntry.TYPE.PUSH_ERROR, -1,
"this is an error",
"at: push_error (core/variant/variant_utility.cpp:880)")
var expected_report := GodotGdErrorMonitor._to_report(entry)
monitor._eof = 0
await monitor.scan()
assert_array(monitor.to_reports()).contains_exactly([expected_report])
func test_scan_for_script_errors() -> void:
var log_file := write_log(script_error)
var monitor := mock(GodotGdErrorMonitor, CALL_REAL_FUNC) as GodotGdErrorMonitor
monitor._godot_log_file = log_file
monitor._report_enabled = true
# with disabled push_error reporting
do_return(false).on(monitor)._is_report_script_errors()
await monitor.scan()
assert_array(monitor.to_reports()).is_empty()
# with enabled push_error reporting
do_return(true).on(monitor)._is_report_script_errors()
var entry := ErrorLogEntry.new(ErrorLogEntry.TYPE.PUSH_ERROR, 22,
"Trying to call a function on a previously freed instance.",
"at: GdUnitScriptTypeTest.test_xx (res://addons/gdUnit4/test/GdUnitScriptTypeTest.gd:22)")
var expected_report := GodotGdErrorMonitor._to_report(entry)
monitor._eof = 0
await monitor.scan()
assert_array(monitor.to_reports()).contains_exactly([expected_report])
func test_custom_log_path() -> void:
# save original log_path
var log_path :String = ProjectSettings.get_setting("debug/file_logging/log_path")
# set custom log path
var custom_log_path := "user://logs/test-run.log"
FileAccess.open(custom_log_path, FileAccess.WRITE).store_line("test-log")
ProjectSettings.set_setting("debug/file_logging/log_path", custom_log_path)
var monitor := GodotGdErrorMonitor.new()
assert_that(monitor._godot_log_file).is_equal(custom_log_path)
# restore orignal log_path
ProjectSettings.set_setting("debug/file_logging/log_path", log_path)
func test_integration_test() -> void:
var monitor := GodotGdErrorMonitor.new()
monitor._report_enabled = true
# no errors reported
monitor.start()
monitor.stop()
await monitor.scan(true)
assert_array(monitor.to_reports()).is_empty()
# push error
monitor.start()
push_error("Test GodotGdErrorMonitor 'push_error' reporting")
push_warning("Test GodotGdErrorMonitor 'push_warning' reporting")
monitor.stop()
await monitor.scan(true)
var reports := monitor.to_reports()
assert_array(reports).has_size(2)
if not reports.is_empty():
assert_str(reports[0].message()).contains("Test GodotGdErrorMonitor 'push_error' reporting")
assert_str(reports[1].message()).contains("Test GodotGdErrorMonitor 'push_warning' reporting")
else:
fail("Expect reporting runtime errors")