refactor: enhance test framework with automated resource tracking and scripted error capture capabilities
This commit is contained in:
@@ -430,7 +430,15 @@ func _current_scene_root() -> Node:
|
||||
return null
|
||||
var scene_root := tree.current_scene
|
||||
if scene_root == null and Engine.is_editor_hint():
|
||||
scene_root = EditorInterface.get_edited_scene_root()
|
||||
# Look the editor singleton up by name rather than referencing the bare
|
||||
# `EditorInterface` identifier: that identifier is compiled out of export
|
||||
# templates, so the GDScript parser rejects it ("Identifier
|
||||
# "EditorInterface" not declared in the current scope") in an exported
|
||||
# build even though `Engine.is_editor_hint()` would never run it there.
|
||||
# That parse failure stops this autoload from loading in every export.
|
||||
var editor := Engine.get_singleton(&"EditorInterface")
|
||||
if editor:
|
||||
scene_root = editor.get_edited_scene_root()
|
||||
return scene_root
|
||||
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ extends RefCounted
|
||||
|
||||
const EDITOR_LOGGER_PATH := "res://addons/godot_ai/runtime/loggers/editor_logger.gd"
|
||||
const GAME_LOGGER_PATH := "res://addons/godot_ai/runtime/loggers/game_logger.gd"
|
||||
const VALIDATION_LOGGER_PATH := "res://addons/godot_ai/runtime/loggers/validation_logger.gd"
|
||||
|
||||
|
||||
## Compile a `.gdignore`'d logger script from its on-disk source. Returns the
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
@tool
|
||||
extends Logger
|
||||
|
||||
## Short-lived Logger used only for per-write validation loads.
|
||||
##
|
||||
## Unlike editor_logger.gd this deliberately has no addon feedback-loop filter:
|
||||
## the caller attaches it around one ResourceLoader.load() call, reads its
|
||||
## private buffer, and immediately removes it. The shared editor logger should
|
||||
## still drop these validation-load errors so logs_read(source="editor") stays
|
||||
## clean.
|
||||
|
||||
const _LogBacktrace := preload("res://addons/godot_ai/utils/log_backtrace.gd")
|
||||
|
||||
var _buffer
|
||||
|
||||
|
||||
func _init(buffer = null) -> void:
|
||||
_buffer = buffer
|
||||
|
||||
|
||||
func _log_error(
|
||||
function: String,
|
||||
file: String,
|
||||
line: int,
|
||||
code: String,
|
||||
rationale: String,
|
||||
_editor_notify: bool,
|
||||
error_type: int,
|
||||
script_backtraces: Array,
|
||||
) -> void:
|
||||
if _buffer == null:
|
||||
return
|
||||
var resolved := _LogBacktrace.resolve_error(
|
||||
function,
|
||||
file,
|
||||
line,
|
||||
code,
|
||||
rationale,
|
||||
error_type,
|
||||
script_backtraces,
|
||||
)
|
||||
var details: Dictionary = resolved.get("details", {})
|
||||
_buffer.append(resolved.level, resolved.message, resolved.path, resolved.line, resolved.function, details)
|
||||
Reference in New Issue
Block a user