summaryrefslogtreecommitdiff
path: root/addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.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/hooks/GdUnitBaseReporterTestSessionHook.gd
parent6d53d8cac78250dc888aa49d5f9d4175c6652feb (diff)
escoria updateHEADmain
Diffstat (limited to 'addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.gd')
-rw-r--r--addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.gd78
1 files changed, 78 insertions, 0 deletions
diff --git a/addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.gd b/addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.gd
new file mode 100644
index 0000000..0f87ad1
--- /dev/null
+++ b/addons/gdUnit4/src/core/hooks/GdUnitBaseReporterTestSessionHook.gd
@@ -0,0 +1,78 @@
+class_name GdUnitBaseReporterTestSessionHook
+extends GdUnitTestSessionHook
+
+
+var test_session: GdUnitTestSession:
+ get:
+ return test_session
+ set(value):
+ # disconnect first possible connected listener
+ if test_session != null:
+ test_session.test_event.disconnect(_on_test_event)
+ # add listening to current session
+ test_session = value
+ if test_session != null:
+ test_session.test_event.connect(_on_test_event)
+
+
+var _report_summary: GdUnitReportSummary
+var _reporter: GdUnitTestReporter
+var _report_writer: GdUnitReportWriter
+var _report_converter: Callable
+
+func _init(report_writer: GdUnitReportWriter, hook_name: String, hook_description: String, report_converter: Callable) -> void:
+ super(hook_name, hook_description)
+ _reporter = GdUnitTestReporter.new()
+ _report_writer = report_writer
+ _report_converter = report_converter
+
+
+func startup(session: GdUnitTestSession) -> GdUnitResult:
+ test_session = session
+ _report_summary = GdUnitReportSummary.new(_report_converter)
+ _reporter.init_summary()
+
+ return GdUnitResult.success()
+
+
+func shutdown(session: GdUnitTestSession) -> GdUnitResult:
+ var report_path := _report_writer.write(session.report_path, _report_summary)
+ session.send_message("Open {0} Report at: file://{1}".format([_report_writer.output_format(), report_path]))
+
+ return GdUnitResult.success()
+
+
+func _on_test_event(event: GdUnitEvent) -> void:
+ match event.type():
+ GdUnitEvent.TESTSUITE_BEFORE:
+ _reporter.init_statistics()
+ _report_summary.add_testsuite_report(event.resource_path(), event.suite_name(), event.total_count())
+ GdUnitEvent.TESTSUITE_AFTER:
+ var statistics := _reporter.build_test_suite_statisitcs(event)
+ _report_summary.update_testsuite_counters(
+ event.resource_path(),
+ _reporter.error_count(statistics),
+ _reporter.failed_count(statistics),
+ _reporter.orphan_nodes(statistics),
+ _reporter.skipped_count(statistics),
+ _reporter.flaky_count(statistics),
+ event.elapsed_time())
+ _report_summary.add_testsuite_reports(
+ event.resource_path(),
+ event.reports()
+ )
+ GdUnitEvent.TESTCASE_BEFORE:
+ var test := test_session.find_test_by_id(event.guid())
+ _report_summary.add_testcase(test.source_file, test.suite_name, test.display_name)
+ GdUnitEvent.TESTCASE_AFTER:
+ _reporter.add_test_statistics(event)
+ var test := test_session.find_test_by_id(event.guid())
+ _report_summary.set_counters(test.source_file,
+ test.display_name,
+ event.error_count(),
+ event.failed_count(),
+ event.orphan_nodes(),
+ event.is_skipped(),
+ event.is_flaky(),
+ event.elapsed_time())
+ _report_summary.add_reports(test.source_file, test.display_name, event.reports())