Adding log.gd
This commit is contained in:
parent
eb32d6614e
commit
4522259397
547 changed files with 46844 additions and 0 deletions
27
addons/gdUnit4/test/monitor/ErrorLogEntryTest.gd
Normal file
27
addons/gdUnit4/test/monitor/ErrorLogEntryTest.gd
Normal 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)
|
||||
125
addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd
Normal file
125
addons/gdUnit4/test/monitor/GodotGdErrorMonitorTest.gd
Normal 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")
|
||||
Loading…
Add table
Add a link
Reference in a new issue