summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd
diff options
context:
space:
mode:
authorradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
committerradiohotline <radoihotline@disroot.rg>2026-08-25 16:33:56 +0300
commita89e744ed0e8c759caf041a580112365bbfe4303 (patch)
treedd61e320904176995727e86a857d00c90d4933ba /addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd
parent6d53d8cac78250dc888aa49d5f9d4175c6652feb (diff)
escoria updateHEADmain
Diffstat (limited to 'addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd')
-rw-r--r--addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd20
1 files changed, 20 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd b/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd
new file mode 100644
index 0000000..97a49b0
--- /dev/null
+++ b/addons/gdUnit4/src/core/GdUnitTestSuiteBuilder.gd
@@ -0,0 +1,20 @@
+class_name GdUnitTestSuiteBuilder
+extends RefCounted
+
+
+static func create(source :Script, line_number :int) -> GdUnitResult:
+ var test_suite_path := GdUnitTestSuiteScanner.resolve_test_suite_path(source.resource_path, GdUnitSettings.test_root_folder())
+ # we need to save and close the testsuite and source if is current opened before modify
+ @warning_ignore("return_value_discarded")
+ ScriptEditorControls.save_an_open_script(source.resource_path)
+ @warning_ignore("return_value_discarded")
+ ScriptEditorControls.save_an_open_script(test_suite_path, true)
+ if source.get_class() == "CSharpScript":
+ return GdUnit4CSharpApiLoader.create_test_suite(source.resource_path, line_number+1, test_suite_path)
+ var parser := GdScriptParser.new()
+ var lines := source.source_code.split("\n")
+ var current_line := lines[line_number]
+ var func_name := parser.parse_func_name(current_line)
+ if func_name.is_empty():
+ return GdUnitResult.error("No function found at line: %d." % line_number)
+ return GdUnitTestSuiteScanner.create_test_case(test_suite_path, func_name, source.resource_path)