setting up GDUnit
Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 3m40s

This commit is contained in:
2026-01-25 18:19:26 +01:00
parent 39d6ab1c5f
commit c28d97de2d
471 changed files with 29716 additions and 16 deletions

View File

@@ -0,0 +1,202 @@
class_name GdUnitReportSummary
extends RefCounted
var _resource_path: String
var _name: String
var _test_count := 0
var _failure_count := 0
var _error_count := 0
var _orphan_count := 0
var _skipped_count := 0
var _flaky_count := 0
var _duration := 0
var _reports: Array[GdUnitReportSummary] = []
var _text_formatter: Callable
func _init(text_formatter: Callable) -> void:
_text_formatter = text_formatter
func name() -> String:
return _name
func path() -> String:
return _resource_path.get_base_dir().replace("res://", "")
func get_resource_path() -> String:
return _resource_path
func suite_count() -> int:
return _reports.size()
func suite_executed_count() -> int:
var executed := _reports.size()
for report in _reports:
if report.test_count() == report.skipped_count():
executed -= 1
return executed
func test_count() -> int:
var count := _test_count
for report in _reports:
count += report.test_count()
return count
func test_executed_count() -> int:
return test_count() - skipped_count()
func success_count() -> int:
return test_count() - error_count() - failure_count() - flaky_count() - skipped_count()
func error_count() -> int:
return _error_count
func failure_count() -> int:
return _failure_count
func skipped_count() -> int:
return _skipped_count
func flaky_count() -> int:
return _flaky_count
func orphan_count() -> int:
return _orphan_count
func duration() -> int:
return _duration
func get_reports() -> Array:
return _reports
func add_report(report: GdUnitReportSummary) -> void:
_reports.append(report)
func report_state() -> String:
return calculate_state(error_count(), failure_count(), orphan_count(), flaky_count(), skipped_count())
func succes_rate() -> String:
return calculate_succes_rate(test_count(), error_count(), failure_count())
@warning_ignore("shadowed_variable")
func add_testcase(resource_path: String, suite_name: String, test_name: String) -> void:
for report: GdUnitTestSuiteReport in _reports:
if report.get_resource_path() == resource_path:
var test_report := GdUnitTestCaseReport.new(resource_path, suite_name, test_name, _text_formatter)
report.add_or_create_test_report(test_report)
func add_reports(
p_resource_path: String,
p_test_name: String,
p_reports: Array[GdUnitReport]) -> void:
for report:GdUnitTestSuiteReport in _reports:
if report.get_resource_path() == p_resource_path:
report.add_testcase_reports(p_test_name, p_reports)
func add_testsuite_report(p_resource_path: String, p_suite_name: String, p_test_count: int) -> void:
_reports.append(GdUnitTestSuiteReport.new(p_resource_path, p_suite_name, p_test_count, _text_formatter))
func add_testsuite_reports(
p_resource_path: String,
p_reports: Array = []) -> void:
for report:GdUnitTestSuiteReport in _reports:
if report.get_resource_path() == p_resource_path:
report.set_reports(p_reports)
func set_counters(
p_resource_path: String,
p_test_name: String,
p_error_count: int,
p_failure_count: int,
p_orphan_count: int,
p_is_skipped: bool,
p_is_flaky: bool,
p_duration: int) -> void:
for report: GdUnitTestSuiteReport in _reports:
if report.get_resource_path() == p_resource_path:
report.set_testcase_counters(p_test_name, p_error_count, p_failure_count, p_orphan_count,
p_is_skipped, p_is_flaky, p_duration)
func update_testsuite_counters(
p_resource_path: String,
p_error_count: int,
p_failure_count: int,
p_orphan_count: int,
p_skipped_count: int,
p_flaky_count: int,
p_duration: int) -> void:
for report:GdUnitTestSuiteReport in _reports:
if report.get_resource_path() == p_resource_path:
report._update_testsuite_counters(p_error_count, p_failure_count, p_orphan_count, p_skipped_count, p_flaky_count, p_duration)
_update_summary_counters(p_error_count, p_failure_count, p_orphan_count, p_skipped_count, p_flaky_count, 0)
func _update_summary_counters(
p_error_count: int,
p_failure_count: int,
p_orphan_count: int,
p_skipped_count: int,
p_flaky_count: int,
p_duration: int) -> void:
_error_count += p_error_count
_failure_count += p_failure_count
_orphan_count += p_orphan_count
_skipped_count += p_skipped_count
_flaky_count += p_flaky_count
_duration += p_duration
func calculate_state(p_error_count :int, p_failure_count :int, p_orphan_count :int, p_flaky_count: int, p_skipped_count: int) -> String:
if p_error_count > 0:
return "ERROR"
if p_failure_count > 0:
return "FAILED"
if p_flaky_count > 0:
return "FLAKY"
if p_orphan_count > 0:
return "WARNING"
if p_skipped_count > 0:
return "SKIPPED"
return "PASSED"
func calculate_succes_rate(p_test_count :int, p_error_count :int, p_failure_count :int) -> String:
if p_failure_count == 0:
return "100%"
var count := p_test_count-p_failure_count-p_error_count
if count < 0:
return "0%"
return "%d" % (( 0 if count < 0 else count) * 100.0 / p_test_count) + "%"
func create_summary(_report_dir :String) -> String:
return ""