summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd
diff options
context:
space:
mode:
Diffstat (limited to 'addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd')
-rw-r--r--addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd56
1 files changed, 56 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd b/addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd
new file mode 100644
index 0000000..5504fa7
--- /dev/null
+++ b/addons/gdUnit4/src/core/command/GdUnitCommandScriptEditor.gd
@@ -0,0 +1,56 @@
+@abstract class_name GdUnitCommandScriptEditor
+extends GdUnitBaseCommand
+
+var _test_session_command: GdUnitCommandTestSession
+
+func _init(p_id: String, p_shortcut: GdUnitShortcut.ShortCut, test_session_command: GdUnitCommandTestSession) -> void:
+ super(p_id, p_shortcut)
+ _test_session_command = test_session_command
+
+
+func is_running() -> bool:
+ return _test_session_command.is_running()
+
+
+func execute_tests(with_debug: bool) -> void:
+ var selected_tests := PackedStringArray()
+ if _is_active_script_editor():
+ var cursor_line := _active_base_editor().get_caret_line()
+ #run test case?
+ var regex := RegEx.new()
+ @warning_ignore("return_value_discarded")
+ regex.compile("(^func[ ,\t])(test_[a-zA-Z0-9_]*)")
+ var result := regex.search(_active_base_editor().get_line(cursor_line))
+ if result:
+ var func_name := result.get_string(2).strip_edges()
+ if func_name.begins_with("test_"):
+ selected_tests.append(func_name)
+
+ var tests_to_execute := _collect_tests(_active_script(), selected_tests)
+ _test_session_command.execute(tests_to_execute, with_debug)
+
+
+func _collect_tests(script: Script, tests: PackedStringArray) -> Array[GdUnitTestCase]:
+ # Update test discovery
+ var tests_to_execute: Array[GdUnitTestCase] = []
+ GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverStart.new())
+ GdUnitTestDiscoverer.discover_tests(script, func(test: GdUnitTestCase) -> void:
+ if tests.is_empty() or tests.has(test.test_name):
+ tests_to_execute.append(test)
+ GdUnitTestDiscoverSink.discover(test)
+ )
+ GdUnitSignals.instance().gdunit_event.emit(GdUnitEventTestDiscoverEnd.new(0, 0))
+ GdUnitTestDiscoverer.console_log_discover_results(tests_to_execute)
+ return tests_to_execute
+
+
+func _is_active_script_editor() -> bool:
+ return EditorInterface.get_script_editor().get_current_editor() != null
+
+
+func _active_base_editor() -> TextEdit:
+ return EditorInterface.get_script_editor().get_current_editor().get_base_editor()
+
+
+func _active_script() -> Script:
+ return EditorInterface.get_script_editor().get_current_script()