65 lines
2.1 KiB
GDScript
65 lines
2.1 KiB
GDScript
|
extends RefCounted
|
||
|
class_name GdUnit4CSharpApiLoader
|
||
|
|
||
|
|
||
|
static func instance() -> Object:
|
||
|
return GdUnitSingleton.instance("GdUnit4CSharpApi", func() -> Object:
|
||
|
if not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
return null
|
||
|
return load("res://addons/gdUnit4/src/mono/GdUnit4CSharpApi.cs").new()
|
||
|
)
|
||
|
|
||
|
|
||
|
static func is_engine_version_supported(engine_version :int = Engine.get_version_info().hex) -> bool:
|
||
|
return engine_version >= 0x40200
|
||
|
|
||
|
|
||
|
# test is Godot mono running
|
||
|
static func is_mono_supported() -> bool:
|
||
|
return ClassDB.class_exists("CSharpScript") and is_engine_version_supported()
|
||
|
|
||
|
|
||
|
static func version() -> String:
|
||
|
if not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
return "unknown"
|
||
|
return instance().Version()
|
||
|
|
||
|
|
||
|
static func create_test_suite(source_path :String, line_number :int, test_suite_path :String) -> GdUnitResult:
|
||
|
if not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
return GdUnitResult.error("Can't create test suite. No C# support found.")
|
||
|
var result := instance().CreateTestSuite(source_path, line_number, test_suite_path) as Dictionary
|
||
|
if result.has("error"):
|
||
|
return GdUnitResult.error(result.get("error"))
|
||
|
return GdUnitResult.success(result)
|
||
|
|
||
|
|
||
|
static func is_test_suite(resource_path :String) -> bool:
|
||
|
if not is_csharp_file(resource_path) or not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
return false
|
||
|
|
||
|
if resource_path.is_empty():
|
||
|
if GdUnitSettings.is_report_push_errors():
|
||
|
push_error("Can't create test suite. Missing resource path.")
|
||
|
return false
|
||
|
return instance().IsTestSuite(resource_path)
|
||
|
|
||
|
|
||
|
static func parse_test_suite(source_path :String) -> Node:
|
||
|
if not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
if GdUnitSettings.is_report_push_errors():
|
||
|
push_error("Can't create test suite. No c# support found.")
|
||
|
return null
|
||
|
return instance().ParseTestSuite(source_path)
|
||
|
|
||
|
|
||
|
static func create_executor(listener :Node) -> RefCounted:
|
||
|
if not GdUnit4CSharpApiLoader.is_mono_supported():
|
||
|
return null
|
||
|
return instance().Executor(listener)
|
||
|
|
||
|
|
||
|
static func is_csharp_file(resource_path :String) -> bool:
|
||
|
var ext := resource_path.get_extension()
|
||
|
return ext == "cs" and GdUnit4CSharpApiLoader.is_mono_supported()
|