Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 3m40s
69 lines
3.4 KiB
GDScript
69 lines
3.4 KiB
GDScript
# Preloads all GdUnit assertions
|
|
class_name GdUnitAssertions
|
|
extends RefCounted
|
|
|
|
|
|
@warning_ignore("return_value_discarded")
|
|
func _init() -> void:
|
|
# preload all gdunit assertions to speedup testsuite loading time
|
|
# gdlint:disable=private-method-call
|
|
@warning_ignore_start("return_value_discarded")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitBoolAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitStringAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitIntAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFloatAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitVectorAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitArrayAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitDictionaryAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFileAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitObjectAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitResultAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFuncAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitSignalAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitFailureAssertImpl.gd")
|
|
GdUnitAssertions.__lazy_load("res://addons/gdUnit4/src/asserts/GdUnitGodotErrorAssertImpl.gd")
|
|
@warning_ignore_restore("return_value_discarded")
|
|
|
|
|
|
### We now load all used asserts and tool scripts into the cache according to the principle of "lazy loading"
|
|
### in order to noticeably reduce the loading time of the test suite.
|
|
# We go this hard way to increase the loading performance to avoid reparsing all the used scripts
|
|
# for more detailed info -> https://github.com/godotengine/godot/issues/67400
|
|
# gdlint:disable=function-name
|
|
static func __lazy_load(script_path :String) -> GDScript:
|
|
return ResourceLoader.load(script_path, "GDScript", ResourceLoader.CACHE_MODE_REUSE)
|
|
|
|
|
|
static func validate_value_type(value :Variant, type :Variant.Type) -> bool:
|
|
return value == null or typeof(value) == type
|
|
|
|
|
|
# Scans the current stack trace for the root cause to extract the line number
|
|
static func get_line_number() -> int:
|
|
var stack_trace := get_stack()
|
|
if stack_trace == null or stack_trace.is_empty():
|
|
return -1
|
|
for index in stack_trace.size():
|
|
var stack_info :Dictionary = stack_trace[index]
|
|
var function :String = stack_info.get("function")
|
|
# we catch helper asserts to skip over to return the correct line number
|
|
if function.begins_with("assert_"):
|
|
continue
|
|
if function.begins_with("test_"):
|
|
return stack_info.get("line")
|
|
var source :String = stack_info.get("source")
|
|
if source.is_empty() \
|
|
or source.begins_with("user://") \
|
|
or source.ends_with("GdUnitAssert.gd") \
|
|
or source.ends_with("GdUnitAssertions.gd") \
|
|
or source.ends_with("AssertImpl.gd") \
|
|
or source.ends_with("GdUnitTestSuite.gd") \
|
|
or source.ends_with("GdUnitSceneRunnerImpl.gd") \
|
|
or source.ends_with("GdUnitObjectInteractions.gd") \
|
|
or source.ends_with("GdUnitObjectInteractionsVerifier.gd") \
|
|
or source.ends_with("GdUnitAwaiter.gd"):
|
|
continue
|
|
return stack_info.get("line")
|
|
return -1
|