Files
MovementTests/addons/gdUnit4/src/core/attributes/TestCaseAttribute.gd
Minimata bdce8b969c
Some checks failed
Create tag and build when new code gets to main / Export (push) Failing after 6m41s
reinstalling GDUnit from assetlib
2026-01-26 09:05:55 +01:00

77 lines
2.5 KiB
GDScript

class_name TestCaseAttribute
extends Resource
## Holds configuration and metadata for individual test cases.[br]
## [br]
## This class defines test behaviors and properties such as:[br]
## - Test timeouts[br]
## - Skip conditions[br]
## - Fuzzing parameters[br]
## - Random seed values[br]
## When set, no specific timeout value is configured and test will use the [code]test_timeout[/code][br]
## value from [GdUnitSettings].
const DEFAULT_TIMEOUT := -1
## The maximum time in milliseconds for test completion.[br]
## The test fails if execution exceeds this duration.[br]
## [br]
## When set to [constant DEFAULT_TIMEOUT], uses the value from [method GdUnitSettings.test_timeout].
var timeout: int = DEFAULT_TIMEOUT:
set(value):
timeout = value
get:
if timeout == DEFAULT_TIMEOUT:
# get the default timeout from the settings
timeout = GdUnitSettings.test_timeout()
return timeout
## The seed used for random number generation in the test.[br]
## Ensures reproducible results for randomized test scenarios.[br]
## A value of -1 indicates no specific seed is set.
var test_seed: int = -1
## Controls whether this test should be skipped during execution.[br]
## Useful for temporarily disabling tests without removing them.
var is_skipped := false
## Documents why the test is being skipped.[br]
## [br]
## Should explain the reason for skipping and ideally include:[br]
## - Why the test was disabled[br]
## - Under what conditions it should be re-enabled[br]
## - Any related issues or tickets
var skip_reason := "Unknown"
## Number of iterations to run when using fuzzers.[br]
## [br]
## Fuzzers generate random test data to help find edge cases.[br]
## Higher values provide better coverage but increase test duration.
var fuzzer_iterations: int = Fuzzer.ITERATION_DEFAULT_COUNT
## Array of fuzzer configurations for test parameters.[br]
## [br]
## Each [GdFunctionArgument] defines how random test data[br]
## should be generated for a particular parameter.
var fuzzers: Array[GdFunctionArgument] = []
# There is a bug in `duplicate` see https://github.com/godotengine/godot/issues/98644
# we need in addition to overwrite default values with the source values
@warning_ignore("native_method_override")
func clone() -> Resource:
var copy: TestCaseAttribute = TestCaseAttribute.new()
copy.timeout = timeout
copy.test_seed = test_seed
copy.is_skipped = is_skipped
copy.skip_reason = skip_reason
copy.fuzzer_iterations = fuzzer_iterations
copy.fuzzers = fuzzers.duplicate()
return copy