diff --git a/__tests__/__outputs__/dart-json.md b/__tests__/__outputs__/dart-json.md
index 80a2846..6fec70c 100644
--- a/__tests__/__outputs__/dart-json.md
+++ b/__tests__/__outputs__/dart-json.md
@@ -3,12 +3,12 @@
**6** tests were completed in **4s** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[test/main_test.dart](#r0s0)|1✔️|3❌||74ms|
-|[test/second_test.dart](#r0s1)||1❌|1✖️|51ms|
+|[test/main_test.dart](#r0s0)|1✅|3❌||74ms|
+|[test/second_test.dart](#r0s1)||1❌|1⚪|51ms|
### ❌ test/main_test.dart
```
Test 1
- ✔️ Passing test
+ ✅ Passing test
Test 1 Test 1.1
❌ Failing test
Expected: <2>
@@ -24,5 +24,5 @@ Test 2
```
❌ Timeout test
TimeoutException after 0:00:00.000001: Test timed out after 0 seconds.
-✖️ Skipped test
+⚪ Skipped test
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md
index ddaaecd..0fc9f7b 100644
--- a/__tests__/__outputs__/dotnet-trx.md
+++ b/__tests__/__outputs__/dotnet-trx.md
@@ -3,10 +3,10 @@
**11** tests were completed in **1s** with **5** passed, **5** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[DotnetTests.XUnitTests.CalculatorTests](#r0s0)|5✔️|5❌|1✖️|118ms|
+|[DotnetTests.XUnitTests.CalculatorTests](#r0s0)|5✅|5❌|1⚪|118ms|
### ❌ DotnetTests.XUnitTests.CalculatorTests
```
-✔️ Custom Name
+✅ Custom Name
❌ Exception_In_TargetTest
System.DivideByZeroException : Attempted to divide by zero.
❌ Exception_In_Test
@@ -15,17 +15,17 @@
Assert.Equal() Failure
Expected: 3
Actual: 2
-✔️ Is_Even_Number(i: 2)
+✅ Is_Even_Number(i: 2)
❌ Is_Even_Number(i: 3)
Assert.True() Failure
Expected: True
Actual: False
-✔️ Passing_Test
-✔️ Should be even number(i: 2)
+✅ Passing_Test
+✅ Should be even number(i: 2)
❌ Should be even number(i: 3)
Assert.True() Failure
Expected: True
Actual: False
-✖️ Skipped_Test
-✔️ Timeout_Test
+⚪ Skipped_Test
+✅ Timeout_Test
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/fluent-validation-test-results.md b/__tests__/__outputs__/fluent-validation-test-results.md
index 9f35f00..59a056c 100644
--- a/__tests__/__outputs__/fluent-validation-test-results.md
+++ b/__tests__/__outputs__/fluent-validation-test-results.md
@@ -1,1057 +1,1057 @@

-## ✔️ fixtures/external/FluentValidation.Tests.trx
+## ✅ fixtures/external/FluentValidation.Tests.trx
**804** tests were completed in **4s** with **803** passed, **0** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[FluentValidation.Tests.AbstractValidatorTester](#r0s0)|35✔️|||12ms|
-|[FluentValidation.Tests.AccessorCacheTests](#r0s1)|4✔️||1✖️|4ms|
-|[FluentValidation.Tests.AssemblyScannerTester](#r0s2)|2✔️|||2ms|
-|[FluentValidation.Tests.CascadingFailuresTester](#r0s3)|38✔️|||23ms|
-|[FluentValidation.Tests.ChainedValidationTester](#r0s4)|13✔️|||6ms|
-|[FluentValidation.Tests.ChainingValidatorsTester](#r0s5)|3✔️|||1ms|
-|[FluentValidation.Tests.ChildRulesTests](#r0s6)|2✔️|||7ms|
-|[FluentValidation.Tests.CollectionValidatorWithParentTests](#r0s7)|16✔️|||13ms|
-|[FluentValidation.Tests.ComplexValidationTester](#r0s8)|17✔️|||26ms|
-|[FluentValidation.Tests.ConditionTests](#r0s9)|18✔️|||9ms|
-|[FluentValidation.Tests.CreditCardValidatorTests](#r0s10)|2✔️|||2ms|
-|[FluentValidation.Tests.CustomFailureActionTester](#r0s11)|3✔️|||1ms|
-|[FluentValidation.Tests.CustomMessageFormatTester](#r0s12)|6✔️|||3ms|
-|[FluentValidation.Tests.CustomValidatorTester](#r0s13)|10✔️|||6ms|
-|[FluentValidation.Tests.DefaultValidatorExtensionTester](#r0s14)|30✔️|||38ms|
-|[FluentValidation.Tests.EmailValidatorTests](#r0s15)|36✔️|||18ms|
-|[FluentValidation.Tests.EmptyTester](#r0s16)|9✔️|||5ms|
-|[FluentValidation.Tests.EnumValidatorTests](#r0s17)|12✔️|||24ms|
-|[FluentValidation.Tests.EqualValidatorTests](#r0s18)|10✔️|||3ms|
-|[FluentValidation.Tests.ExactLengthValidatorTester](#r0s19)|6✔️|||2ms|
-|[FluentValidation.Tests.ExclusiveBetweenValidatorTests](#r0s20)|19✔️|||6ms|
-|[FluentValidation.Tests.ExtensionTester](#r0s21)|4✔️|||1ms|
-|[FluentValidation.Tests.ForEachRuleTests](#r0s22)|34✔️|||47ms|
-|[FluentValidation.Tests.GreaterThanOrEqualToValidatorTester](#r0s23)|14✔️|||5ms|
-|[FluentValidation.Tests.GreaterThanValidatorTester](#r0s24)|13✔️|||4ms|
-|[FluentValidation.Tests.InclusiveBetweenValidatorTests](#r0s25)|18✔️|||4ms|
-|[FluentValidation.Tests.InheritanceValidatorTest](#r0s26)|11✔️|||18ms|
-|[FluentValidation.Tests.InlineValidatorTester](#r0s27)|1✔️|||2ms|
-|[FluentValidation.Tests.LanguageManagerTests](#r0s28)|21✔️|||28ms|
-|[FluentValidation.Tests.LengthValidatorTests](#r0s29)|16✔️|||17ms|
-|[FluentValidation.Tests.LessThanOrEqualToValidatorTester](#r0s30)|13✔️|||4ms|
-|[FluentValidation.Tests.LessThanValidatorTester](#r0s31)|16✔️|||6ms|
-|[FluentValidation.Tests.LocalisedMessagesTester](#r0s32)|6✔️|||3ms|
-|[FluentValidation.Tests.LocalisedNameTester](#r0s33)|2✔️|||1ms|
-|[FluentValidation.Tests.MemberAccessorTests](#r0s34)|9✔️|||5ms|
-|[FluentValidation.Tests.MessageFormatterTests](#r0s35)|10✔️|||2ms|
-|[FluentValidation.Tests.ModelLevelValidatorTests](#r0s36)|2✔️|||1ms|
-|[FluentValidation.Tests.NameResolutionPluggabilityTester](#r0s37)|3✔️|||2ms|
-|[FluentValidation.Tests.NotEmptyTester](#r0s38)|10✔️|||7ms|
-|[FluentValidation.Tests.NotEqualValidatorTests](#r0s39)|11✔️|||7ms|
-|[FluentValidation.Tests.NotNullTester](#r0s40)|5✔️|||1ms|
-|[FluentValidation.Tests.NullTester](#r0s41)|5✔️|||2ms|
-|[FluentValidation.Tests.OnFailureTests](#r0s42)|10✔️|||8ms|
-|[FluentValidation.Tests.PredicateValidatorTester](#r0s43)|5✔️|||2ms|
-|[FluentValidation.Tests.PropertyChainTests](#r0s44)|7✔️|||1ms|
-|[FluentValidation.Tests.RegularExpressionValidatorTests](#r0s45)|15✔️|||6ms|
-|[FluentValidation.Tests.RuleBuilderTests](#r0s46)|29✔️|||96ms|
-|[FluentValidation.Tests.RuleDependencyTests](#r0s47)|14✔️|||3s|
-|[FluentValidation.Tests.RulesetTests](#r0s48)|21✔️|||14ms|
-|[FluentValidation.Tests.ScalePrecisionValidatorTests](#r0s49)|6✔️|||4ms|
-|[FluentValidation.Tests.SharedConditionTests](#r0s50)|42✔️|||42ms|
-|[FluentValidation.Tests.StandalonePropertyValidationTester](#r0s51)|1✔️|||0ms|
-|[FluentValidation.Tests.StringEnumValidatorTests](#r0s52)|10✔️|||5ms|
-|[FluentValidation.Tests.TrackingCollectionTests](#r0s53)|3✔️|||2ms|
-|[FluentValidation.Tests.TransformTests](#r0s54)|4✔️|||3ms|
-|[FluentValidation.Tests.UserSeverityTester](#r0s55)|7✔️|||3ms|
-|[FluentValidation.Tests.UserStateTester](#r0s56)|4✔️|||3ms|
-|[FluentValidation.Tests.ValidateAndThrowTester](#r0s57)|14✔️|||25ms|
-|[FluentValidation.Tests.ValidationResultTests](#r0s58)|8✔️|||8ms|
-|[FluentValidation.Tests.ValidatorDescriptorTester](#r0s59)|5✔️|||1ms|
-|[FluentValidation.Tests.ValidatorSelectorTests](#r0s60)|10✔️|||9ms|
-|[FluentValidation.Tests.ValidatorTesterTester](#r0s61)|73✔️|||74ms|
-### ✔️ FluentValidation.Tests.AbstractValidatorTester
-```
-✔️ Can_replace_default_errorcode_resolver
-✔️ CanValidateInstancesOfType_returns_false_when_comparing_against_some_other_type
-✔️ CanValidateInstancesOfType_returns_true_when_comparing_against_same_type
-✔️ CanValidateInstancesOfType_returns_true_when_comparing_against_subclass
-✔️ Default_error_code_should_be_class_name
-✔️ OverridePropertyName_should_override_property_name
-✔️ OverridePropertyName_with_lambda_should_override_property_name
-✔️ PreValidate_bypasses_nullcheck_on_instance
-✔️ RuleForeach_with_null_instances
-✔️ Should_be_valid_when_there_are_no_failures_for_single_property
-✔️ Should_not_main_state
-✔️ Should_throw_for_non_member_expression_when_validating_single_property
-✔️ Should_throw_when_rule_is_null
-✔️ Should_validate_public_Field
-✔️ Should_validate_single_Field
-✔️ Should_validate_single_property
-✔️ Should_validate_single_property_where_invalid_property_as_string
-✔️ Should_validate_single_property_where_property_as_string
-✔️ Uses_named_parameters_to_validate_ruleset
-✔️ Validates_single_property_by_path
-✔️ Validates_type_when_using_non_generic_validate_overload
-✔️ When_the_validators_fail_then_the_errors_Should_be_accessible_via_the_errors_property
-✔️ When_the_validators_fail_then_validatorrunner_should_return_false
-✔️ When_the_Validators_pass_then_the_validatorRunner_should_return_true
-✔️ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: )
-✔️ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: AnotherInt Test Message)
-✔️ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: )
-✔️ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: AnotherInt Test Message)
-✔️ WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate
-✔️ WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync
-✔️ WithErrorCode_should_override_error_code
-✔️ WithMessage_and_WithErrorCode_should_override_error_message_and_error_code
-✔️ WithMessage_should_override_error_message
-✔️ WithName_should_override_field_name
-✔️ WithName_should_override_field_name_with_value_from_other_property
-```
-### ✔️ FluentValidation.Tests.AccessorCacheTests
-```
-✖️ Benchmark
-✔️ Equality_comparison_check
-✔️ Gets_accessor
-✔️ Gets_member_for_nested_property
-✔️ Identifies_if_memberexp_acts_on_model_instance
-```
-### ✔️ FluentValidation.Tests.AssemblyScannerTester
-```
-✔️ Finds_validators_for_types
-✔️ ForEach_iterates_over_types
-```
-### ✔️ FluentValidation.Tests.CascadingFailuresTester
-```
-✔️ Cascade_mode_can_be_set_after_validator_instantiated
-✔️ Cascade_mode_can_be_set_after_validator_instantiated_async
-✔️ Cascade_mode_can_be_set_after_validator_instantiated_async_legacy
-✔️ Cascade_mode_can_be_set_after_validator_instantiated_legacy
-✔️ Validation_continues_on_failure
-✔️ Validation_continues_on_failure_async
-✔️ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level
-✔️ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async
-✔️ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async_legacy
-✔️ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_legacy
-✔️ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level
-✔️ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async
-✔️ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async_legacy
-✔️ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_legacy
-✔️ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop
-✔️ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async
-✔️ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async_legacy
-✔️ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_legacy
-✔️ Validation_continues_when_set_to_Continue_at_validator_level
-✔️ Validation_continues_when_set_to_Continue_at_validator_level_async
-✔️ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level
-✔️ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async
-✔️ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async_legacy
-✔️ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_legacy
-✔️ Validation_stops_on_first_failure
-✔️ Validation_stops_on_first_failure_async
-✔️ Validation_stops_on_first_failure_async_legacy
-✔️ Validation_stops_on_first_failure_legacy
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously_legacy
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async_legacy
-✔️ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_legacy
-✔️ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level
-✔️ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async
-✔️ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async_legacy
-✔️ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_legacy
-```
-### ✔️ FluentValidation.Tests.ChainedValidationTester
-```
-✔️ Can_validate_using_validator_for_base_type
-✔️ Chained_property_should_be_excluded
-✔️ Chained_validator_descriptor
-✔️ Chained_validator_should_not_be_invoked_on_null_property
-✔️ Condition_should_work_with_chained_property
-✔️ Explicitly_included_properties_should_be_propagated_to_nested_validators
-✔️ Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings
-✔️ Separate_validation_on_chained_property
-✔️ Separate_validation_on_chained_property_conditional
-✔️ Separate_validation_on_chained_property_valid
-✔️ Should_allow_normal_rules_and_chained_property_on_same_property
-✔️ Uses_explicit_ruleset
-✔️ Validates_chained_property
-```
-### ✔️ FluentValidation.Tests.ChainingValidatorsTester
-```
-✔️ Options_should_only_apply_to_current_validator
-✔️ Should_create_multiple_validators
-✔️ Should_execute_multiple_validators
-```
-### ✔️ FluentValidation.Tests.ChildRulesTests
-```
-✔️ Can_define_nested_rules_for_collection
-✔️ ChildRules_works_with_RuleSet
-```
-### ✔️ FluentValidation.Tests.CollectionValidatorWithParentTests
-```
-✔️ Async_condition_should_work_with_child_collection
-✔️ Can_specify_condition_for_individual_collection_elements
-✔️ Can_validate_collection_using_validator_for_base_type
-✔️ Collection_should_be_excluded
-✔️ Collection_should_be_explicitly_included_with_expression
-✔️ Collection_should_be_explicitly_included_with_string
-✔️ Condition_should_work_with_child_collection
-✔️ Creates_validator_using_context_from_property_value
-✔️ Should_override_property_name
-✔️ Should_work_with_top_level_collection_validator
-✔️ Should_work_with_top_level_collection_validator_and_overriden_name
-✔️ Skips_null_items
-✔️ Validates_collection
-✔️ Validates_collection_asynchronously
-✔️ Validates_collection_several_levels_deep
-✔️ Validates_collection_several_levels_deep_async
-```
-### ✔️ FluentValidation.Tests.ComplexValidationTester
-```
-✔️ Async_condition_should_work_with_complex_property
-✔️ Async_condition_should_work_with_complex_property_when_validator_invoked_synchronously
-✔️ Can_directly_validate_multiple_fields_of_same_type
-✔️ Can_validate_using_validator_for_base_type
-✔️ Complex_property_should_be_excluded
-✔️ Complex_validator_should_not_be_invoked_on_null_property
-✔️ Condition_should_work_with_complex_property
-✔️ Condition_should_work_with_complex_property_when_invoked_async
-✔️ Explicitly_included_properties_should_be_propagated_to_nested_validators
-✔️ Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings
-✔️ Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor
-✔️ Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_async
-✔️ Should_allow_normal_rules_and_complex_property_on_same_property
-✔️ Should_override_propertyName
-✔️ Validates_child_validator_asynchronously
-✔️ Validates_child_validator_synchronously
-✔️ Validates_complex_property
-```
-### ✔️ FluentValidation.Tests.ConditionTests
-```
-✔️ Async_condition_executed_synchronosuly_with_asynchronous_collection_rule
-✔️ Async_condition_executed_synchronosuly_with_asynchronous_rule
-✔️ Async_condition_executed_synchronosuly_with_synchronous_collection_role
-✔️ Async_condition_executed_synchronosuly_with_synchronous_role
-✔️ Async_condition_is_applied_to_all_validators_in_the_chain
-✔️ Async_condition_is_applied_to_all_validators_in_the_chain_when_executed_synchronously
-✔️ Async_condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator
-✔️ Condition_is_applied_to_all_validators_in_the_chain
-✔️ Condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator
-✔️ Sync_condition_is_applied_to_async_validators
-✔️ Validation_should_fail_when_async_condition_does_not_match
-✔️ Validation_should_fail_when_async_condition_matches
-✔️ Validation_should_fail_when_condition_does_not_match
-✔️ Validation_should_fail_when_condition_matches
-✔️ Validation_should_succeed_when_async_condition_does_not_match
-✔️ Validation_should_succeed_when_async_condition_matches
-✔️ Validation_should_succeed_when_condition_does_not_match
-✔️ Validation_should_succeed_when_condition_matches
-```
-### ✔️ FluentValidation.Tests.CreditCardValidatorTests
-```
-✔️ IsValidTests
-✔️ When_validation_fails_the_default_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.CustomFailureActionTester
-```
-✔️ Does_not_invoke_action_if_validation_success
-✔️ Invokes_custom_action_on_failure
-✔️ Passes_object_being_validated_to_action
-```
-### ✔️ FluentValidation.Tests.CustomMessageFormatTester
-```
-✔️ Replaces_propertyvalue_placeholder
-✔️ Replaces_propertyvalue_with_empty_string_when_null
-✔️ Should_format_custom_message
-✔️ Uses_custom_delegate_for_building_message
-✔️ Uses_custom_delegate_for_building_message_only_for_specific_validator
-✔️ Uses_property_value_in_message
-```
-### ✔️ FluentValidation.Tests.CustomValidatorTester
-```
-✔️ New_Custom_Returns_single_failure
-✔️ New_Custom_Returns_single_failure_async
-✔️ New_custom_uses_empty_property_name_for_model_level_rule
-✔️ New_Custom_When_property_name_omitted_infers_property_name
-✔️ New_Custom_When_property_name_omitted_infers_property_name_nested
-✔️ New_Custom_within_ruleset
-✔️ New_CustomAsync_within_ruleset
-✔️ Perserves_property_chain_using_custom
-✔️ Runs_async_rule_synchronously_when_validator_invoked_synchronously
-✔️ Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously
-```
-### ✔️ FluentValidation.Tests.DefaultValidatorExtensionTester
-```
-✔️ Empty_should_create_EmptyValidator
-✔️ Equal_should_create_EqualValidator_with_explicit_value
-✔️ Equal_should_create_EqualValidator_with_lambda
-✔️ GreaterThan_should_create_GreaterThanValidator_with_explicit_value
-✔️ GreaterThan_should_create_GreaterThanValidator_with_lambda
-✔️ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_explicit_value
-✔️ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda
-✔️ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda_with_other_Nullable
-✔️ Length_should_create_ExactLengthValidator
-✔️ Length_should_create_LengthValidator
-✔️ Length_should_create_MaximumLengthValidator
-✔️ Length_should_create_MinimumLengthValidator
-✔️ LessThan_should_create_LessThanValidator_with_explicit_value
-✔️ LessThan_should_create_LessThanValidator_with_lambda
-✔️ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_value
-✔️ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda
-✔️ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_with_other_Nullable
-✔️ Must_should_create_PredicateValidator_with_context
-✔️ Must_should_create_PredicateValidator_with_PropertyValidatorContext
-✔️ Must_should_create_PredicteValidator
-✔️ MustAsync_should_create_AsyncPredicateValidator_with_context
-✔️ MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidatorContext
-✔️ MustAsync_should_create_AsyncPredicteValidator
-✔️ MustAsync_should_not_throw_InvalidCastException
-✔️ NotEmpty_should_create_NotEmptyValidator
-✔️ NotEqual_should_create_NotEqualValidator_with_explicit_value
-✔️ NotEqual_should_create_NotEqualValidator_with_lambda
-✔️ NotNull_should_create_NotNullValidator
-✔️ ScalePrecision_should_create_ScalePrecisionValidator
-✔️ ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trailing_zeros
-```
-### ✔️ FluentValidation.Tests.EmailValidatorTests
-```
-✔️ Fails_email_validation_aspnetcore_compatible(email: " \r \t \n")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "@someDomain.com")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "@someDomain@abc.com")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "0")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "someName")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "someName@")
-✔️ Fails_email_validation_aspnetcore_compatible(email: "someName@a@b.com")
-✔️ Invalid_email_addressex_regex(email: "")
-✔️ Invalid_email_addressex_regex(email: "first.last@test..co.uk")
-✔️ Invalid_email_addressex_regex(email: "testperso")
-✔️ Invalid_email_addressex_regex(email: "thisisaverylongstringcodeplex.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: " @someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "!#$%&'*+-/=?^_`|~@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "\"firstName.lastName\"@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "1234@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "firstName.lastName@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "someName@1234.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "someName@some_domain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "someName@some~domain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com")
-✔️ Valid_email_addresses_aspnetcore_compatible(email: null)
-✔️ Valid_email_addresses_regex(email: "__somename@example.com")
-✔️ Valid_email_addresses_regex(email: "!def!xyz%abc@example.com")
-✔️ Valid_email_addresses_regex(email: "\"Abc@def\"@example.com")
-✔️ Valid_email_addresses_regex(email: "\"Abc\\@def\"@example.com")
-✔️ Valid_email_addresses_regex(email: "\"Fred Bloggs\"@example.com")
-✔️ Valid_email_addresses_regex(email: "\"Joe\\Blow\"@example.com")
-✔️ Valid_email_addresses_regex(email: "$A12345@example.com")
-✔️ Valid_email_addresses_regex(email: "customer/department=shipping@example.com")
-✔️ Valid_email_addresses_regex(email: "first.last@test.co.uk")
-✔️ Valid_email_addresses_regex(email: "testperson@gmail.com")
-✔️ Valid_email_addresses_regex(email: "TestPerson@gmail.com")
-✔️ Valid_email_addresses_regex(email: "testperson+label@gmail.com")
-✔️ Valid_email_addresses_regex(email: null)
-```
-### ✔️ FluentValidation.Tests.EmptyTester
-```
-✔️ Passes_for_ienumerable_that_doesnt_implement_ICollection
-✔️ Passes_when_collection_empty
-✔️ When_there_is_a_value_then_the_validator_should_fail
-✔️ When_validation_fails_error_should_be_set
-✔️ When_value_is_Default_for_type_validator_should_pass_datetime
-✔️ When_value_is_Default_for_type_validator_should_pass_int
-✔️ When_value_is_empty_string_validator_should_pass
-✔️ When_value_is_null_validator_should_pass
-✔️ When_value_is_whitespace_validation_should_pass
-```
-### ✔️ FluentValidation.Tests.EnumValidatorTests
-```
-✔️ Flags_enum_invalid_when_using_outofrange_negative_value
-✔️ Flags_enum_invalid_when_using_outofrange_positive_value
-✔️ Flags_enum_valid_when_using_bitwise_value
-✔️ Flags_enum_validates_correctly_when_using_zero_value
-✔️ Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value
-✔️ IsValidTests
-✔️ Nullable_enum_invalid_when_bad_value_specified
-✔️ Nullable_enum_valid_when_property_value_is_null
-✔️ Nullable_enum_valid_when_value_specified
-✔️ When_the_enum_is_initialized_with_invalid_value_then_the_validator_should_fail
-✔️ When_the_enum_is_not_initialized_with_valid_value_then_the_validator_should_fail
-✔️ When_validation_fails_the_default_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.EqualValidatorTests
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Should_store_comparison_type
-✔️ Should_store_property_to_compare
-✔️ Should_succeed_on_case_insensitive_comparison
-✔️ Should_succeed_on_case_insensitive_comparison_using_expression
-✔️ Should_use_ordinal_comparison_by_default
-✔️ Validates_against_property
-✔️ When_the_objects_are_equal_validation_should_succeed
-✔️ When_the_objects_are_not_equal_validation_should_fail
-✔️ When_validation_fails_the_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.ExactLengthValidatorTester
-```
-✔️ Min_and_max_properties_should_be_set
-✔️ When_exact_length_rule_failes_error_should_have_exact_length_error_errorcode
-✔️ When_the_text_is_an_exact_length_the_validator_should_pass
-✔️ When_the_text_length_is_larger_the_validator_should_fail
-✔️ When_the_text_length_is_smaller_the_validator_should_fail
-✔️ When_the_validator_fails_the_error_message_should_be_set
-```
-### ✔️ FluentValidation.Tests.ExclusiveBetweenValidatorTests
-```
-✔️ To_and_from_properties_should_be_set
-✔️ To_and_from_properties_should_be_set_for_dates
-✔️ To_and_from_properties_should_be_set_for_strings
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_not_null
-✔️ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
-✔️ When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings
-✔️ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw
-✔️ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings
-✔️ When_the_validator_fails_the_error_message_should_be_set
-✔️ When_the_validator_fails_the_error_message_should_be_set_for_strings
-✔️ When_the_value_is_between_the_range_specified_then_the_validator_should_pass
-✔️ When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings
-✔️ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail
-✔️ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail_for_strings
-✔️ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail
-✔️ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail_for_strings
-✔️ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail
-✔️ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings
-```
-### ✔️ FluentValidation.Tests.ExtensionTester
-```
-✔️ Should_extract_member_from_member_expression
-✔️ Should_return_null_for_non_member_expressions
-✔️ Should_split_pascal_cased_member_name
-✔️ SplitPascalCase_should_return_null_when_input_is_null
-```
-### ✔️ FluentValidation.Tests.ForEachRuleTests
-```
-✔️ Async_condition_should_work_with_child_collection
-✔️ Can_access_colletion_index
-✔️ Can_access_colletion_index_async
-✔️ Can_access_parent_index
-✔️ Can_access_parent_index_async
-✔️ Can_specify_condition_for_individual_collection_elements
-✔️ Can_use_cascade_with_RuleForEach
-✔️ Can_validate_collection_using_validator_for_base_type
-✔️ Collection_should_be_excluded
-✔️ Collection_should_be_explicitly_included_with_expression
-✔️ Collection_should_be_explicitly_included_with_string
-✔️ Condition_should_work_with_child_collection
-✔️ Correctly_gets_collection_indices
-✔️ Correctly_gets_collection_indices_async
-✔️ Executes_rule_for_each_item_in_collection
-✔️ Executes_rule_for_each_item_in_collection_async
-✔️ Nested_collection_for_null_property_should_not_throw_null_reference
-✔️ Nested_conditions_Rule_For
-✔️ Nested_conditions_Rule_For_Each
-✔️ Overrides_indexer
-✔️ Overrides_indexer_async
-✔️ Regular_rules_can_drop_into_RuleForEach
-✔️ RuleForEach_async_RunsTasksSynchronously
-✔️ Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep
-✔️ Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep_with_ValidateAsync
-✔️ Should_override_property_name
-✔️ Skips_null_items
-✔️ Top_level_collection
-✔️ Uses_useful_error_message_when_used_on_non_property
-✔️ Validates_child_validator_asynchronously
-✔️ Validates_child_validator_synchronously
-✔️ Validates_collection
-✔️ When_runs_outside_RuleForEach_loop
-✔️ When_runs_outside_RuleForEach_loop_async
-```
-### ✔️ FluentValidation.Tests.GreaterThanOrEqualToValidatorTester
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Comparison_type
-✔️ Should_fail_when_less_than_input
-✔️ Should_localize_value
-✔️ Should_set_default_error_when_validation_fails
-✔️ Should_succeed_when_equal_to_input
-✔️ Should_succeed_when_greater_than_input
-✔️ Validates_nullable_with_nullable_property
-✔️ Validates_with_nullable_property
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_is_null_cross_property
-✔️ Validates_with_nullable_when_property_not_null
-✔️ Validates_with_nullable_when_property_not_null_cross_property
-✔️ Validates_with_property
-```
-### ✔️ FluentValidation.Tests.GreaterThanValidatorTester
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Comparison_Type
-✔️ Should_fail_when_equal_to_input
-✔️ Should_fail_when_less_than_input
-✔️ Should_set_default_error_when_validation_fails
-✔️ Should_succeed_when_greater_than_input
-✔️ Validates_nullable_with_nullable_property
-✔️ Validates_with_nullable_property
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_is_null_cross_property
-✔️ Validates_with_nullable_when_property_not_null
-✔️ Validates_with_nullable_when_property_not_null_cross_property
-✔️ Validates_with_property
-```
-### ✔️ FluentValidation.Tests.InclusiveBetweenValidatorTests
-```
-✔️ To_and_from_properties_should_be_set
-✔️ To_and_from_properties_should_be_set_for_strings
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_not_null
-✔️ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
-✔️ When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings
-✔️ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw
-✔️ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings
-✔️ When_the_validator_fails_the_error_message_should_be_set
-✔️ When_the_validator_fails_the_error_message_should_be_set_for_strings
-✔️ When_the_value_is_between_the_range_specified_then_the_validator_should_pass
-✔️ When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings
-✔️ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass
-✔️ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass_for_strings
-✔️ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass
-✔️ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass_for_strings
-✔️ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail
-✔️ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings
-```
-### ✔️ FluentValidation.Tests.InheritanceValidatorTest
-```
-✔️ Can_use_custom_subclass_with_nongeneric_overload
-✔️ Validates_collection
-✔️ Validates_collection_async
-✔️ Validates_inheritance_async
-✔️ Validates_inheritance_hierarchy
-✔️ Validates_ruleset
-✔️ Validates_ruleset_async
-✔️ Validates_with_callback
-✔️ Validates_with_callback_accepting_derived
-✔️ Validates_with_callback_accepting_derived_async
-✔️ Validates_with_callback_async
-```
-### ✔️ FluentValidation.Tests.InlineValidatorTester
-```
-✔️ Uses_inline_validator_to_build_rules
-```
-### ✔️ FluentValidation.Tests.LanguageManagerTests
-```
-✔️ All_languages_should_be_loaded
-✔️ All_localizations_have_same_parameters_as_English
-✔️ Always_use_specific_language
-✔️ Always_use_specific_language_with_string_source
-✔️ Can_replace_message
-✔️ Can_replace_message_without_overriding_all_languages
-✔️ Disables_localization
-✔️ Falls_back_to_default_localization_key_when_error_code_key_not_found
-✔️ Falls_back_to_english_when_culture_not_registered
-✔️ Falls_back_to_english_when_translation_missing
-✔️ Falls_back_to_parent_culture
-✔️ Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn-BA")
-✔️ Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn")
-✔️ Gets_translation_for_bosnian_latin_culture(cultureName: "bs")
-✔️ Gets_translation_for_croatian_culture
-✔️ Gets_translation_for_culture
-✔️ Gets_translation_for_serbian_culture(cultureName: "sr-Latn-RS")
-✔️ Gets_translation_for_serbian_culture(cultureName: "sr-Latn")
-✔️ Gets_translation_for_serbian_culture(cultureName: "sr")
-✔️ Gets_translation_for_specific_culture
-✔️ Uses_error_code_as_localization_key
-```
-### ✔️ FluentValidation.Tests.LengthValidatorTests
-```
-✔️ Min_and_max_properties_should_be_set
-✔️ When_input_is_null_then_the_validator_should_pass
-✔️ When_the_max_is_smaller_than_the_min_then_the_validator_should_throw
-✔️ When_the_maxlength_validator_fails_the_error_message_should_be_set
-✔️ When_the_minlength_validator_fails_the_error_message_should_be_set
-✔️ When_the_text_is_between_the_lambda_range_specified_then_the_validator_should_pass
-✔️ When_the_text_is_between_the_range_specified_then_the_validator_should_pass
-✔️ When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_validator_should_pass
-✔️ When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_validator_should_pass
-✔️ When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass
-✔️ When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass
-✔️ When_the_text_is_larger_than_the_lambda_range_then_the_validator_should_fail
-✔️ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
-✔️ When_the_text_is_smaller_than_the_lambda_range_then_the_validator_should_fail
-✔️ When_the_text_is_smaller_than_the_range_then_the_validator_should_fail
-✔️ When_the_validator_fails_the_error_message_should_be_set
-```
-### ✔️ FluentValidation.Tests.LessThanOrEqualToValidatorTester
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Comparison_type
-✔️ Should_fail_when_greater_than_input
-✔️ Should_set_default_error_when_validation_fails
-✔️ Should_succeed_when_equal_to_input
-✔️ Should_succeed_when_less_than_input
-✔️ Validates_nullable_with_nullable_property
-✔️ Validates_with_nullable_property
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_is_null_cross_property
-✔️ Validates_with_nullable_when_property_not_null
-✔️ Validates_with_nullable_when_property_not_null_cross_property
-✔️ Validates_with_property
-```
-### ✔️ FluentValidation.Tests.LessThanValidatorTester
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Comparison_type
-✔️ Extracts_property_from_constant_using_expression
-✔️ Extracts_property_from_expression
-✔️ Should_fail_when_equal_to_input
-✔️ Should_fail_when_greater_than_input
-✔️ Should_set_default_validation_message_when_validation_fails
-✔️ Should_succeed_when_less_than_input
-✔️ Should_throw_when_value_to_compare_is_null
-✔️ Validates_against_property
-✔️ Validates_nullable_with_nullable_property
-✔️ Validates_with_nullable_property
-✔️ Validates_with_nullable_when_property_is_null
-✔️ Validates_with_nullable_when_property_not_null
-✔️ Validates_with_nullable_when_property_not_null_cross_property
-✔️ Validates_with_nullable_when_property_null_cross_property
-```
-### ✔️ FluentValidation.Tests.LocalisedMessagesTester
-```
-✔️ Correctly_assigns_default_localized_error_message
-✔️ Does_not_throw_InvalidCastException_when_using_RuleForEach
-✔️ Formats_string_with_placeholders
-✔️ Formats_string_with_placeholders_when_you_cant_edit_the_string
-✔️ Uses_func_to_get_message
-✔️ Uses_string_format_with_property_value
-```
-### ✔️ FluentValidation.Tests.LocalisedNameTester
-```
-✔️ Uses_localized_name
-✔️ Uses_localized_name_expression
-```
-### ✔️ FluentValidation.Tests.MemberAccessorTests
-```
-✔️ ComplexPropertyGet
-✔️ ComplexPropertySet
-✔️ Equality
-✔️ ImplicitCast
-✔️ Name
-✔️ SimpleFieldGet
-✔️ SimpleFieldSet
-✔️ SimplePropertyGet
-✔️ SimplePropertySet
-```
-### ✔️ FluentValidation.Tests.MessageFormatterTests
-```
-✔️ Adds_argument_and_custom_arguments
-✔️ Adds_formatted_argument_and_custom_arguments
-✔️ Adds_formatted_argument_and_formatted_custom_arguments
-✔️ Adds_PropertyName_to_message
-✔️ Adds_value_to_message
-✔️ Format_property_value
-✔️ Should_ignore_unknown_numbered_parameters
-✔️ Should_ignore_unknown_parameters
-✔️ Understands_date_formats
-✔️ Understands_numeric_formats
-```
-### ✔️ FluentValidation.Tests.ModelLevelValidatorTests
-```
-✔️ Can_use_child_validator_at_model_level
-✔️ Validates_at_model_level
-```
-### ✔️ FluentValidation.Tests.NameResolutionPluggabilityTester
-```
-✔️ Resolves_nested_properties
-✔️ ShouldHaveValidationError_Should_support_custom_propertynameresolver
-✔️ Uses_custom_property_name
-```
-### ✔️ FluentValidation.Tests.NotEmptyTester
-```
-✔️ Fails_for_array
-✔️ Fails_for_ienumerable_that_doesnt_implement_ICollection
-✔️ Fails_when_collection_empty
-✔️ When_there_is_a_value_then_the_validator_should_pass
-✔️ When_validation_fails_error_should_be_set
-✔️ When_value_is_Default_for_type_validator_should_fail_datetime
-✔️ When_value_is_Default_for_type_validator_should_fail_int
-✔️ When_value_is_empty_string_validator_should_fail
-✔️ When_value_is_null_validator_should_fail
-✔️ When_value_is_whitespace_validation_should_fail
-```
-### ✔️ FluentValidation.Tests.NotEqualValidatorTests
-```
-✔️ Comparison_property_uses_custom_resolver
-✔️ Should_handle_custom_value_types_correctly
-✔️ Should_not_be_valid_for_case_insensitve_comparison
-✔️ Should_not_be_valid_for_case_insensitve_comparison_with_expression
-✔️ Should_store_comparison_type
-✔️ Should_store_property_to_compare
-✔️ Should_use_ordinal_comparison_by_default
-✔️ Validates_across_properties
-✔️ When_the_objects_are_equal_then_the_validator_should_fail
-✔️ When_the_objects_are_not_equal_then_the_validator_should_pass
-✔️ When_the_validator_fails_the_error_message_should_be_set
-```
-### ✔️ FluentValidation.Tests.NotNullTester
-```
-✔️ Fails_when_nullable_value_type_is_null
-✔️ Not_null_validator_should_not_crash_with_non_nullable_value_type
-✔️ NotNullValidator_should_fail_if_value_is_null
-✔️ NotNullValidator_should_pass_if_value_has_value
-✔️ When_the_validator_fails_the_error_message_should_be_set
-```
-### ✔️ FluentValidation.Tests.NullTester
-```
-✔️ Not_null_validator_should_not_crash_with_non_nullable_value_type
-✔️ NullValidator_should_fail_if_value_has_value
-✔️ NullValidator_should_pass_if_value_is_null
-✔️ Passes_when_nullable_value_type_is_null
-✔️ When_the_validator_passes_the_error_message_should_be_set
-```
-### ✔️ FluentValidation.Tests.OnFailureTests
-```
-✔️ OnFailure_called_for_each_failed_rule
-✔️ OnFailure_called_for_each_failed_rule_asyncAsync
-✔️ Should_be_able_to_access_error_message_in_OnFailure
-✔️ ShouldHaveChildValidator_should_be_true
-✔️ ShouldHaveChildValidator_works_with_Include
-✔️ WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validator
-✔️ WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator
-✔️ WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_invoked_synchronously
-✔️ WhenWithOnFailure_should_invoke_condition_on_async_inner_validator
-✔️ WhenWithOnFailure_should_invoke_condition_on_inner_validator
-```
-### ✔️ FluentValidation.Tests.PredicateValidatorTester
-```
-✔️ Should_fail_when_predicate_returns_false
-✔️ Should_succeed_when_predicate_returns_true
-✔️ Should_throw_when_predicate_is_null
-✔️ When_validation_fails_metadata_should_be_set_on_failure
-✔️ When_validation_fails_the_default_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.PropertyChainTests
-```
-✔️ AddIndexer_throws_when_nothing_added
-✔️ Calling_ToString_should_construct_string_representation_of_chain
-✔️ Calling_ToString_should_construct_string_representation_of_chain_with_indexers
-✔️ Creates_from_expression
-✔️ Should_be_subchain
-✔️ Should_ignore_blanks
-✔️ Should_not_be_subchain
-```
-### ✔️ FluentValidation.Tests.RegularExpressionValidatorTests
-```
-✔️ Can_access_expression_in_message
-✔️ Can_access_expression_in_message_lambda
-✔️ Can_access_expression_in_message_lambda_regex
-✔️ Uses_lazily_loaded_expression
-✔️ Uses_lazily_loaded_expression_with_options
-✔️ Uses_regex_object
-✔️ When_the_text_does_not_match_the_lambda_regex_regular_expression_then_the_validator_should_fail
-✔️ When_the_text_does_not_match_the_lambda_regular_expression_then_the_validator_should_fail
-✔️ When_the_text_does_not_match_the_regular_expression_then_the_validator_should_fail
-✔️ When_the_text_is_empty_then_the_validator_should_fail
-✔️ When_the_text_is_null_then_the_validator_should_pass
-✔️ When_the_text_matches_the_lambda_regex_regular_expression_then_the_validator_should_pass
-✔️ When_the_text_matches_the_lambda_regular_expression_then_the_validator_should_pass
-✔️ When_the_text_matches_the_regular_expression_then_the_validator_should_pass
-✔️ When_validation_fails_the_default_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.RuleBuilderTests
-```
-✔️ Adding_a_validator_should_return_builder
-✔️ Adding_a_validator_should_store_validator
-✔️ Calling_validate_should_delegate_to_underlying_validator
-✔️ Calling_ValidateAsync_should_delegate_to_underlying_async_validator
-✔️ Calling_ValidateAsync_should_delegate_to_underlying_sync_validator
-✔️ Conditional_child_validator_should_register_with_validator_type_not_property
-✔️ Nullable_object_with_async_condition_should_not_throw
-✔️ Nullable_object_with_condition_should_not_throw
-✔️ Property_should_return_null_when_it_is_not_a_property_being_validated
-✔️ Property_should_return_property_being_validated
-✔️ PropertyDescription_should_return_custom_property_name
-✔️ PropertyDescription_should_return_property_name_split
-✔️ Result_should_use_custom_property_name_when_no_property_name_can_be_determined
-✔️ Rule_for_a_non_memberexpression_should_not_generate_property_name
-✔️ Should_build_property_name
-✔️ Should_compile_expression
-✔️ Should_set_custom_error
-✔️ Should_set_custom_property_name
-✔️ Should_throw_if_message_is_null
-✔️ Should_throw_if_overriding_validator_is_null
-✔️ Should_throw_if_overriding_validator_provider_is_null
-✔️ Should_throw_if_property_name_is_null
-✔️ Should_throw_if_validator_is_null
-✔️ Should_throw_when_async_inverse_predicate_is_null
-✔️ Should_throw_when_async_predicate_is_null
-✔️ Should_throw_when_context_predicate_is_null
-✔️ Should_throw_when_inverse_context_predicate_is_null
-✔️ Should_throw_when_inverse_predicate_is_null
-✔️ Should_throw_when_predicate_is_null
-```
-### ✔️ FluentValidation.Tests.RuleDependencyTests
-```
-✔️ Async_inside_dependent_rules
-✔️ Async_inside_dependent_rules_when_parent_rule_not_async
-✔️ Dependent_rules_inside_ruleset
-✔️ Dependent_rules_inside_when
-✔️ Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass
-✔️ Invokes_dependent_rule_if_parent_rule_passes
-✔️ Nested_dependent_rules
-✔️ Nested_dependent_rules_inside_ruleset
-✔️ Nested_dependent_rules_inside_ruleset_inside_method
-✔️ Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fails
-✔️ Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails
-✔️ TestAsyncWithDependentRules_AsyncEntry
-✔️ TestAsyncWithDependentRules_SyncEntry
-✔️ Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_use_DependentRulesBuilder
-```
-### ✔️ FluentValidation.Tests.RulesetTests
-```
-✔️ Applies_multiple_rulesets_to_rule
-✔️ Combines_rulesets_and_explicit_properties
-✔️ Combines_rulesets_and_explicit_properties_async
-✔️ Executes_all_rules
-✔️ Executes_in_rule_in_default_and_none
-✔️ Executes_in_rule_in_ruleset_and_default
-✔️ Executes_multiple_rulesets
-✔️ Executes_rules_in_default_ruleset_and_specific_ruleset
-✔️ Executes_rules_in_specified_ruleset
-✔️ Executes_rules_not_specified_in_ruleset
-✔️ Includes_all_rulesets
-✔️ Includes_all_rulesets_async
-✔️ Includes_combination_of_rulesets
-✔️ Includes_combination_of_rulesets_async
-✔️ Ruleset_cascades_to_child_collection_validator
-✔️ Ruleset_cascades_to_child_validator
-✔️ Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement
-✔️ Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement_with_lambda
-✔️ Ruleset_selection_should_not_cascade_downwards_when_set_on_property
-✔️ Trims_spaces
-✔️ WithMessage_works_inside_rulesets
-```
-### ✔️ FluentValidation.Tests.ScalePrecisionValidatorTests
-```
-✔️ Scale_precision_should_be_valid
-✔️ Scale_precision_should_be_valid_when_ignoring_trailing_zeroes
-✔️ Scale_precision_should_be_valid_when_they_are_equal
-✔️ Scale_precision_should_not_be_valid
-✔️ Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes
-✔️ Scale_precision_should_not_be_valid_when_they_are_equal
-```
-### ✔️ FluentValidation.Tests.SharedConditionTests
-```
-✔️ Async_condition_can_be_used_inside_ruleset
-✔️ Condition_can_be_used_inside_ruleset
-✔️ Does_not_execute_custom_Rule_when_async_condition_false
-✔️ Does_not_execute_custom_Rule_when_condition_false
-✔️ Does_not_execute_customasync_Rule_when_async_condition_false
-✔️ Does_not_execute_customasync_Rule_when_condition_false
-✔️ Doesnt_throw_NullReferenceException_when_instance_not_null
-✔️ Doesnt_throw_NullReferenceException_when_instance_not_null_async
-✔️ Executes_custom_rule_when_async_condition_true
-✔️ Executes_custom_rule_when_condition_true
-✔️ Executes_customasync_rule_when_async_condition_true
-✔️ Executes_customasync_rule_when_condition_true
-✔️ Nested_async_conditions_with_Custom_rule
-✔️ Nested_async_conditions_with_CustomAsync_rule
-✔️ Nested_conditions_with_Custom_rule
-✔️ Nested_conditions_with_CustomAsync_rule
-✔️ Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied
-✔️ Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied
-✔️ Rules_invoke_when_inverse_shared_async_condition_matches
-✔️ Rules_invoke_when_inverse_shared_condition_matches
-✔️ Rules_not_invoked_when_inverse_shared_async_condition_does_not_match
-✔️ Rules_not_invoked_when_inverse_shared_condition_does_not_match
-✔️ RuleSet_can_be_used_inside_async_condition
-✔️ RuleSet_can_be_used_inside_condition
-✔️ Runs_otherwise_conditions_for_UnlessAsync
-✔️ Runs_otherwise_conditions_for_When
-✔️ Runs_otherwise_conditions_for_WhenAsync
-✔️ Runs_otherwise_conditons_for_Unless
-✔️ Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied
-✔️ Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_is_true
-✔️ Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false
-✔️ Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails
-✔️ Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied
-✔️ Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied
-✔️ Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_true
-✔️ Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false
-✔️ Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails
-✔️ Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied
-✔️ When_async_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached
-✔️ When_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached
-✔️ When_condition_only_executed_once
-✔️ WhenAsync_condition_only_executed_once
-```
-### ✔️ FluentValidation.Tests.StandalonePropertyValidationTester
-```
-✔️ Should_validate_property_value_without_instance
-```
-### ✔️ FluentValidation.Tests.StringEnumValidatorTests
-```
-✔️ IsValidTests_CaseInsensitive_CaseCorrect
-✔️ IsValidTests_CaseInsensitive_CaseIncorrect
-✔️ IsValidTests_CaseSensitive_CaseCorrect
-✔️ IsValidTests_CaseSensitive_CaseIncorrect
-✔️ When_enumType_is_not_an_enum_it_should_throw
-✔️ When_enumType_is_null_it_should_throw
-✔️ When_the_property_is_initialized_with_empty_string_then_the_validator_should_fail
-✔️ When_the_property_is_initialized_with_invalid_string_then_the_validator_should_fail
-✔️ When_the_property_is_initialized_with_null_then_the_validator_should_be_valid
-✔️ When_validation_fails_the_default_error_should_be_set
-```
-### ✔️ FluentValidation.Tests.TrackingCollectionTests
-```
-✔️ Add_AddsItem
-✔️ Should_not_raise_event_once_handler_detached
-✔️ When_Item_Added_Raises_ItemAdded
-```
-### ✔️ FluentValidation.Tests.TransformTests
-```
-✔️ Transforms_collection_element
-✔️ Transforms_collection_element_async
-✔️ Transforms_property_value
-✔️ Transforms_property_value_to_another_type
-```
-### ✔️ FluentValidation.Tests.UserSeverityTester
-```
-✔️ Can_Provide_conditional_severity
-✔️ Can_Provide_severity_for_item_in_collection
-✔️ Correctly_provides_object_being_validated
-✔️ Defaults_user_severity_to_error
-✔️ Should_use_last_supplied_severity
-✔️ Stores_user_severity_against_validation_failure
-✔️ Throws_when_provider_is_null
-```
-### ✔️ FluentValidation.Tests.UserStateTester
-```
-✔️ Can_Provide_state_for_item_in_collection
-✔️ Correctly_provides_object_being_validated
-✔️ Stores_user_state_against_validation_failure
-✔️ Throws_when_provider_is_null
-```
-### ✔️ FluentValidation.Tests.ValidateAndThrowTester
-```
-✔️ Does_not_throw_when_valid
-✔️ Does_not_throw_when_valid_and_a_ruleset
-✔️ Does_not_throw_when_valid_and_a_ruleset_async
-✔️ Does_not_throw_when_valid_async
-✔️ Only_root_validator_throws
-✔️ Populates_errors
-✔️ Serializes_exception
-✔️ Throws_exception
-✔️ Throws_exception_async
-✔️ Throws_exception_with_a_ruleset
-✔️ Throws_exception_with_a_ruleset_async
-✔️ ToString_provides_error_details
-✔️ ValidationException_provides_correct_message_when_appendDefaultMessage_false
-✔️ ValidationException_provides_correct_message_when_appendDefaultMessage_true
-```
-### ✔️ FluentValidation.Tests.ValidationResultTests
-```
-✔️ Can_serialize_failure
-✔️ Can_serialize_result
-✔️ Should_add_errors
-✔️ Should_be_valid_when_there_are_no_errors
-✔️ Should_not_be_valid_when_there_are_errors
-✔️ ToString_return_empty_string_when_there_is_no_error
-✔️ ToString_return_error_messages_with_given_separator
-✔️ ToString_return_error_messages_with_newline_as_separator
-```
-### ✔️ FluentValidation.Tests.ValidatorDescriptorTester
-```
-✔️ Does_not_throw_when_rule_declared_without_property
-✔️ Gets_validators_for_property
-✔️ GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_model_level_rule
-✔️ Returns_empty_collection_for_property_with_no_validators
-✔️ Should_retrieve_name_given_to_it_pass_property_as_string
-```
-### ✔️ FluentValidation.Tests.ValidatorSelectorTests
-```
-✔️ Can_use_property_with_include
-✔️ Does_not_validate_other_property
-✔️ Does_not_validate_other_property_using_expression
-✔️ Executes_correct_rule_when_using_property_with_include
-✔️ Executes_correct_rule_when_using_property_with_include_async
-✔️ Includes_nested_property
-✔️ Includes_nested_property_using_expression
-✔️ MemberNameValidatorSelector_returns_true_when_property_name_matches
-✔️ Validates_nullable_property_with_overriden_name_when_selected
-✔️ Validates_property_using_expression
-```
-### ✔️ FluentValidation.Tests.ValidatorTesterTester
-```
-✔️ Allows_only_one_failure_to_match
-✔️ Can_use_indexer_in_string_message
-✔️ Can_use_indexer_in_string_message_inverse
-✔️ Expected_error_code_check
-✔️ Expected_message_argument_check
-✔️ Expected_message_check
-✔️ Expected_severity_check
-✔️ Expected_state_check
-✔️ Matches_any_failure
-✔️ Matches_model_level_rule
-✔️ Model_level_check_fails_if_no_model_level_failures
-✔️ ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator
-✔️ ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator_and_expecting_a_basetype
-✔️ ShouldHaveChildValidator_should_not_throw_when_property_has_collection_validators
-✔️ ShouldHaveChildValidator_should_throw_when_property_has_a_different_child_validator
-✔️ ShouldHaveChildValidator_should_work_with_DependentRules
-✔️ ShouldHaveChildvalidator_throws_when_collection_property_Does_not_have_child_validator
-✔️ ShouldHaveChildValidator_throws_when_property_does_not_have_child_validator
-✔️ ShouldHaveChildValidator_works_on_model_level_rules
-✔️ ShouldHaveValidationError_async
-✔️ ShouldHaveValidationError_async_throws
-✔️ ShouldHaveValidationError_model_async
-✔️ ShouldHaveValidationError_model_async_throws
-✔️ ShouldHaveValidationError_preconstructed_object_does_not_throw_for_unwritable_property
-✔️ ShouldHaveValidationError_should_not_throw_when_there_are_errors_with_preconstructed_object
-✔️ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors
-✔️ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")
-✔️ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null)
-✔️ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors_ruleforeach
-✔️ ShouldHaveValidationError_Should_support_nested_properties
-✔️ ShouldHaveValidationError_Should_throw_when_there_are_no_validation_errors
-✔️ ShouldHaveValidationError_should_throw_when_there_are_no_validation_errors_with_preconstructed_object
-✔️ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "")
-✔️ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "cardNumber")
-✔️ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: null)
-✔️ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 42, cardNumber: "cardNumber")
-✔️ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors_ruleforeach
-✔️ ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_should_throw_an_exception
-✔️ ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_should_throw_an_exception
-✔️ ShouldHaveValidationErrorFor_takes_account_of_rulesets
-✔️ ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approach
-✔️ ShouldNotHaveValidationError_async
-✔️ ShouldNotHaveValidationError_async_model_throws
-✔️ ShouldNotHaveValidationError_async_throws
-✔️ ShouldNotHaveValidationError_model_async
-✔️ ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate
-✔️ ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate_and_other_property_fails_validation
-✔️ ShouldNotHaveValidationError_should_have_validation_error_details_when_thrown_ruleforeach
-✔️ ShouldNotHaveValidationError_should_not_throw_when_there_are_no_errors
-✔️ ShouldNotHAveValidationError_should_not_throw_When_there_are_no_errors_with_preconstructed_object
-✔️ ShouldNotHaveValidationError_should_not_throw_when_there_are_not_validation_errors_ruleforeach
-✔️ ShouldNotHaveValidationError_Should_support_nested_properties
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_errors
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_preconstructed_object
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "")
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "cardNumber")
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: null)
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "cardNumber")
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null)
-✔️ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors_ruleforeach
-✔️ Tests_nested_property
-✔️ Tests_nested_property_reverse
-✔️ Tests_nested_property_using_obsolete_method
-✔️ TestValidate_runs_async
-✔️ TestValidate_runs_async_throws
-✔️ Unexpected_error_code_check
-✔️ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["bar"])
-✔️ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo", "bar"])
-✔️ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo"])
-✔️ Unexpected_message_check(withoutErrMsg: "bar", errMessages: [])
-✔️ Unexpected_severity_check
-✔️ Unexpected_state_check
+|[FluentValidation.Tests.AbstractValidatorTester](#r0s0)|35✅|||12ms|
+|[FluentValidation.Tests.AccessorCacheTests](#r0s1)|4✅||1⚪|4ms|
+|[FluentValidation.Tests.AssemblyScannerTester](#r0s2)|2✅|||2ms|
+|[FluentValidation.Tests.CascadingFailuresTester](#r0s3)|38✅|||23ms|
+|[FluentValidation.Tests.ChainedValidationTester](#r0s4)|13✅|||6ms|
+|[FluentValidation.Tests.ChainingValidatorsTester](#r0s5)|3✅|||1ms|
+|[FluentValidation.Tests.ChildRulesTests](#r0s6)|2✅|||7ms|
+|[FluentValidation.Tests.CollectionValidatorWithParentTests](#r0s7)|16✅|||13ms|
+|[FluentValidation.Tests.ComplexValidationTester](#r0s8)|17✅|||26ms|
+|[FluentValidation.Tests.ConditionTests](#r0s9)|18✅|||9ms|
+|[FluentValidation.Tests.CreditCardValidatorTests](#r0s10)|2✅|||2ms|
+|[FluentValidation.Tests.CustomFailureActionTester](#r0s11)|3✅|||1ms|
+|[FluentValidation.Tests.CustomMessageFormatTester](#r0s12)|6✅|||3ms|
+|[FluentValidation.Tests.CustomValidatorTester](#r0s13)|10✅|||6ms|
+|[FluentValidation.Tests.DefaultValidatorExtensionTester](#r0s14)|30✅|||38ms|
+|[FluentValidation.Tests.EmailValidatorTests](#r0s15)|36✅|||18ms|
+|[FluentValidation.Tests.EmptyTester](#r0s16)|9✅|||5ms|
+|[FluentValidation.Tests.EnumValidatorTests](#r0s17)|12✅|||24ms|
+|[FluentValidation.Tests.EqualValidatorTests](#r0s18)|10✅|||3ms|
+|[FluentValidation.Tests.ExactLengthValidatorTester](#r0s19)|6✅|||2ms|
+|[FluentValidation.Tests.ExclusiveBetweenValidatorTests](#r0s20)|19✅|||6ms|
+|[FluentValidation.Tests.ExtensionTester](#r0s21)|4✅|||1ms|
+|[FluentValidation.Tests.ForEachRuleTests](#r0s22)|34✅|||47ms|
+|[FluentValidation.Tests.GreaterThanOrEqualToValidatorTester](#r0s23)|14✅|||5ms|
+|[FluentValidation.Tests.GreaterThanValidatorTester](#r0s24)|13✅|||4ms|
+|[FluentValidation.Tests.InclusiveBetweenValidatorTests](#r0s25)|18✅|||4ms|
+|[FluentValidation.Tests.InheritanceValidatorTest](#r0s26)|11✅|||18ms|
+|[FluentValidation.Tests.InlineValidatorTester](#r0s27)|1✅|||2ms|
+|[FluentValidation.Tests.LanguageManagerTests](#r0s28)|21✅|||28ms|
+|[FluentValidation.Tests.LengthValidatorTests](#r0s29)|16✅|||17ms|
+|[FluentValidation.Tests.LessThanOrEqualToValidatorTester](#r0s30)|13✅|||4ms|
+|[FluentValidation.Tests.LessThanValidatorTester](#r0s31)|16✅|||6ms|
+|[FluentValidation.Tests.LocalisedMessagesTester](#r0s32)|6✅|||3ms|
+|[FluentValidation.Tests.LocalisedNameTester](#r0s33)|2✅|||1ms|
+|[FluentValidation.Tests.MemberAccessorTests](#r0s34)|9✅|||5ms|
+|[FluentValidation.Tests.MessageFormatterTests](#r0s35)|10✅|||2ms|
+|[FluentValidation.Tests.ModelLevelValidatorTests](#r0s36)|2✅|||1ms|
+|[FluentValidation.Tests.NameResolutionPluggabilityTester](#r0s37)|3✅|||2ms|
+|[FluentValidation.Tests.NotEmptyTester](#r0s38)|10✅|||7ms|
+|[FluentValidation.Tests.NotEqualValidatorTests](#r0s39)|11✅|||7ms|
+|[FluentValidation.Tests.NotNullTester](#r0s40)|5✅|||1ms|
+|[FluentValidation.Tests.NullTester](#r0s41)|5✅|||2ms|
+|[FluentValidation.Tests.OnFailureTests](#r0s42)|10✅|||8ms|
+|[FluentValidation.Tests.PredicateValidatorTester](#r0s43)|5✅|||2ms|
+|[FluentValidation.Tests.PropertyChainTests](#r0s44)|7✅|||1ms|
+|[FluentValidation.Tests.RegularExpressionValidatorTests](#r0s45)|15✅|||6ms|
+|[FluentValidation.Tests.RuleBuilderTests](#r0s46)|29✅|||96ms|
+|[FluentValidation.Tests.RuleDependencyTests](#r0s47)|14✅|||3s|
+|[FluentValidation.Tests.RulesetTests](#r0s48)|21✅|||14ms|
+|[FluentValidation.Tests.ScalePrecisionValidatorTests](#r0s49)|6✅|||4ms|
+|[FluentValidation.Tests.SharedConditionTests](#r0s50)|42✅|||42ms|
+|[FluentValidation.Tests.StandalonePropertyValidationTester](#r0s51)|1✅|||0ms|
+|[FluentValidation.Tests.StringEnumValidatorTests](#r0s52)|10✅|||5ms|
+|[FluentValidation.Tests.TrackingCollectionTests](#r0s53)|3✅|||2ms|
+|[FluentValidation.Tests.TransformTests](#r0s54)|4✅|||3ms|
+|[FluentValidation.Tests.UserSeverityTester](#r0s55)|7✅|||3ms|
+|[FluentValidation.Tests.UserStateTester](#r0s56)|4✅|||3ms|
+|[FluentValidation.Tests.ValidateAndThrowTester](#r0s57)|14✅|||25ms|
+|[FluentValidation.Tests.ValidationResultTests](#r0s58)|8✅|||8ms|
+|[FluentValidation.Tests.ValidatorDescriptorTester](#r0s59)|5✅|||1ms|
+|[FluentValidation.Tests.ValidatorSelectorTests](#r0s60)|10✅|||9ms|
+|[FluentValidation.Tests.ValidatorTesterTester](#r0s61)|73✅|||74ms|
+### ✅ FluentValidation.Tests.AbstractValidatorTester
+```
+✅ Can_replace_default_errorcode_resolver
+✅ CanValidateInstancesOfType_returns_false_when_comparing_against_some_other_type
+✅ CanValidateInstancesOfType_returns_true_when_comparing_against_same_type
+✅ CanValidateInstancesOfType_returns_true_when_comparing_against_subclass
+✅ Default_error_code_should_be_class_name
+✅ OverridePropertyName_should_override_property_name
+✅ OverridePropertyName_with_lambda_should_override_property_name
+✅ PreValidate_bypasses_nullcheck_on_instance
+✅ RuleForeach_with_null_instances
+✅ Should_be_valid_when_there_are_no_failures_for_single_property
+✅ Should_not_main_state
+✅ Should_throw_for_non_member_expression_when_validating_single_property
+✅ Should_throw_when_rule_is_null
+✅ Should_validate_public_Field
+✅ Should_validate_single_Field
+✅ Should_validate_single_property
+✅ Should_validate_single_property_where_invalid_property_as_string
+✅ Should_validate_single_property_where_property_as_string
+✅ Uses_named_parameters_to_validate_ruleset
+✅ Validates_single_property_by_path
+✅ Validates_type_when_using_non_generic_validate_overload
+✅ When_the_validators_fail_then_the_errors_Should_be_accessible_via_the_errors_property
+✅ When_the_validators_fail_then_validatorrunner_should_return_false
+✅ When_the_Validators_pass_then_the_validatorRunner_should_return_true
+✅ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: )
+✅ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_Validate(preValidationResult: AnotherInt Test Message)
+✅ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: )
+✅ WhenPreValidationReturnsFalse_ResultReturnToUserImmediatly_ValidateAsync(preValidationResult: AnotherInt Test Message)
+✅ WhenPreValidationReturnsTrue_ValidatorsGetHit_Validate
+✅ WhenPreValidationReturnsTrue_ValidatorsGetHit_ValidateAsync
+✅ WithErrorCode_should_override_error_code
+✅ WithMessage_and_WithErrorCode_should_override_error_message_and_error_code
+✅ WithMessage_should_override_error_message
+✅ WithName_should_override_field_name
+✅ WithName_should_override_field_name_with_value_from_other_property
+```
+### ✅ FluentValidation.Tests.AccessorCacheTests
+```
+⚪ Benchmark
+✅ Equality_comparison_check
+✅ Gets_accessor
+✅ Gets_member_for_nested_property
+✅ Identifies_if_memberexp_acts_on_model_instance
+```
+### ✅ FluentValidation.Tests.AssemblyScannerTester
+```
+✅ Finds_validators_for_types
+✅ ForEach_iterates_over_types
+```
+### ✅ FluentValidation.Tests.CascadingFailuresTester
+```
+✅ Cascade_mode_can_be_set_after_validator_instantiated
+✅ Cascade_mode_can_be_set_after_validator_instantiated_async
+✅ Cascade_mode_can_be_set_after_validator_instantiated_async_legacy
+✅ Cascade_mode_can_be_set_after_validator_instantiated_legacy
+✅ Validation_continues_on_failure
+✅ Validation_continues_on_failure_async
+✅ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level
+✅ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async
+✅ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_async_legacy
+✅ Validation_continues_on_failure_when_set_to_Stop_globally_and_overriden_at_rule_level_legacy
+✅ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level
+✅ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async
+✅ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_async_legacy
+✅ Validation_continues_on_failure_when_set_to_StopOnFirstFailure_at_validator_level_and_overriden_at_rule_level_legacy
+✅ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop
+✅ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async
+✅ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_async_legacy
+✅ Validation_continues_to_second_validator_when_first_validator_succeeds_and_cascade_set_to_stop_legacy
+✅ Validation_continues_when_set_to_Continue_at_validator_level
+✅ Validation_continues_when_set_to_Continue_at_validator_level_async
+✅ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level
+✅ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async
+✅ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_async_legacy
+✅ Validation_stops_on_failure_when_set_to_Continue_and_overriden_at_rule_level_legacy
+✅ Validation_stops_on_first_failure
+✅ Validation_stops_on_first_failure_async
+✅ Validation_stops_on_first_failure_async_legacy
+✅ Validation_stops_on_first_failure_legacy
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_and_async_validator_is_invoked_synchronously_legacy
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_async_legacy
+✅ Validation_stops_on_first_Failure_when_set_to_Continue_globally_and_overriden_at_rule_level_legacy
+✅ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level
+✅ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async
+✅ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_async_legacy
+✅ Validation_stops_on_first_failure_when_set_to_StopOnFirstFailure_at_validator_level_legacy
+```
+### ✅ FluentValidation.Tests.ChainedValidationTester
+```
+✅ Can_validate_using_validator_for_base_type
+✅ Chained_property_should_be_excluded
+✅ Chained_validator_descriptor
+✅ Chained_validator_should_not_be_invoked_on_null_property
+✅ Condition_should_work_with_chained_property
+✅ Explicitly_included_properties_should_be_propagated_to_nested_validators
+✅ Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings
+✅ Separate_validation_on_chained_property
+✅ Separate_validation_on_chained_property_conditional
+✅ Separate_validation_on_chained_property_valid
+✅ Should_allow_normal_rules_and_chained_property_on_same_property
+✅ Uses_explicit_ruleset
+✅ Validates_chained_property
+```
+### ✅ FluentValidation.Tests.ChainingValidatorsTester
+```
+✅ Options_should_only_apply_to_current_validator
+✅ Should_create_multiple_validators
+✅ Should_execute_multiple_validators
+```
+### ✅ FluentValidation.Tests.ChildRulesTests
+```
+✅ Can_define_nested_rules_for_collection
+✅ ChildRules_works_with_RuleSet
+```
+### ✅ FluentValidation.Tests.CollectionValidatorWithParentTests
+```
+✅ Async_condition_should_work_with_child_collection
+✅ Can_specify_condition_for_individual_collection_elements
+✅ Can_validate_collection_using_validator_for_base_type
+✅ Collection_should_be_excluded
+✅ Collection_should_be_explicitly_included_with_expression
+✅ Collection_should_be_explicitly_included_with_string
+✅ Condition_should_work_with_child_collection
+✅ Creates_validator_using_context_from_property_value
+✅ Should_override_property_name
+✅ Should_work_with_top_level_collection_validator
+✅ Should_work_with_top_level_collection_validator_and_overriden_name
+✅ Skips_null_items
+✅ Validates_collection
+✅ Validates_collection_asynchronously
+✅ Validates_collection_several_levels_deep
+✅ Validates_collection_several_levels_deep_async
+```
+### ✅ FluentValidation.Tests.ComplexValidationTester
+```
+✅ Async_condition_should_work_with_complex_property
+✅ Async_condition_should_work_with_complex_property_when_validator_invoked_synchronously
+✅ Can_directly_validate_multiple_fields_of_same_type
+✅ Can_validate_using_validator_for_base_type
+✅ Complex_property_should_be_excluded
+✅ Complex_validator_should_not_be_invoked_on_null_property
+✅ Condition_should_work_with_complex_property
+✅ Condition_should_work_with_complex_property_when_invoked_async
+✅ Explicitly_included_properties_should_be_propagated_to_nested_validators
+✅ Explicitly_included_properties_should_be_propagated_to_nested_validators_using_strings
+✅ Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor
+✅ Multiple_rules_in_chain_with_childvalidator_shouldnt_reuse_accessor_async
+✅ Should_allow_normal_rules_and_complex_property_on_same_property
+✅ Should_override_propertyName
+✅ Validates_child_validator_asynchronously
+✅ Validates_child_validator_synchronously
+✅ Validates_complex_property
+```
+### ✅ FluentValidation.Tests.ConditionTests
+```
+✅ Async_condition_executed_synchronosuly_with_asynchronous_collection_rule
+✅ Async_condition_executed_synchronosuly_with_asynchronous_rule
+✅ Async_condition_executed_synchronosuly_with_synchronous_collection_role
+✅ Async_condition_executed_synchronosuly_with_synchronous_role
+✅ Async_condition_is_applied_to_all_validators_in_the_chain
+✅ Async_condition_is_applied_to_all_validators_in_the_chain_when_executed_synchronously
+✅ Async_condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator
+✅ Condition_is_applied_to_all_validators_in_the_chain
+✅ Condition_is_applied_to_single_validator_in_the_chain_when_ApplyConditionTo_set_to_CurrentValidator
+✅ Sync_condition_is_applied_to_async_validators
+✅ Validation_should_fail_when_async_condition_does_not_match
+✅ Validation_should_fail_when_async_condition_matches
+✅ Validation_should_fail_when_condition_does_not_match
+✅ Validation_should_fail_when_condition_matches
+✅ Validation_should_succeed_when_async_condition_does_not_match
+✅ Validation_should_succeed_when_async_condition_matches
+✅ Validation_should_succeed_when_condition_does_not_match
+✅ Validation_should_succeed_when_condition_matches
+```
+### ✅ FluentValidation.Tests.CreditCardValidatorTests
+```
+✅ IsValidTests
+✅ When_validation_fails_the_default_error_should_be_set
+```
+### ✅ FluentValidation.Tests.CustomFailureActionTester
+```
+✅ Does_not_invoke_action_if_validation_success
+✅ Invokes_custom_action_on_failure
+✅ Passes_object_being_validated_to_action
+```
+### ✅ FluentValidation.Tests.CustomMessageFormatTester
+```
+✅ Replaces_propertyvalue_placeholder
+✅ Replaces_propertyvalue_with_empty_string_when_null
+✅ Should_format_custom_message
+✅ Uses_custom_delegate_for_building_message
+✅ Uses_custom_delegate_for_building_message_only_for_specific_validator
+✅ Uses_property_value_in_message
+```
+### ✅ FluentValidation.Tests.CustomValidatorTester
+```
+✅ New_Custom_Returns_single_failure
+✅ New_Custom_Returns_single_failure_async
+✅ New_custom_uses_empty_property_name_for_model_level_rule
+✅ New_Custom_When_property_name_omitted_infers_property_name
+✅ New_Custom_When_property_name_omitted_infers_property_name_nested
+✅ New_Custom_within_ruleset
+✅ New_CustomAsync_within_ruleset
+✅ Perserves_property_chain_using_custom
+✅ Runs_async_rule_synchronously_when_validator_invoked_synchronously
+✅ Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously
+```
+### ✅ FluentValidation.Tests.DefaultValidatorExtensionTester
+```
+✅ Empty_should_create_EmptyValidator
+✅ Equal_should_create_EqualValidator_with_explicit_value
+✅ Equal_should_create_EqualValidator_with_lambda
+✅ GreaterThan_should_create_GreaterThanValidator_with_explicit_value
+✅ GreaterThan_should_create_GreaterThanValidator_with_lambda
+✅ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_explicit_value
+✅ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda
+✅ GreaterThanOrEqual_should_create_GreaterThanOrEqualValidator_with_lambda_with_other_Nullable
+✅ Length_should_create_ExactLengthValidator
+✅ Length_should_create_LengthValidator
+✅ Length_should_create_MaximumLengthValidator
+✅ Length_should_create_MinimumLengthValidator
+✅ LessThan_should_create_LessThanValidator_with_explicit_value
+✅ LessThan_should_create_LessThanValidator_with_lambda
+✅ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_explicit_value
+✅ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda
+✅ LessThanOrEqual_should_create_LessThanOrEqualValidator_with_lambda_with_other_Nullable
+✅ Must_should_create_PredicateValidator_with_context
+✅ Must_should_create_PredicateValidator_with_PropertyValidatorContext
+✅ Must_should_create_PredicteValidator
+✅ MustAsync_should_create_AsyncPredicateValidator_with_context
+✅ MustAsync_should_create_AsyncPredicateValidator_with_PropertyValidatorContext
+✅ MustAsync_should_create_AsyncPredicteValidator
+✅ MustAsync_should_not_throw_InvalidCastException
+✅ NotEmpty_should_create_NotEmptyValidator
+✅ NotEqual_should_create_NotEqualValidator_with_explicit_value
+✅ NotEqual_should_create_NotEqualValidator_with_lambda
+✅ NotNull_should_create_NotNullValidator
+✅ ScalePrecision_should_create_ScalePrecisionValidator
+✅ ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trailing_zeros
+```
+### ✅ FluentValidation.Tests.EmailValidatorTests
+```
+✅ Fails_email_validation_aspnetcore_compatible(email: " \r \t \n")
+✅ Fails_email_validation_aspnetcore_compatible(email: "")
+✅ Fails_email_validation_aspnetcore_compatible(email: "@someDomain.com")
+✅ Fails_email_validation_aspnetcore_compatible(email: "@someDomain@abc.com")
+✅ Fails_email_validation_aspnetcore_compatible(email: "0")
+✅ Fails_email_validation_aspnetcore_compatible(email: "someName")
+✅ Fails_email_validation_aspnetcore_compatible(email: "someName@")
+✅ Fails_email_validation_aspnetcore_compatible(email: "someName@a@b.com")
+✅ Invalid_email_addressex_regex(email: "")
+✅ Invalid_email_addressex_regex(email: "first.last@test..co.uk")
+✅ Invalid_email_addressex_regex(email: "testperso")
+✅ Invalid_email_addressex_regex(email: "thisisaverylongstringcodeplex.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: " @someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "!#$%&'*+-/=?^_`|~@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "\"firstName.lastName\"@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "1234@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "firstName.lastName@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "someName@1234.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "someName@some_domain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "someName@some~domain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: "someName@someDomain.com")
+✅ Valid_email_addresses_aspnetcore_compatible(email: null)
+✅ Valid_email_addresses_regex(email: "__somename@example.com")
+✅ Valid_email_addresses_regex(email: "!def!xyz%abc@example.com")
+✅ Valid_email_addresses_regex(email: "\"Abc@def\"@example.com")
+✅ Valid_email_addresses_regex(email: "\"Abc\\@def\"@example.com")
+✅ Valid_email_addresses_regex(email: "\"Fred Bloggs\"@example.com")
+✅ Valid_email_addresses_regex(email: "\"Joe\\Blow\"@example.com")
+✅ Valid_email_addresses_regex(email: "$A12345@example.com")
+✅ Valid_email_addresses_regex(email: "customer/department=shipping@example.com")
+✅ Valid_email_addresses_regex(email: "first.last@test.co.uk")
+✅ Valid_email_addresses_regex(email: "testperson@gmail.com")
+✅ Valid_email_addresses_regex(email: "TestPerson@gmail.com")
+✅ Valid_email_addresses_regex(email: "testperson+label@gmail.com")
+✅ Valid_email_addresses_regex(email: null)
+```
+### ✅ FluentValidation.Tests.EmptyTester
+```
+✅ Passes_for_ienumerable_that_doesnt_implement_ICollection
+✅ Passes_when_collection_empty
+✅ When_there_is_a_value_then_the_validator_should_fail
+✅ When_validation_fails_error_should_be_set
+✅ When_value_is_Default_for_type_validator_should_pass_datetime
+✅ When_value_is_Default_for_type_validator_should_pass_int
+✅ When_value_is_empty_string_validator_should_pass
+✅ When_value_is_null_validator_should_pass
+✅ When_value_is_whitespace_validation_should_pass
+```
+### ✅ FluentValidation.Tests.EnumValidatorTests
+```
+✅ Flags_enum_invalid_when_using_outofrange_negative_value
+✅ Flags_enum_invalid_when_using_outofrange_positive_value
+✅ Flags_enum_valid_when_using_bitwise_value
+✅ Flags_enum_validates_correctly_when_using_zero_value
+✅ Flags_enum_with_overlapping_flags_valid_when_using_bitwise_value
+✅ IsValidTests
+✅ Nullable_enum_invalid_when_bad_value_specified
+✅ Nullable_enum_valid_when_property_value_is_null
+✅ Nullable_enum_valid_when_value_specified
+✅ When_the_enum_is_initialized_with_invalid_value_then_the_validator_should_fail
+✅ When_the_enum_is_not_initialized_with_valid_value_then_the_validator_should_fail
+✅ When_validation_fails_the_default_error_should_be_set
+```
+### ✅ FluentValidation.Tests.EqualValidatorTests
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Should_store_comparison_type
+✅ Should_store_property_to_compare
+✅ Should_succeed_on_case_insensitive_comparison
+✅ Should_succeed_on_case_insensitive_comparison_using_expression
+✅ Should_use_ordinal_comparison_by_default
+✅ Validates_against_property
+✅ When_the_objects_are_equal_validation_should_succeed
+✅ When_the_objects_are_not_equal_validation_should_fail
+✅ When_validation_fails_the_error_should_be_set
+```
+### ✅ FluentValidation.Tests.ExactLengthValidatorTester
+```
+✅ Min_and_max_properties_should_be_set
+✅ When_exact_length_rule_failes_error_should_have_exact_length_error_errorcode
+✅ When_the_text_is_an_exact_length_the_validator_should_pass
+✅ When_the_text_length_is_larger_the_validator_should_fail
+✅ When_the_text_length_is_smaller_the_validator_should_fail
+✅ When_the_validator_fails_the_error_message_should_be_set
+```
+### ✅ FluentValidation.Tests.ExclusiveBetweenValidatorTests
+```
+✅ To_and_from_properties_should_be_set
+✅ To_and_from_properties_should_be_set_for_dates
+✅ To_and_from_properties_should_be_set_for_strings
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_not_null
+✅ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
+✅ When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings
+✅ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw
+✅ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings
+✅ When_the_validator_fails_the_error_message_should_be_set
+✅ When_the_validator_fails_the_error_message_should_be_set_for_strings
+✅ When_the_value_is_between_the_range_specified_then_the_validator_should_pass
+✅ When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings
+✅ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail
+✅ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_fail_for_strings
+✅ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail
+✅ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_fail_for_strings
+✅ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail
+✅ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings
+```
+### ✅ FluentValidation.Tests.ExtensionTester
+```
+✅ Should_extract_member_from_member_expression
+✅ Should_return_null_for_non_member_expressions
+✅ Should_split_pascal_cased_member_name
+✅ SplitPascalCase_should_return_null_when_input_is_null
+```
+### ✅ FluentValidation.Tests.ForEachRuleTests
+```
+✅ Async_condition_should_work_with_child_collection
+✅ Can_access_colletion_index
+✅ Can_access_colletion_index_async
+✅ Can_access_parent_index
+✅ Can_access_parent_index_async
+✅ Can_specify_condition_for_individual_collection_elements
+✅ Can_use_cascade_with_RuleForEach
+✅ Can_validate_collection_using_validator_for_base_type
+✅ Collection_should_be_excluded
+✅ Collection_should_be_explicitly_included_with_expression
+✅ Collection_should_be_explicitly_included_with_string
+✅ Condition_should_work_with_child_collection
+✅ Correctly_gets_collection_indices
+✅ Correctly_gets_collection_indices_async
+✅ Executes_rule_for_each_item_in_collection
+✅ Executes_rule_for_each_item_in_collection_async
+✅ Nested_collection_for_null_property_should_not_throw_null_reference
+✅ Nested_conditions_Rule_For
+✅ Nested_conditions_Rule_For_Each
+✅ Overrides_indexer
+✅ Overrides_indexer_async
+✅ Regular_rules_can_drop_into_RuleForEach
+✅ RuleForEach_async_RunsTasksSynchronously
+✅ Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep
+✅ Should_not_scramble_property_name_when_using_collection_validators_several_levels_deep_with_ValidateAsync
+✅ Should_override_property_name
+✅ Skips_null_items
+✅ Top_level_collection
+✅ Uses_useful_error_message_when_used_on_non_property
+✅ Validates_child_validator_asynchronously
+✅ Validates_child_validator_synchronously
+✅ Validates_collection
+✅ When_runs_outside_RuleForEach_loop
+✅ When_runs_outside_RuleForEach_loop_async
+```
+### ✅ FluentValidation.Tests.GreaterThanOrEqualToValidatorTester
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Comparison_type
+✅ Should_fail_when_less_than_input
+✅ Should_localize_value
+✅ Should_set_default_error_when_validation_fails
+✅ Should_succeed_when_equal_to_input
+✅ Should_succeed_when_greater_than_input
+✅ Validates_nullable_with_nullable_property
+✅ Validates_with_nullable_property
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_is_null_cross_property
+✅ Validates_with_nullable_when_property_not_null
+✅ Validates_with_nullable_when_property_not_null_cross_property
+✅ Validates_with_property
+```
+### ✅ FluentValidation.Tests.GreaterThanValidatorTester
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Comparison_Type
+✅ Should_fail_when_equal_to_input
+✅ Should_fail_when_less_than_input
+✅ Should_set_default_error_when_validation_fails
+✅ Should_succeed_when_greater_than_input
+✅ Validates_nullable_with_nullable_property
+✅ Validates_with_nullable_property
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_is_null_cross_property
+✅ Validates_with_nullable_when_property_not_null
+✅ Validates_with_nullable_when_property_not_null_cross_property
+✅ Validates_with_property
+```
+### ✅ FluentValidation.Tests.InclusiveBetweenValidatorTests
+```
+✅ To_and_from_properties_should_be_set
+✅ To_and_from_properties_should_be_set_for_strings
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_not_null
+✅ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
+✅ When_the_text_is_larger_than_the_range_then_the_validator_should_fail_for_strings
+✅ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw
+✅ When_the_to_is_smaller_than_the_from_then_the_validator_should_throw_for_strings
+✅ When_the_validator_fails_the_error_message_should_be_set
+✅ When_the_validator_fails_the_error_message_should_be_set_for_strings
+✅ When_the_value_is_between_the_range_specified_then_the_validator_should_pass
+✅ When_the_value_is_between_the_range_specified_then_the_validator_should_pass_for_strings
+✅ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass
+✅ When_the_value_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass_for_strings
+✅ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass
+✅ When_the_value_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass_for_strings
+✅ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail
+✅ When_the_value_is_smaller_than_the_range_then_the_validator_should_fail_for_strings
+```
+### ✅ FluentValidation.Tests.InheritanceValidatorTest
+```
+✅ Can_use_custom_subclass_with_nongeneric_overload
+✅ Validates_collection
+✅ Validates_collection_async
+✅ Validates_inheritance_async
+✅ Validates_inheritance_hierarchy
+✅ Validates_ruleset
+✅ Validates_ruleset_async
+✅ Validates_with_callback
+✅ Validates_with_callback_accepting_derived
+✅ Validates_with_callback_accepting_derived_async
+✅ Validates_with_callback_async
+```
+### ✅ FluentValidation.Tests.InlineValidatorTester
+```
+✅ Uses_inline_validator_to_build_rules
+```
+### ✅ FluentValidation.Tests.LanguageManagerTests
+```
+✅ All_languages_should_be_loaded
+✅ All_localizations_have_same_parameters_as_English
+✅ Always_use_specific_language
+✅ Always_use_specific_language_with_string_source
+✅ Can_replace_message
+✅ Can_replace_message_without_overriding_all_languages
+✅ Disables_localization
+✅ Falls_back_to_default_localization_key_when_error_code_key_not_found
+✅ Falls_back_to_english_when_culture_not_registered
+✅ Falls_back_to_english_when_translation_missing
+✅ Falls_back_to_parent_culture
+✅ Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn-BA")
+✅ Gets_translation_for_bosnian_latin_culture(cultureName: "bs-Latn")
+✅ Gets_translation_for_bosnian_latin_culture(cultureName: "bs")
+✅ Gets_translation_for_croatian_culture
+✅ Gets_translation_for_culture
+✅ Gets_translation_for_serbian_culture(cultureName: "sr-Latn-RS")
+✅ Gets_translation_for_serbian_culture(cultureName: "sr-Latn")
+✅ Gets_translation_for_serbian_culture(cultureName: "sr")
+✅ Gets_translation_for_specific_culture
+✅ Uses_error_code_as_localization_key
+```
+### ✅ FluentValidation.Tests.LengthValidatorTests
+```
+✅ Min_and_max_properties_should_be_set
+✅ When_input_is_null_then_the_validator_should_pass
+✅ When_the_max_is_smaller_than_the_min_then_the_validator_should_throw
+✅ When_the_maxlength_validator_fails_the_error_message_should_be_set
+✅ When_the_minlength_validator_fails_the_error_message_should_be_set
+✅ When_the_text_is_between_the_lambda_range_specified_then_the_validator_should_pass
+✅ When_the_text_is_between_the_range_specified_then_the_validator_should_pass
+✅ When_the_text_is_exactly_the_size_of_the_lambda_lower_bound_then_the_validator_should_pass
+✅ When_the_text_is_exactly_the_size_of_the_lambda_upper_bound_then_the_validator_should_pass
+✅ When_the_text_is_exactly_the_size_of_the_lower_bound_then_the_validator_should_pass
+✅ When_the_text_is_exactly_the_size_of_the_upper_bound_then_the_validator_should_pass
+✅ When_the_text_is_larger_than_the_lambda_range_then_the_validator_should_fail
+✅ When_the_text_is_larger_than_the_range_then_the_validator_should_fail
+✅ When_the_text_is_smaller_than_the_lambda_range_then_the_validator_should_fail
+✅ When_the_text_is_smaller_than_the_range_then_the_validator_should_fail
+✅ When_the_validator_fails_the_error_message_should_be_set
+```
+### ✅ FluentValidation.Tests.LessThanOrEqualToValidatorTester
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Comparison_type
+✅ Should_fail_when_greater_than_input
+✅ Should_set_default_error_when_validation_fails
+✅ Should_succeed_when_equal_to_input
+✅ Should_succeed_when_less_than_input
+✅ Validates_nullable_with_nullable_property
+✅ Validates_with_nullable_property
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_is_null_cross_property
+✅ Validates_with_nullable_when_property_not_null
+✅ Validates_with_nullable_when_property_not_null_cross_property
+✅ Validates_with_property
+```
+### ✅ FluentValidation.Tests.LessThanValidatorTester
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Comparison_type
+✅ Extracts_property_from_constant_using_expression
+✅ Extracts_property_from_expression
+✅ Should_fail_when_equal_to_input
+✅ Should_fail_when_greater_than_input
+✅ Should_set_default_validation_message_when_validation_fails
+✅ Should_succeed_when_less_than_input
+✅ Should_throw_when_value_to_compare_is_null
+✅ Validates_against_property
+✅ Validates_nullable_with_nullable_property
+✅ Validates_with_nullable_property
+✅ Validates_with_nullable_when_property_is_null
+✅ Validates_with_nullable_when_property_not_null
+✅ Validates_with_nullable_when_property_not_null_cross_property
+✅ Validates_with_nullable_when_property_null_cross_property
+```
+### ✅ FluentValidation.Tests.LocalisedMessagesTester
+```
+✅ Correctly_assigns_default_localized_error_message
+✅ Does_not_throw_InvalidCastException_when_using_RuleForEach
+✅ Formats_string_with_placeholders
+✅ Formats_string_with_placeholders_when_you_cant_edit_the_string
+✅ Uses_func_to_get_message
+✅ Uses_string_format_with_property_value
+```
+### ✅ FluentValidation.Tests.LocalisedNameTester
+```
+✅ Uses_localized_name
+✅ Uses_localized_name_expression
+```
+### ✅ FluentValidation.Tests.MemberAccessorTests
+```
+✅ ComplexPropertyGet
+✅ ComplexPropertySet
+✅ Equality
+✅ ImplicitCast
+✅ Name
+✅ SimpleFieldGet
+✅ SimpleFieldSet
+✅ SimplePropertyGet
+✅ SimplePropertySet
+```
+### ✅ FluentValidation.Tests.MessageFormatterTests
+```
+✅ Adds_argument_and_custom_arguments
+✅ Adds_formatted_argument_and_custom_arguments
+✅ Adds_formatted_argument_and_formatted_custom_arguments
+✅ Adds_PropertyName_to_message
+✅ Adds_value_to_message
+✅ Format_property_value
+✅ Should_ignore_unknown_numbered_parameters
+✅ Should_ignore_unknown_parameters
+✅ Understands_date_formats
+✅ Understands_numeric_formats
+```
+### ✅ FluentValidation.Tests.ModelLevelValidatorTests
+```
+✅ Can_use_child_validator_at_model_level
+✅ Validates_at_model_level
+```
+### ✅ FluentValidation.Tests.NameResolutionPluggabilityTester
+```
+✅ Resolves_nested_properties
+✅ ShouldHaveValidationError_Should_support_custom_propertynameresolver
+✅ Uses_custom_property_name
+```
+### ✅ FluentValidation.Tests.NotEmptyTester
+```
+✅ Fails_for_array
+✅ Fails_for_ienumerable_that_doesnt_implement_ICollection
+✅ Fails_when_collection_empty
+✅ When_there_is_a_value_then_the_validator_should_pass
+✅ When_validation_fails_error_should_be_set
+✅ When_value_is_Default_for_type_validator_should_fail_datetime
+✅ When_value_is_Default_for_type_validator_should_fail_int
+✅ When_value_is_empty_string_validator_should_fail
+✅ When_value_is_null_validator_should_fail
+✅ When_value_is_whitespace_validation_should_fail
+```
+### ✅ FluentValidation.Tests.NotEqualValidatorTests
+```
+✅ Comparison_property_uses_custom_resolver
+✅ Should_handle_custom_value_types_correctly
+✅ Should_not_be_valid_for_case_insensitve_comparison
+✅ Should_not_be_valid_for_case_insensitve_comparison_with_expression
+✅ Should_store_comparison_type
+✅ Should_store_property_to_compare
+✅ Should_use_ordinal_comparison_by_default
+✅ Validates_across_properties
+✅ When_the_objects_are_equal_then_the_validator_should_fail
+✅ When_the_objects_are_not_equal_then_the_validator_should_pass
+✅ When_the_validator_fails_the_error_message_should_be_set
+```
+### ✅ FluentValidation.Tests.NotNullTester
+```
+✅ Fails_when_nullable_value_type_is_null
+✅ Not_null_validator_should_not_crash_with_non_nullable_value_type
+✅ NotNullValidator_should_fail_if_value_is_null
+✅ NotNullValidator_should_pass_if_value_has_value
+✅ When_the_validator_fails_the_error_message_should_be_set
+```
+### ✅ FluentValidation.Tests.NullTester
+```
+✅ Not_null_validator_should_not_crash_with_non_nullable_value_type
+✅ NullValidator_should_fail_if_value_has_value
+✅ NullValidator_should_pass_if_value_is_null
+✅ Passes_when_nullable_value_type_is_null
+✅ When_the_validator_passes_the_error_message_should_be_set
+```
+### ✅ FluentValidation.Tests.OnFailureTests
+```
+✅ OnFailure_called_for_each_failed_rule
+✅ OnFailure_called_for_each_failed_rule_asyncAsync
+✅ Should_be_able_to_access_error_message_in_OnFailure
+✅ ShouldHaveChildValidator_should_be_true
+✅ ShouldHaveChildValidator_works_with_Include
+✅ WhenAsyncWithOnFailure_should_invoke_condition_on_async_inner_validator
+✅ WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator
+✅ WhenAsyncWithOnFailure_should_invoke_condition_on_inner_validator_invoked_synchronously
+✅ WhenWithOnFailure_should_invoke_condition_on_async_inner_validator
+✅ WhenWithOnFailure_should_invoke_condition_on_inner_validator
+```
+### ✅ FluentValidation.Tests.PredicateValidatorTester
+```
+✅ Should_fail_when_predicate_returns_false
+✅ Should_succeed_when_predicate_returns_true
+✅ Should_throw_when_predicate_is_null
+✅ When_validation_fails_metadata_should_be_set_on_failure
+✅ When_validation_fails_the_default_error_should_be_set
+```
+### ✅ FluentValidation.Tests.PropertyChainTests
+```
+✅ AddIndexer_throws_when_nothing_added
+✅ Calling_ToString_should_construct_string_representation_of_chain
+✅ Calling_ToString_should_construct_string_representation_of_chain_with_indexers
+✅ Creates_from_expression
+✅ Should_be_subchain
+✅ Should_ignore_blanks
+✅ Should_not_be_subchain
+```
+### ✅ FluentValidation.Tests.RegularExpressionValidatorTests
+```
+✅ Can_access_expression_in_message
+✅ Can_access_expression_in_message_lambda
+✅ Can_access_expression_in_message_lambda_regex
+✅ Uses_lazily_loaded_expression
+✅ Uses_lazily_loaded_expression_with_options
+✅ Uses_regex_object
+✅ When_the_text_does_not_match_the_lambda_regex_regular_expression_then_the_validator_should_fail
+✅ When_the_text_does_not_match_the_lambda_regular_expression_then_the_validator_should_fail
+✅ When_the_text_does_not_match_the_regular_expression_then_the_validator_should_fail
+✅ When_the_text_is_empty_then_the_validator_should_fail
+✅ When_the_text_is_null_then_the_validator_should_pass
+✅ When_the_text_matches_the_lambda_regex_regular_expression_then_the_validator_should_pass
+✅ When_the_text_matches_the_lambda_regular_expression_then_the_validator_should_pass
+✅ When_the_text_matches_the_regular_expression_then_the_validator_should_pass
+✅ When_validation_fails_the_default_error_should_be_set
+```
+### ✅ FluentValidation.Tests.RuleBuilderTests
+```
+✅ Adding_a_validator_should_return_builder
+✅ Adding_a_validator_should_store_validator
+✅ Calling_validate_should_delegate_to_underlying_validator
+✅ Calling_ValidateAsync_should_delegate_to_underlying_async_validator
+✅ Calling_ValidateAsync_should_delegate_to_underlying_sync_validator
+✅ Conditional_child_validator_should_register_with_validator_type_not_property
+✅ Nullable_object_with_async_condition_should_not_throw
+✅ Nullable_object_with_condition_should_not_throw
+✅ Property_should_return_null_when_it_is_not_a_property_being_validated
+✅ Property_should_return_property_being_validated
+✅ PropertyDescription_should_return_custom_property_name
+✅ PropertyDescription_should_return_property_name_split
+✅ Result_should_use_custom_property_name_when_no_property_name_can_be_determined
+✅ Rule_for_a_non_memberexpression_should_not_generate_property_name
+✅ Should_build_property_name
+✅ Should_compile_expression
+✅ Should_set_custom_error
+✅ Should_set_custom_property_name
+✅ Should_throw_if_message_is_null
+✅ Should_throw_if_overriding_validator_is_null
+✅ Should_throw_if_overriding_validator_provider_is_null
+✅ Should_throw_if_property_name_is_null
+✅ Should_throw_if_validator_is_null
+✅ Should_throw_when_async_inverse_predicate_is_null
+✅ Should_throw_when_async_predicate_is_null
+✅ Should_throw_when_context_predicate_is_null
+✅ Should_throw_when_inverse_context_predicate_is_null
+✅ Should_throw_when_inverse_predicate_is_null
+✅ Should_throw_when_predicate_is_null
+```
+### ✅ FluentValidation.Tests.RuleDependencyTests
+```
+✅ Async_inside_dependent_rules
+✅ Async_inside_dependent_rules_when_parent_rule_not_async
+✅ Dependent_rules_inside_ruleset
+✅ Dependent_rules_inside_when
+✅ Does_not_invoke_dependent_rule_if_parent_rule_does_not_pass
+✅ Invokes_dependent_rule_if_parent_rule_passes
+✅ Nested_dependent_rules
+✅ Nested_dependent_rules_inside_ruleset
+✅ Nested_dependent_rules_inside_ruleset_inside_method
+✅ Nested_dependent_rules_inside_ruleset_no_result_when_second_level_fails
+✅ Nested_dependent_rules_inside_ruleset_no_result_when_top_level_fails
+✅ TestAsyncWithDependentRules_AsyncEntry
+✅ TestAsyncWithDependentRules_SyncEntry
+✅ Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_use_DependentRulesBuilder
+```
+### ✅ FluentValidation.Tests.RulesetTests
+```
+✅ Applies_multiple_rulesets_to_rule
+✅ Combines_rulesets_and_explicit_properties
+✅ Combines_rulesets_and_explicit_properties_async
+✅ Executes_all_rules
+✅ Executes_in_rule_in_default_and_none
+✅ Executes_in_rule_in_ruleset_and_default
+✅ Executes_multiple_rulesets
+✅ Executes_rules_in_default_ruleset_and_specific_ruleset
+✅ Executes_rules_in_specified_ruleset
+✅ Executes_rules_not_specified_in_ruleset
+✅ Includes_all_rulesets
+✅ Includes_all_rulesets_async
+✅ Includes_combination_of_rulesets
+✅ Includes_combination_of_rulesets_async
+✅ Ruleset_cascades_to_child_collection_validator
+✅ Ruleset_cascades_to_child_validator
+✅ Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement
+✅ Ruleset_selection_should_cascade_downwards_with_when_setting_child_validator_using_include_statement_with_lambda
+✅ Ruleset_selection_should_not_cascade_downwards_when_set_on_property
+✅ Trims_spaces
+✅ WithMessage_works_inside_rulesets
+```
+### ✅ FluentValidation.Tests.ScalePrecisionValidatorTests
+```
+✅ Scale_precision_should_be_valid
+✅ Scale_precision_should_be_valid_when_ignoring_trailing_zeroes
+✅ Scale_precision_should_be_valid_when_they_are_equal
+✅ Scale_precision_should_not_be_valid
+✅ Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes
+✅ Scale_precision_should_not_be_valid_when_they_are_equal
+```
+### ✅ FluentValidation.Tests.SharedConditionTests
+```
+✅ Async_condition_can_be_used_inside_ruleset
+✅ Condition_can_be_used_inside_ruleset
+✅ Does_not_execute_custom_Rule_when_async_condition_false
+✅ Does_not_execute_custom_Rule_when_condition_false
+✅ Does_not_execute_customasync_Rule_when_async_condition_false
+✅ Does_not_execute_customasync_Rule_when_condition_false
+✅ Doesnt_throw_NullReferenceException_when_instance_not_null
+✅ Doesnt_throw_NullReferenceException_when_instance_not_null_async
+✅ Executes_custom_rule_when_async_condition_true
+✅ Executes_custom_rule_when_condition_true
+✅ Executes_customasync_rule_when_async_condition_true
+✅ Executes_customasync_rule_when_condition_true
+✅ Nested_async_conditions_with_Custom_rule
+✅ Nested_async_conditions_with_CustomAsync_rule
+✅ Nested_conditions_with_Custom_rule
+✅ Nested_conditions_with_CustomAsync_rule
+✅ Outer_async_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied
+✅ Outer_Unless_clause_will_trump_an_inner_Unless_clause_when_inner_fails_but_the_outer_is_satisfied
+✅ Rules_invoke_when_inverse_shared_async_condition_matches
+✅ Rules_invoke_when_inverse_shared_condition_matches
+✅ Rules_not_invoked_when_inverse_shared_async_condition_does_not_match
+✅ Rules_not_invoked_when_inverse_shared_condition_does_not_match
+✅ RuleSet_can_be_used_inside_async_condition
+✅ RuleSet_can_be_used_inside_condition
+✅ Runs_otherwise_conditions_for_UnlessAsync
+✅ Runs_otherwise_conditions_for_When
+✅ Runs_otherwise_conditions_for_WhenAsync
+✅ Runs_otherwise_conditons_for_Unless
+✅ Shared_async_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied
+✅ Shared_async_When_is_applied_to_grouped_rules_when_initial_predicate_is_true
+✅ Shared_async_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false
+✅ Shared_async_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails
+✅ Shared_async_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied
+✅ Shared_When_is_applied_to_groupd_rules_when_initial_predicate_is_true_and_all_individual_rules_are_satisfied
+✅ Shared_When_is_applied_to_grouped_rules_when_initial_predicate_is_true
+✅ Shared_When_is_not_applied_to_grouped_rules_when_initial_predicate_is_false
+✅ Shared_When_respects_the_smaller_scope_of_a_inner_Unless_when_the_inner_Unless_predicate_fails
+✅ Shared_When_respects_the_smaller_scope_of_an_inner_Unless_when_the_inner_Unless_predicate_is_satisfied
+✅ When_async_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached
+✅ When_condition_executed_for_each_instance_of_RuleForEach_condition_should_not_be_cached
+✅ When_condition_only_executed_once
+✅ WhenAsync_condition_only_executed_once
+```
+### ✅ FluentValidation.Tests.StandalonePropertyValidationTester
+```
+✅ Should_validate_property_value_without_instance
+```
+### ✅ FluentValidation.Tests.StringEnumValidatorTests
+```
+✅ IsValidTests_CaseInsensitive_CaseCorrect
+✅ IsValidTests_CaseInsensitive_CaseIncorrect
+✅ IsValidTests_CaseSensitive_CaseCorrect
+✅ IsValidTests_CaseSensitive_CaseIncorrect
+✅ When_enumType_is_not_an_enum_it_should_throw
+✅ When_enumType_is_null_it_should_throw
+✅ When_the_property_is_initialized_with_empty_string_then_the_validator_should_fail
+✅ When_the_property_is_initialized_with_invalid_string_then_the_validator_should_fail
+✅ When_the_property_is_initialized_with_null_then_the_validator_should_be_valid
+✅ When_validation_fails_the_default_error_should_be_set
+```
+### ✅ FluentValidation.Tests.TrackingCollectionTests
+```
+✅ Add_AddsItem
+✅ Should_not_raise_event_once_handler_detached
+✅ When_Item_Added_Raises_ItemAdded
+```
+### ✅ FluentValidation.Tests.TransformTests
+```
+✅ Transforms_collection_element
+✅ Transforms_collection_element_async
+✅ Transforms_property_value
+✅ Transforms_property_value_to_another_type
+```
+### ✅ FluentValidation.Tests.UserSeverityTester
+```
+✅ Can_Provide_conditional_severity
+✅ Can_Provide_severity_for_item_in_collection
+✅ Correctly_provides_object_being_validated
+✅ Defaults_user_severity_to_error
+✅ Should_use_last_supplied_severity
+✅ Stores_user_severity_against_validation_failure
+✅ Throws_when_provider_is_null
+```
+### ✅ FluentValidation.Tests.UserStateTester
+```
+✅ Can_Provide_state_for_item_in_collection
+✅ Correctly_provides_object_being_validated
+✅ Stores_user_state_against_validation_failure
+✅ Throws_when_provider_is_null
+```
+### ✅ FluentValidation.Tests.ValidateAndThrowTester
+```
+✅ Does_not_throw_when_valid
+✅ Does_not_throw_when_valid_and_a_ruleset
+✅ Does_not_throw_when_valid_and_a_ruleset_async
+✅ Does_not_throw_when_valid_async
+✅ Only_root_validator_throws
+✅ Populates_errors
+✅ Serializes_exception
+✅ Throws_exception
+✅ Throws_exception_async
+✅ Throws_exception_with_a_ruleset
+✅ Throws_exception_with_a_ruleset_async
+✅ ToString_provides_error_details
+✅ ValidationException_provides_correct_message_when_appendDefaultMessage_false
+✅ ValidationException_provides_correct_message_when_appendDefaultMessage_true
+```
+### ✅ FluentValidation.Tests.ValidationResultTests
+```
+✅ Can_serialize_failure
+✅ Can_serialize_result
+✅ Should_add_errors
+✅ Should_be_valid_when_there_are_no_errors
+✅ Should_not_be_valid_when_there_are_errors
+✅ ToString_return_empty_string_when_there_is_no_error
+✅ ToString_return_error_messages_with_given_separator
+✅ ToString_return_error_messages_with_newline_as_separator
+```
+### ✅ FluentValidation.Tests.ValidatorDescriptorTester
+```
+✅ Does_not_throw_when_rule_declared_without_property
+✅ Gets_validators_for_property
+✅ GetValidatorsForMember_and_GetRulesForMember_can_both_retrieve_for_model_level_rule
+✅ Returns_empty_collection_for_property_with_no_validators
+✅ Should_retrieve_name_given_to_it_pass_property_as_string
+```
+### ✅ FluentValidation.Tests.ValidatorSelectorTests
+```
+✅ Can_use_property_with_include
+✅ Does_not_validate_other_property
+✅ Does_not_validate_other_property_using_expression
+✅ Executes_correct_rule_when_using_property_with_include
+✅ Executes_correct_rule_when_using_property_with_include_async
+✅ Includes_nested_property
+✅ Includes_nested_property_using_expression
+✅ MemberNameValidatorSelector_returns_true_when_property_name_matches
+✅ Validates_nullable_property_with_overriden_name_when_selected
+✅ Validates_property_using_expression
+```
+### ✅ FluentValidation.Tests.ValidatorTesterTester
+```
+✅ Allows_only_one_failure_to_match
+✅ Can_use_indexer_in_string_message
+✅ Can_use_indexer_in_string_message_inverse
+✅ Expected_error_code_check
+✅ Expected_message_argument_check
+✅ Expected_message_check
+✅ Expected_severity_check
+✅ Expected_state_check
+✅ Matches_any_failure
+✅ Matches_model_level_rule
+✅ Model_level_check_fails_if_no_model_level_failures
+✅ ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator
+✅ ShouldHaveChildValidator_should_not_throw_when_property_Does_have_child_validator_and_expecting_a_basetype
+✅ ShouldHaveChildValidator_should_not_throw_when_property_has_collection_validators
+✅ ShouldHaveChildValidator_should_throw_when_property_has_a_different_child_validator
+✅ ShouldHaveChildValidator_should_work_with_DependentRules
+✅ ShouldHaveChildvalidator_throws_when_collection_property_Does_not_have_child_validator
+✅ ShouldHaveChildValidator_throws_when_property_does_not_have_child_validator
+✅ ShouldHaveChildValidator_works_on_model_level_rules
+✅ ShouldHaveValidationError_async
+✅ ShouldHaveValidationError_async_throws
+✅ ShouldHaveValidationError_model_async
+✅ ShouldHaveValidationError_model_async_throws
+✅ ShouldHaveValidationError_preconstructed_object_does_not_throw_for_unwritable_property
+✅ ShouldHaveValidationError_should_not_throw_when_there_are_errors_with_preconstructed_object
+✅ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors
+✅ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")
+✅ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null)
+✅ ShouldHaveValidationError_should_not_throw_when_there_are_validation_errors_ruleforeach
+✅ ShouldHaveValidationError_Should_support_nested_properties
+✅ ShouldHaveValidationError_Should_throw_when_there_are_no_validation_errors
+✅ ShouldHaveValidationError_should_throw_when_there_are_no_validation_errors_with_preconstructed_object
+✅ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "")
+✅ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: "cardNumber")
+✅ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 17, cardNumber: null)
+✅ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_Is_Used(age: 42, cardNumber: "cardNumber")
+✅ ShouldHaveValidationError_should_throw_when_there_are_not_validation_errors_ruleforeach
+✅ ShouldHaveValidationError_with_an_unmatched_rule_and_a_single_error_should_throw_an_exception
+✅ ShouldHaveValidationError_with_an_unmatched_rule_and_multiple_errors_should_throw_an_exception
+✅ ShouldHaveValidationErrorFor_takes_account_of_rulesets
+✅ ShouldHaveValidationErrorFor_takes_account_of_rulesets_fluent_approach
+✅ ShouldNotHaveValidationError_async
+✅ ShouldNotHaveValidationError_async_model_throws
+✅ ShouldNotHaveValidationError_async_throws
+✅ ShouldNotHaveValidationError_model_async
+✅ ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate
+✅ ShouldNotHaveValidationError_should_correctly_handle_explicitly_providing_object_to_validate_and_other_property_fails_validation
+✅ ShouldNotHaveValidationError_should_have_validation_error_details_when_thrown_ruleforeach
+✅ ShouldNotHaveValidationError_should_not_throw_when_there_are_no_errors
+✅ ShouldNotHAveValidationError_should_not_throw_When_there_are_no_errors_with_preconstructed_object
+✅ ShouldNotHaveValidationError_should_not_throw_when_there_are_not_validation_errors_ruleforeach
+✅ ShouldNotHaveValidationError_Should_support_nested_properties
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_errors
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_errors_with_preconstructed_object
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "")
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: "cardNumber")
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 17, cardNumber: null)
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_not_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "cardNumber")
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: "")
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors__WhenAsyn_is_used(age: 42, cardNumber: null)
+✅ ShouldNotHaveValidationError_should_throw_when_there_are_validation_errors_ruleforeach
+✅ Tests_nested_property
+✅ Tests_nested_property_reverse
+✅ Tests_nested_property_using_obsolete_method
+✅ TestValidate_runs_async
+✅ TestValidate_runs_async_throws
+✅ Unexpected_error_code_check
+✅ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["bar"])
+✅ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo", "bar"])
+✅ Unexpected_message_check(withoutErrMsg: "bar", errMessages: ["foo"])
+✅ Unexpected_message_check(withoutErrMsg: "bar", errMessages: [])
+✅ Unexpected_severity_check
+✅ Unexpected_state_check
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/jest-junit.md b/__tests__/__outputs__/jest-junit.md
index 5aecf5d..1579828 100644
--- a/__tests__/__outputs__/jest-junit.md
+++ b/__tests__/__outputs__/jest-junit.md
@@ -3,12 +3,12 @@
**6** tests were completed in **1s** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[__tests__\main.test.js](#r0s0)|1✔️|3❌||486ms|
-|[__tests__\second.test.js](#r0s1)||1❌|1✖️|82ms|
+|[__tests__\main.test.js](#r0s0)|1✅|3❌||486ms|
+|[__tests__\second.test.js](#r0s1)||1❌|1⚪|82ms|
### ❌ __tests__\main.test.js
```
Test 1
- ✔️ Passing test
+ ✅ Passing test
Test 1 › Test 1.1
❌ Failing test
Error: expect(received).toBeTruthy()
@@ -22,5 +22,5 @@ Test 2
```
❌ Timeout test
: Timeout - Async callback was not invoked within the 1 ms timeout specified by jest.setTimeout.Timeout - Async callback was not invoked within the 1 ms timeout specified by jest.setTimeout.Error:
-✖️ Skipped test
+⚪ Skipped test
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/jest-test-results.md b/__tests__/__outputs__/jest-test-results.md
index ed545bf..bc86f3c 100644
--- a/__tests__/__outputs__/jest-test-results.md
+++ b/__tests__/__outputs__/jest-test-results.md
@@ -3,430 +3,430 @@
**4239** tests were completed in **166s** with **4207** passed, **2** failed and **30** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|e2e/__tests__/asyncAndCallback.test.ts|1✔️|||746ms|
-|e2e/__tests__/asyncRegenerator.test.ts|1✔️|||4s|
-|e2e/__tests__/autoClearMocks.test.ts|2✔️|||2s|
-|e2e/__tests__/autoResetMocks.test.ts|2✔️|||2s|
-|e2e/__tests__/autoRestoreMocks.test.ts|2✔️|||2s|
-|e2e/__tests__/babelPluginJestHoist.test.ts|1✔️|||6s|
-|e2e/__tests__/badSourceMap.test.ts|1✔️|||858ms|
-|e2e/__tests__/beforeAllFiltered.ts|1✔️|||958ms|
-|e2e/__tests__/beforeEachQueue.ts|1✔️||1✖️|55ms|
-|e2e/__tests__/callDoneTwice.test.ts|1✔️|||882ms|
-|e2e/__tests__/chaiAssertionLibrary.ts|1✔️|||2s|
-|e2e/__tests__/circularInequality.test.ts|1✔️|||1s|
-|e2e/__tests__/circusConcurrentEach.test.ts|2✔️|||2s|
-|e2e/__tests__/circusDeclarationErrors.test.ts|1✔️|||869ms|
-|e2e/__tests__/clearCache.test.ts|2✔️|||1s|
-|e2e/__tests__/cliHandlesExactFilenames.test.ts|2✔️|||1s|
-|e2e/__tests__/compareDomNodes.test.ts|1✔️|||1s|
-|e2e/__tests__/config.test.ts|6✔️|||4s|
-|e2e/__tests__/console.test.ts|7✔️|||8s|
-|e2e/__tests__/consoleAfterTeardown.test.ts|1✔️|||1s|
-|e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts|1✔️|||793ms|
-|e2e/__tests__/coverageHandlebars.test.ts|1✔️|||2s|
-|e2e/__tests__/coverageRemapping.test.ts|1✔️|||13s|
-|e2e/__tests__/coverageReport.test.ts|12✔️|||22s|
-|e2e/__tests__/coverageThreshold.test.ts|5✔️|||5s|
-|e2e/__tests__/coverageTransformInstrumented.test.ts|1✔️|||5s|
-|e2e/__tests__/coverageWithoutTransform.test.ts|1✔️|||1s|
-|e2e/__tests__/createProcessObject.test.ts|1✔️|||908ms|
-|e2e/__tests__/customInlineSnapshotMatchers.test.ts|1✔️|||2s|
-|e2e/__tests__/customMatcherStackTrace.test.ts|2✔️|||2s|
-|e2e/__tests__/customReporters.test.ts|9✔️|||7s|
-|e2e/__tests__/customResolver.test.ts|1✔️|||826ms|
-|e2e/__tests__/customTestSequencers.test.ts|3✔️|||3s|
-|e2e/__tests__/debug.test.ts|1✔️|||899ms|
-|e2e/__tests__/declarationErrors.test.ts|3✔️|||2s|
-|e2e/__tests__/dependencyClash.test.ts|1✔️|||833ms|
-|e2e/__tests__/detectOpenHandles.ts|8✔️|||8s|
-|e2e/__tests__/domDiffing.test.ts|1✔️|||1s|
-|e2e/__tests__/doneInHooks.test.ts|1✔️|||855ms|
-|e2e/__tests__/dynamicRequireDependencies.ts|1✔️|||847ms|
-|e2e/__tests__/each.test.ts|7✔️|||5s|
-|e2e/__tests__/emptyDescribeWithHooks.test.ts|4✔️|||3s|
-|e2e/__tests__/emptySuiteError.test.ts|1✔️|||885ms|
-|e2e/__tests__/env.test.ts|6✔️|||5s|
-|e2e/__tests__/environmentAfterTeardown.test.ts|1✔️|||892ms|
-|e2e/__tests__/errorOnDeprecated.test.ts|1✔️||24✖️|56ms|
-|e2e/__tests__/esmConfigFile.test.ts|3✔️|||526ms|
-|e2e/__tests__/executeTestsOnceInMpr.ts|1✔️|||976ms|
-|e2e/__tests__/existentRoots.test.ts|4✔️|||627ms|
-|e2e/__tests__/expectAsyncMatcher.test.ts|2✔️|||3s|
-|e2e/__tests__/expectInVm.test.ts|1✔️|||2s|
-|e2e/__tests__/extraGlobals.test.ts|1✔️|||1s|
-|e2e/__tests__/failureDetailsProperty.test.ts|1✔️|||907ms|
-|e2e/__tests__/failures.test.ts|7✔️|||10s|
-|e2e/__tests__/fakePromises.test.ts|2✔️|||2s|
-|e2e/__tests__/fatalWorkerError.test.ts|1✔️|||3s|
-|e2e/__tests__/filter.test.ts|7✔️|||5s|
-|e2e/__tests__/findRelatedFiles.test.ts|5✔️|||6s|
-|e2e/__tests__/focusedTests.test.ts|1✔️|||888ms|
-|e2e/__tests__/forceExit.test.ts|1✔️|||2s|
-|e2e/__tests__/generatorMock.test.ts|1✔️|||1s|
-|e2e/__tests__/global-mutation.test.ts|1✔️|||40ms|
-|e2e/__tests__/global.test.ts|1✔️|||31ms|
-|e2e/__tests__/globals.test.ts|10✔️|||8s|
-|e2e/__tests__/globalSetup.test.ts|10✔️|||14s|
-|e2e/__tests__/globalTeardown.test.ts|7✔️|||12s|
-|e2e/__tests__/hasteMapMockChanged.test.ts|1✔️|||379ms|
-|e2e/__tests__/hasteMapSha1.test.ts|1✔️|||298ms|
-|e2e/__tests__/hasteMapSize.test.ts|2✔️|||397ms|
-|e2e/__tests__/importedGlobals.test.ts|1✔️|||1s|
-|e2e/__tests__/injectGlobals.test.ts|2✔️|||2s|
-|e2e/__tests__/jasmineAsync.test.ts|15✔️|||28s|
-|e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts|1✔️||1✖️|72ms|
-|e2e/__tests__/jest.config.js.test.ts|3✔️|||2s|
-|e2e/__tests__/jest.config.ts.test.ts|5✔️|||14s|
-|[e2e/__tests__/jestChangedFiles.test.ts](#r0s75)|9✔️|1❌||9s|
-|e2e/__tests__/jestEnvironmentJsdom.test.ts|1✔️|||2s|
-|e2e/__tests__/jestRequireActual.test.ts|1✔️|||2s|
-|e2e/__tests__/jestRequireMock.test.ts|1✔️|||2s|
-|e2e/__tests__/json.test.ts|2✔️|||29ms|
-|e2e/__tests__/jsonReporter.test.ts|2✔️|||2s|
-|e2e/__tests__/lifecycles.ts|1✔️|||861ms|
-|e2e/__tests__/listTests.test.ts|2✔️|||945ms|
-|e2e/__tests__/locationInResults.test.ts|2✔️|||2s|
-|e2e/__tests__/logHeapUsage.test.ts|1✔️|||884ms|
-|e2e/__tests__/mockNames.test.ts|8✔️|||7s|
-|e2e/__tests__/modernFakeTimers.test.ts|2✔️|||2s|
-|e2e/__tests__/moduleNameMapper.test.ts|5✔️|||5s|
-|e2e/__tests__/moduleParentNullInTest.ts|1✔️|||886ms|
-|e2e/__tests__/multiProjectRunner.test.ts|14✔️|||16s|
-|e2e/__tests__/nativeAsyncMock.test.ts|1✔️|||55ms|
-|e2e/__tests__/nativeEsm.test.ts|2✔️||1✖️|905ms|
-|e2e/__tests__/nativeEsmTypescript.test.ts|1✔️|||956ms|
-|e2e/__tests__/nestedEventLoop.test.ts|1✔️|||1s|
-|e2e/__tests__/nestedTestDefinitions.test.ts|4✔️|||5s|
-|e2e/__tests__/nodePath.test.ts|1✔️|||866ms|
-|e2e/__tests__/noTestFound.test.ts|2✔️|||1s|
-|e2e/__tests__/noTestsFound.test.ts|5✔️|||3s|
-|[e2e/__tests__/onlyChanged.test.ts](#r0s98)|8✔️|1❌||22s|
-|e2e/__tests__/onlyFailuresNonWatch.test.ts|1✔️|||3s|
-|e2e/__tests__/overrideGlobals.test.ts|2✔️|||2s|
-|e2e/__tests__/pnp.test.ts|1✔️|||3s|
-|e2e/__tests__/presets.test.ts|2✔️|||2s|
-|e2e/__tests__/processExit.test.ts|1✔️|||1s|
-|e2e/__tests__/promiseReject.test.ts|1✔️|||967ms|
-|e2e/__tests__/regexCharInPath.test.ts|1✔️|||962ms|
-|e2e/__tests__/requireAfterTeardown.test.ts|1✔️|||921ms|
-|e2e/__tests__/requireMain.test.ts|1✔️|||1s|
-|e2e/__tests__/requireMainAfterCreateRequire.test.ts|1✔️|||966ms|
-|e2e/__tests__/requireMainIsolateModules.test.ts|1✔️|||976ms|
-|e2e/__tests__/requireMainResetModules.test.ts|2✔️|||2s|
-|e2e/__tests__/requireV8Module.test.ts|1✔️|||30ms|
-|e2e/__tests__/resetModules.test.ts|1✔️|||926ms|
-|e2e/__tests__/resolve.test.ts|1✔️|||2s|
-|e2e/__tests__/resolveGetPaths.test.ts|1✔️|||1s|
-|e2e/__tests__/resolveNodeModule.test.ts|1✔️|||943ms|
-|e2e/__tests__/resolveNoFileExtensions.test.ts|2✔️|||1s|
-|e2e/__tests__/resolveWithPaths.test.ts|1✔️|||1s|
-|e2e/__tests__/runProgrammatically.test.ts|2✔️|||575ms|
-|e2e/__tests__/runTestsByPath.test.ts|1✔️|||2s|
-|e2e/__tests__/runtimeInternalModuleRegistry.test.ts|1✔️|||1s|
-|e2e/__tests__/selectProjects.test.ts|18✔️|||5s|
-|e2e/__tests__/setImmediate.test.ts|1✔️|||904ms|
-|e2e/__tests__/setupFilesAfterEnvConfig.test.ts|2✔️|||2s|
-|e2e/__tests__/showConfig.test.ts|1✔️|||195ms|
-|e2e/__tests__/skipBeforeAfterAll.test.ts|1✔️|||1s|
-|e2e/__tests__/snapshot-unknown.test.ts|1✔️|||838ms|
-|e2e/__tests__/snapshot.test.ts|9✔️|||14s|
-|e2e/__tests__/snapshotMockFs.test.ts|1✔️|||883ms|
-|e2e/__tests__/snapshotResolver.test.ts|1✔️|||823ms|
-|e2e/__tests__/snapshotSerializers.test.ts|2✔️|||2s|
-|e2e/__tests__/stackTrace.test.ts|7✔️|||5s|
-|e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts|1✔️|||899ms|
-|e2e/__tests__/stackTraceSourceMaps.test.ts|1✔️|||2s|
-|e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts|1✔️|||2s|
-|e2e/__tests__/supportsDashedArgs.ts|2✔️|||968ms|
-|e2e/__tests__/symbol.test.ts|1✔️|||49ms|
-|e2e/__tests__/testEnvironment.test.ts|1✔️|||2s|
-|e2e/__tests__/testEnvironmentAsync.test.ts|1✔️|||1s|
-|e2e/__tests__/testEnvironmentCircus.test.ts|1✔️|||2s|
-|e2e/__tests__/testEnvironmentCircusAsync.test.ts|1✔️|||2s|
-|e2e/__tests__/testFailureExitCode.test.ts|2✔️|||4s|
-|e2e/__tests__/testInRoot.test.ts|1✔️|||1s|
-|e2e/__tests__/testNamePattern.test.ts|1✔️|||859ms|
-|e2e/__tests__/testNamePatternSkipped.test.ts|1✔️|||991ms|
-|e2e/__tests__/testPathPatternReporterMessage.test.ts|1✔️|||3s|
-|e2e/__tests__/testResultsProcessor.test.ts|1✔️|||910ms|
-|e2e/__tests__/testRetries.test.ts|4✔️|||3s|
-|e2e/__tests__/testTodo.test.ts|5✔️|||4s|
-|e2e/__tests__/timeouts.test.ts|4✔️|||4s|
-|e2e/__tests__/timeoutsLegacy.test.ts|1✔️||3✖️|71ms|
-|e2e/__tests__/timerResetMocks.test.ts|2✔️|||2s|
-|e2e/__tests__/timerUseRealTimers.test.ts|1✔️|||1s|
-|e2e/__tests__/toMatchInlineSnapshot.test.ts|12✔️|||24s|
-|e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts|3✔️|||5s|
-|e2e/__tests__/toMatchSnapshot.test.ts|9✔️|||17s|
-|e2e/__tests__/toMatchSnapshotWithRetries.test.ts|2✔️|||4s|
-|e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts|3✔️|||4s|
-|e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts|4✔️|||4s|
-|e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts|5✔️|||4s|
-|e2e/__tests__/transform.test.ts|16✔️|||27s|
-|e2e/__tests__/transformLinkedModules.test.ts|1✔️|||783ms|
-|e2e/__tests__/typescriptCoverage.test.ts|1✔️|||3s|
-|e2e/__tests__/unexpectedToken.test.ts|3✔️|||3s|
-|e2e/__tests__/useStderr.test.ts|1✔️|||1s|
-|e2e/__tests__/v8Coverage.test.ts|2✔️|||2s|
-|e2e/__tests__/verbose.test.ts|1✔️|||683ms|
-|e2e/__tests__/version.test.ts|1✔️|||138ms|
-|e2e/__tests__/watchModeNoAccess.test.ts|1✔️|||4s|
-|e2e/__tests__/watchModeOnlyFailed.test.ts|1✔️|||1s|
-|e2e/__tests__/watchModePatterns.test.ts|2✔️|||4s|
-|e2e/__tests__/watchModeUpdateSnapshot.test.ts|1✔️|||1s|
-|e2e/__tests__/workerForceExit.test.ts|2✔️|||5s|
-|e2e/__tests__/wrongEnv.test.ts|5✔️|||4s|
-|e2e/custom-test-sequencer/a.test.js|1✔️|||29ms|
-|e2e/custom-test-sequencer/b.test.js|1✔️|||21ms|
-|e2e/custom-test-sequencer/c.test.js|1✔️|||42ms|
-|e2e/custom-test-sequencer/d.test.js|1✔️|||21ms|
-|e2e/custom-test-sequencer/e.test.js|1✔️|||27ms|
-|e2e/test-in-root/spec.js|1✔️|||19ms|
-|e2e/test-in-root/test.js|1✔️|||37ms|
-|e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js|2✔️|||30ms|
-|e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js|1✔️|||34ms|
-|e2e/v8-coverage/empty-sourcemap/test.ts|1✔️|||31ms|
-|examples/angular/app.component.spec.ts|3✔️|||654ms|
-|examples/angular/shared/data.service.spec.ts|2✔️|||431ms|
-|examples/angular/shared/sub.service.spec.ts|1✔️|||109ms|
-|examples/async/__tests__/user.test.js|8✔️|||96ms|
-|examples/automatic-mocks/__tests__/automock.test.js|2✔️|||74ms|
-|examples/automatic-mocks/__tests__/createMockFromModule.test.js|2✔️|||115ms|
-|examples/automatic-mocks/__tests__/disableAutomocking.test.js|1✔️|||24ms|
-|examples/enzyme/__tests__/CheckboxWithLabel-test.js|1✔️|||434ms|
-|examples/getting-started/sum.test.js|1✔️|||78ms|
-|examples/jquery/__tests__/display_user.test.js|1✔️|||196ms|
-|examples/jquery/__tests__/fetch_current_user.test.js|2✔️|||196ms|
-|examples/manual-mocks/__tests__/file_summarizer.test.js|1✔️|||87ms|
-|examples/manual-mocks/__tests__/lodashMocking.test.js|1✔️|||109ms|
-|examples/manual-mocks/__tests__/user.test.js|1✔️|||41ms|
-|examples/manual-mocks/__tests__/userMocked.test.js|1✔️|||105ms|
-|examples/module-mock/__tests__/full_mock.js|1✔️|||60ms|
-|examples/module-mock/__tests__/mock_per_test.js|2✔️|||116ms|
-|examples/module-mock/__tests__/partial_mock.js|1✔️|||215ms|
-|examples/mongodb/__test__/db.test.js|1✔️|||236ms|
-|examples/react-native/__tests__/intro.test.js|4✔️|||9s|
-|examples/react-testing-library/__tests__/CheckboxWithLabel-test.js|1✔️|||469ms|
-|examples/react/__tests__/CheckboxWithLabel-test.js|1✔️|||256ms|
-|examples/snapshot/__tests__/clock.react.test.js|1✔️|||62ms|
-|examples/snapshot/__tests__/link.react.test.js|4✔️|||181ms|
-|examples/timer/__tests__/infinite_timer_game.test.js|1✔️|||94ms|
-|examples/timer/__tests__/timer_game.test.js|3✔️|||74ms|
-|examples/typescript/__tests__/calc.test.ts|6✔️|||276ms|
-|examples/typescript/__tests__/CheckboxWithLabel-test.tsx|1✔️|||227ms|
-|examples/typescript/__tests__/sub-test.ts|1✔️|||43ms|
-|examples/typescript/__tests__/sum-test.ts|2✔️|||69ms|
-|examples/typescript/__tests__/sum.test.js|2✔️|||100ms|
-|packages/babel-jest/src/__tests__/index.ts|6✔️|||371ms|
-|packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts|4✔️|||347ms|
-|packages/diff-sequences/src/__tests__/index.property.test.ts|7✔️|||357ms|
-|packages/diff-sequences/src/__tests__/index.test.ts|48✔️|||195ms|
-|packages/expect/src/__tests__/assertionCounts.test.ts|6✔️|||60ms|
-|packages/expect/src/__tests__/asymmetricMatchers.test.ts|38✔️|||207ms|
-|packages/expect/src/__tests__/extend.test.ts|10✔️|||99ms|
-|packages/expect/src/__tests__/isError.test.ts|4✔️|||43ms|
-|packages/expect/src/__tests__/matchers-toContain.property.test.ts|2✔️|||236ms|
-|packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts|2✔️|||287ms|
-|packages/expect/src/__tests__/matchers-toEqual.property.test.ts|2✔️|||1s|
-|packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts|3✔️|||394ms|
-|packages/expect/src/__tests__/matchers.test.js|592✔️|||862ms|
-|packages/expect/src/__tests__/spyMatchers.test.ts|248✔️|||395ms|
-|packages/expect/src/__tests__/stacktrace.test.ts|3✔️|||69ms|
-|packages/expect/src/__tests__/symbolInObjects.test.ts|3✔️|||33ms|
-|packages/expect/src/__tests__/toEqual-dom.test.ts|12✔️|||99ms|
-|packages/expect/src/__tests__/toThrowMatchers.test.ts|98✔️|||257ms|
-|packages/expect/src/__tests__/utils.test.ts|41✔️|||147ms|
-|packages/jest-circus/src/__tests__/afterAll.test.ts|6✔️|||6s|
-|packages/jest-circus/src/__tests__/baseTest.test.ts|2✔️|||3s|
-|packages/jest-circus/src/__tests__/circusItTestError.test.ts|8✔️|||300ms|
-|packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts|3✔️|||81ms|
-|packages/jest-circus/src/__tests__/hooks.test.ts|3✔️|||4s|
-|packages/jest-circus/src/__tests__/hooksError.test.ts|32✔️|||127ms|
-|packages/jest-cli/src/__tests__/cli/args.test.ts|17✔️|||345ms|
-|packages/jest-cli/src/init/__tests__/init.test.js|24✔️|||119ms|
-|packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts|4✔️|||30ms|
-|packages/jest-config/src/__tests__/Defaults.test.ts|1✔️|||672ms|
-|packages/jest-config/src/__tests__/getMaxWorkers.test.ts|7✔️|||67ms|
-|packages/jest-config/src/__tests__/normalize.test.js|118✔️|||798ms|
-|packages/jest-config/src/__tests__/readConfig.test.ts|1✔️|||76ms|
-|packages/jest-config/src/__tests__/readConfigs.test.ts|3✔️|||135ms|
-|packages/jest-config/src/__tests__/resolveConfigPath.test.ts|10✔️|||183ms|
-|packages/jest-config/src/__tests__/setFromArgv.test.ts|4✔️|||53ms|
-|packages/jest-config/src/__tests__/validatePattern.test.ts|4✔️|||52ms|
-|packages/jest-console/src/__tests__/bufferedConsole.test.ts|20✔️|||171ms|
-|packages/jest-console/src/__tests__/CustomConsole.test.ts|23✔️|||115ms|
-|packages/jest-console/src/__tests__/getConsoleOutput.test.ts|12✔️|||56ms|
-|packages/jest-core/src/__tests__/FailedTestsCache.test.js|1✔️|||25ms|
-|packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js|5✔️|||61ms|
-|packages/jest-core/src/__tests__/globals.test.ts|1✔️|||22ms|
-|packages/jest-core/src/__tests__/runJest.test.js|2✔️|||261ms|
-|packages/jest-core/src/__tests__/SearchSource.test.ts|27✔️|||3s|
-|packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js|13✔️|||89ms|
-|packages/jest-core/src/__tests__/TestScheduler.test.js|8✔️|||520ms|
-|packages/jest-core/src/__tests__/testSchedulerHelper.test.js|12✔️|||48ms|
-|packages/jest-core/src/__tests__/watch.test.js|80✔️|||7s|
-|packages/jest-core/src/__tests__/watchFileChanges.test.ts|1✔️|||2s|
-|packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js|2✔️|||165ms|
-|packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js|1✔️|||246ms|
-|packages/jest-core/src/lib/__tests__/isValidPath.test.ts|3✔️|||166ms|
-|packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts|3✔️|||48ms|
-|packages/jest-create-cache-key-function/src/__tests__/index.test.ts|1✔️|||75ms|
-|packages/jest-diff/src/__tests__/diff.test.ts|107✔️|||625ms|
-|packages/jest-diff/src/__tests__/diffStringsRaw.test.ts|2✔️|||55ms|
-|packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts|24✔️|||72ms|
-|packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts|6✔️|||44ms|
-|packages/jest-docblock/src/__tests__/index.test.ts|36✔️|||177ms|
-|packages/jest-each/src/__tests__/array.test.ts|159✔️|||192ms|
-|packages/jest-each/src/__tests__/index.test.ts|10✔️|||44ms|
-|packages/jest-each/src/__tests__/template.test.ts|242✔️|||483ms|
-|packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts|2✔️|||783ms|
-|packages/jest-environment-node/src/__tests__/node_environment.test.ts|6✔️|||184ms|
-|packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts|50✔️|||302ms|
-|packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts|40✔️|||317ms|
-|packages/jest-get-type/src/__tests__/getType.test.ts|14✔️|||45ms|
-|packages/jest-get-type/src/__tests__/isPrimitive.test.ts|18✔️|||36ms|
-|packages/jest-globals/src/__tests__/index.ts|1✔️|||533ms|
-|packages/jest-haste-map/src/__tests__/get_mock_name.test.js|1✔️|||22ms|
-|packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts|1✔️|||337ms|
-|packages/jest-haste-map/src/__tests__/index.test.js|44✔️|||1s|
-|packages/jest-haste-map/src/__tests__/worker.test.js|7✔️|||100ms|
-|packages/jest-haste-map/src/crawlers/__tests__/node.test.js|10✔️|||170ms|
-|packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js|8✔️|||153ms|
-|packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js|15✔️|||56ms|
-|packages/jest-haste-map/src/lib/__tests__/fast_path.test.js|5✔️|||29ms|
-|packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js|1✔️|||35ms|
-|packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js|2✔️|||31ms|
-|packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js|2✔️|||35ms|
-|packages/jest-jasmine2/src/__tests__/concurrent.test.ts|3✔️|||24ms|
-|packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts|7✔️|||70ms|
-|packages/jest-jasmine2/src/__tests__/hooksError.test.ts|32✔️|||51ms|
-|packages/jest-jasmine2/src/__tests__/iterators.test.ts|4✔️|||43ms|
-|packages/jest-jasmine2/src/__tests__/itTestError.test.ts|6✔️|||32ms|
-|packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts|1✔️|||23ms|
-|packages/jest-jasmine2/src/__tests__/pTimeout.test.ts|3✔️|||44ms|
-|packages/jest-jasmine2/src/__tests__/queueRunner.test.ts|6✔️|||93ms|
-|packages/jest-jasmine2/src/__tests__/reporter.test.ts|1✔️|||107ms|
-|packages/jest-jasmine2/src/__tests__/Suite.test.ts|1✔️|||84ms|
-|packages/jest-jasmine2/src/__tests__/todoError.test.ts|3✔️|||27ms|
-|packages/jest-leak-detector/src/__tests__/index.test.ts|6✔️|||986ms|
-|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts|11✔️|||49ms|
-|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts|2✔️|||48ms|
-|packages/jest-matcher-utils/src/__tests__/index.test.ts|48✔️|||391ms|
-|packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts|21✔️|||114ms|
-|packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts|17✔️|||111ms|
-|packages/jest-message-util/src/__tests__/messages.test.ts|11✔️|||205ms|
-|packages/jest-mock/src/__tests__/index.test.ts|84✔️|||509ms|
-|packages/jest-regex-util/src/__tests__/index.test.ts|8✔️|||56ms|
-|packages/jest-repl/src/__tests__/jest_repl.test.js|1✔️|||1s|
-|packages/jest-repl/src/__tests__/runtime_cli.test.js|4✔️|||4s|
-|packages/jest-reporters/src/__tests__/CoverageReporter.test.js|12✔️|||397ms|
-|packages/jest-reporters/src/__tests__/CoverageWorker.test.js|2✔️|||199ms|
-|packages/jest-reporters/src/__tests__/DefaultReporter.test.js|2✔️|||148ms|
-|packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js|3✔️|||1s|
-|packages/jest-reporters/src/__tests__/getResultHeader.test.js|4✔️|||30ms|
-|packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js|3✔️|||28ms|
-|packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js|4✔️|||49ms|
-|packages/jest-reporters/src/__tests__/getWatermarks.test.ts|2✔️|||37ms|
-|packages/jest-reporters/src/__tests__/NotifyReporter.test.ts|18✔️|||166ms|
-|packages/jest-reporters/src/__tests__/SummaryReporter.test.js|4✔️|||366ms|
-|packages/jest-reporters/src/__tests__/utils.test.ts|10✔️|||85ms|
-|packages/jest-reporters/src/__tests__/VerboseReporter.test.js|11✔️|||425ms|
-|packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts|11✔️|||666ms|
-|packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts|4✔️|||36ms|
-|packages/jest-resolve/src/__tests__/resolve.test.ts|16✔️|||1s|
-|packages/jest-runner/src/__tests__/testRunner.test.ts|2✔️|||905ms|
-|packages/jest-runtime/src/__tests__/instrumentation.test.ts|1✔️|||275ms|
-|packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js|3✔️|||606ms|
-|packages/jest-runtime/src/__tests__/runtime_environment.test.js|2✔️|||497ms|
-|packages/jest-runtime/src/__tests__/runtime_internal_module.test.js|4✔️|||727ms|
-|packages/jest-runtime/src/__tests__/runtime_jest_fn.js|4✔️|||479ms|
-|packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js|2✔️|||521ms|
-|packages/jest-runtime/src/__tests__/runtime_mock.test.js|4✔️|||743ms|
-|packages/jest-runtime/src/__tests__/runtime_module_directories.test.js|4✔️|||525ms|
-|packages/jest-runtime/src/__tests__/runtime_node_path.test.js|4✔️|||1s|
-|packages/jest-runtime/src/__tests__/runtime_require_actual.test.js|2✔️|||478ms|
-|packages/jest-runtime/src/__tests__/runtime_require_cache.test.js|2✔️|||454ms|
-|packages/jest-runtime/src/__tests__/runtime_require_mock.test.js|13✔️|||962ms|
-|packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js|1✔️|||261ms|
-|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js|6✔️|||2s|
-|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js|17✔️|||1s|
-|packages/jest-runtime/src/__tests__/runtime_require_module.test.js|27✔️|||2s|
-|packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts|5✔️|||707ms|
-|packages/jest-runtime/src/__tests__/runtime_wrap.js|2✔️|||263ms|
-|packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js|1✔️|||584ms|
-|packages/jest-runtime/src/__tests__/Runtime-statics.test.js|2✔️|||162ms|
-|packages/jest-serializer/src/__tests__/index.test.ts|17✔️|||158ms|
-|packages/jest-snapshot/src/__tests__/dedentLines.test.ts|17✔️|||94ms|
-|packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts|22✔️|||1s|
-|packages/jest-snapshot/src/__tests__/matcher.test.ts|1✔️|||131ms|
-|packages/jest-snapshot/src/__tests__/mockSerializer.test.ts|10✔️|||45ms|
-|packages/jest-snapshot/src/__tests__/printSnapshot.test.ts|71✔️|||1s|
-|packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts|10✔️|||98ms|
-|packages/jest-snapshot/src/__tests__/throwMatcher.test.ts|3✔️|||481ms|
-|packages/jest-snapshot/src/__tests__/utils.test.ts|26✔️|||214ms|
-|packages/jest-source-map/src/__tests__/getCallsite.test.ts|3✔️|||86ms|
-|packages/jest-test-result/src/__tests__/formatTestResults.test.ts|1✔️|||53ms|
-|packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js|8✔️|||251ms|
-|packages/jest-transform/src/__tests__/ScriptTransformer.test.ts|22✔️|||2s|
-|packages/jest-transform/src/__tests__/shouldInstrument.test.ts|25✔️|||155ms|
-|packages/jest-util/src/__tests__/createProcessObject.test.ts|4✔️|||81ms|
-|packages/jest-util/src/__tests__/deepCyclicCopy.test.ts|12✔️|||86ms|
-|packages/jest-util/src/__tests__/errorWithStack.test.ts|1✔️|||41ms|
-|packages/jest-util/src/__tests__/formatTime.test.ts|11✔️|||82ms|
-|packages/jest-util/src/__tests__/globsToMatcher.test.ts|4✔️|||56ms|
-|packages/jest-util/src/__tests__/installCommonGlobals.test.ts|2✔️|||68ms|
-|packages/jest-util/src/__tests__/isInteractive.test.ts|2✔️|||35ms|
-|packages/jest-util/src/__tests__/isPromise.test.ts|10✔️|||30ms|
-|packages/jest-validate/src/__tests__/validate.test.ts|23✔️|||283ms|
-|packages/jest-validate/src/__tests__/validateCLIOptions.test.js|6✔️|||83ms|
-|packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts|11✔️|||129ms|
-|packages/jest-watcher/src/lib/__tests__/prompt.test.ts|3✔️|||91ms|
-|packages/jest-watcher/src/lib/__tests__/scroll.test.ts|5✔️|||57ms|
-|packages/jest-worker/src/__tests__/Farm.test.js|10✔️|||158ms|
-|packages/jest-worker/src/__tests__/FifoQueue.test.js|3✔️|||48ms|
-|packages/jest-worker/src/__tests__/index.test.js|8✔️|||230ms|
-|packages/jest-worker/src/__tests__/PriorityQueue.test.js|5✔️|||63ms|
-|packages/jest-worker/src/__tests__/process-integration.test.js|5✔️|||62ms|
-|packages/jest-worker/src/__tests__/thread-integration.test.js|6✔️|||114ms|
-|packages/jest-worker/src/__tests__/WorkerPool.test.js|3✔️|||51ms|
-|packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js|11✔️|||653ms|
-|packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js|17✔️|||184ms|
-|packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js|15✔️|||258ms|
-|packages/jest-worker/src/workers/__tests__/processChild.test.js|10✔️|||135ms|
-|packages/jest-worker/src/workers/__tests__/threadChild.test.js|10✔️|||120ms|
-|packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts|38✔️|||137ms|
-|packages/pretty-format/src/__tests__/ConvertAnsi.test.ts|6✔️|||43ms|
-|packages/pretty-format/src/__tests__/DOMCollection.test.ts|10✔️|||64ms|
-|packages/pretty-format/src/__tests__/DOMElement.test.ts|28✔️|||148ms|
-|packages/pretty-format/src/__tests__/Immutable.test.ts|111✔️|||443ms|
-|packages/pretty-format/src/__tests__/prettyFormat.test.ts|86✔️|||219ms|
-|packages/pretty-format/src/__tests__/react.test.tsx|55✔️|||325ms|
-|packages/pretty-format/src/__tests__/ReactElement.test.ts|3✔️|||64ms|
+|e2e/__tests__/asyncAndCallback.test.ts|1✅|||746ms|
+|e2e/__tests__/asyncRegenerator.test.ts|1✅|||4s|
+|e2e/__tests__/autoClearMocks.test.ts|2✅|||2s|
+|e2e/__tests__/autoResetMocks.test.ts|2✅|||2s|
+|e2e/__tests__/autoRestoreMocks.test.ts|2✅|||2s|
+|e2e/__tests__/babelPluginJestHoist.test.ts|1✅|||6s|
+|e2e/__tests__/badSourceMap.test.ts|1✅|||858ms|
+|e2e/__tests__/beforeAllFiltered.ts|1✅|||958ms|
+|e2e/__tests__/beforeEachQueue.ts|1✅||1⚪|55ms|
+|e2e/__tests__/callDoneTwice.test.ts|1✅|||882ms|
+|e2e/__tests__/chaiAssertionLibrary.ts|1✅|||2s|
+|e2e/__tests__/circularInequality.test.ts|1✅|||1s|
+|e2e/__tests__/circusConcurrentEach.test.ts|2✅|||2s|
+|e2e/__tests__/circusDeclarationErrors.test.ts|1✅|||869ms|
+|e2e/__tests__/clearCache.test.ts|2✅|||1s|
+|e2e/__tests__/cliHandlesExactFilenames.test.ts|2✅|||1s|
+|e2e/__tests__/compareDomNodes.test.ts|1✅|||1s|
+|e2e/__tests__/config.test.ts|6✅|||4s|
+|e2e/__tests__/console.test.ts|7✅|||8s|
+|e2e/__tests__/consoleAfterTeardown.test.ts|1✅|||1s|
+|e2e/__tests__/consoleLogOutputWhenRunInBand.test.ts|1✅|||793ms|
+|e2e/__tests__/coverageHandlebars.test.ts|1✅|||2s|
+|e2e/__tests__/coverageRemapping.test.ts|1✅|||13s|
+|e2e/__tests__/coverageReport.test.ts|12✅|||22s|
+|e2e/__tests__/coverageThreshold.test.ts|5✅|||5s|
+|e2e/__tests__/coverageTransformInstrumented.test.ts|1✅|||5s|
+|e2e/__tests__/coverageWithoutTransform.test.ts|1✅|||1s|
+|e2e/__tests__/createProcessObject.test.ts|1✅|||908ms|
+|e2e/__tests__/customInlineSnapshotMatchers.test.ts|1✅|||2s|
+|e2e/__tests__/customMatcherStackTrace.test.ts|2✅|||2s|
+|e2e/__tests__/customReporters.test.ts|9✅|||7s|
+|e2e/__tests__/customResolver.test.ts|1✅|||826ms|
+|e2e/__tests__/customTestSequencers.test.ts|3✅|||3s|
+|e2e/__tests__/debug.test.ts|1✅|||899ms|
+|e2e/__tests__/declarationErrors.test.ts|3✅|||2s|
+|e2e/__tests__/dependencyClash.test.ts|1✅|||833ms|
+|e2e/__tests__/detectOpenHandles.ts|8✅|||8s|
+|e2e/__tests__/domDiffing.test.ts|1✅|||1s|
+|e2e/__tests__/doneInHooks.test.ts|1✅|||855ms|
+|e2e/__tests__/dynamicRequireDependencies.ts|1✅|||847ms|
+|e2e/__tests__/each.test.ts|7✅|||5s|
+|e2e/__tests__/emptyDescribeWithHooks.test.ts|4✅|||3s|
+|e2e/__tests__/emptySuiteError.test.ts|1✅|||885ms|
+|e2e/__tests__/env.test.ts|6✅|||5s|
+|e2e/__tests__/environmentAfterTeardown.test.ts|1✅|||892ms|
+|e2e/__tests__/errorOnDeprecated.test.ts|1✅||24⚪|56ms|
+|e2e/__tests__/esmConfigFile.test.ts|3✅|||526ms|
+|e2e/__tests__/executeTestsOnceInMpr.ts|1✅|||976ms|
+|e2e/__tests__/existentRoots.test.ts|4✅|||627ms|
+|e2e/__tests__/expectAsyncMatcher.test.ts|2✅|||3s|
+|e2e/__tests__/expectInVm.test.ts|1✅|||2s|
+|e2e/__tests__/extraGlobals.test.ts|1✅|||1s|
+|e2e/__tests__/failureDetailsProperty.test.ts|1✅|||907ms|
+|e2e/__tests__/failures.test.ts|7✅|||10s|
+|e2e/__tests__/fakePromises.test.ts|2✅|||2s|
+|e2e/__tests__/fatalWorkerError.test.ts|1✅|||3s|
+|e2e/__tests__/filter.test.ts|7✅|||5s|
+|e2e/__tests__/findRelatedFiles.test.ts|5✅|||6s|
+|e2e/__tests__/focusedTests.test.ts|1✅|||888ms|
+|e2e/__tests__/forceExit.test.ts|1✅|||2s|
+|e2e/__tests__/generatorMock.test.ts|1✅|||1s|
+|e2e/__tests__/global-mutation.test.ts|1✅|||40ms|
+|e2e/__tests__/global.test.ts|1✅|||31ms|
+|e2e/__tests__/globals.test.ts|10✅|||8s|
+|e2e/__tests__/globalSetup.test.ts|10✅|||14s|
+|e2e/__tests__/globalTeardown.test.ts|7✅|||12s|
+|e2e/__tests__/hasteMapMockChanged.test.ts|1✅|||379ms|
+|e2e/__tests__/hasteMapSha1.test.ts|1✅|||298ms|
+|e2e/__tests__/hasteMapSize.test.ts|2✅|||397ms|
+|e2e/__tests__/importedGlobals.test.ts|1✅|||1s|
+|e2e/__tests__/injectGlobals.test.ts|2✅|||2s|
+|e2e/__tests__/jasmineAsync.test.ts|15✅|||28s|
+|e2e/__tests__/jasmineAsyncWithPendingDuringTest.ts|1✅||1⚪|72ms|
+|e2e/__tests__/jest.config.js.test.ts|3✅|||2s|
+|e2e/__tests__/jest.config.ts.test.ts|5✅|||14s|
+|[e2e/__tests__/jestChangedFiles.test.ts](#r0s75)|9✅|1❌||9s|
+|e2e/__tests__/jestEnvironmentJsdom.test.ts|1✅|||2s|
+|e2e/__tests__/jestRequireActual.test.ts|1✅|||2s|
+|e2e/__tests__/jestRequireMock.test.ts|1✅|||2s|
+|e2e/__tests__/json.test.ts|2✅|||29ms|
+|e2e/__tests__/jsonReporter.test.ts|2✅|||2s|
+|e2e/__tests__/lifecycles.ts|1✅|||861ms|
+|e2e/__tests__/listTests.test.ts|2✅|||945ms|
+|e2e/__tests__/locationInResults.test.ts|2✅|||2s|
+|e2e/__tests__/logHeapUsage.test.ts|1✅|||884ms|
+|e2e/__tests__/mockNames.test.ts|8✅|||7s|
+|e2e/__tests__/modernFakeTimers.test.ts|2✅|||2s|
+|e2e/__tests__/moduleNameMapper.test.ts|5✅|||5s|
+|e2e/__tests__/moduleParentNullInTest.ts|1✅|||886ms|
+|e2e/__tests__/multiProjectRunner.test.ts|14✅|||16s|
+|e2e/__tests__/nativeAsyncMock.test.ts|1✅|||55ms|
+|e2e/__tests__/nativeEsm.test.ts|2✅||1⚪|905ms|
+|e2e/__tests__/nativeEsmTypescript.test.ts|1✅|||956ms|
+|e2e/__tests__/nestedEventLoop.test.ts|1✅|||1s|
+|e2e/__tests__/nestedTestDefinitions.test.ts|4✅|||5s|
+|e2e/__tests__/nodePath.test.ts|1✅|||866ms|
+|e2e/__tests__/noTestFound.test.ts|2✅|||1s|
+|e2e/__tests__/noTestsFound.test.ts|5✅|||3s|
+|[e2e/__tests__/onlyChanged.test.ts](#r0s98)|8✅|1❌||22s|
+|e2e/__tests__/onlyFailuresNonWatch.test.ts|1✅|||3s|
+|e2e/__tests__/overrideGlobals.test.ts|2✅|||2s|
+|e2e/__tests__/pnp.test.ts|1✅|||3s|
+|e2e/__tests__/presets.test.ts|2✅|||2s|
+|e2e/__tests__/processExit.test.ts|1✅|||1s|
+|e2e/__tests__/promiseReject.test.ts|1✅|||967ms|
+|e2e/__tests__/regexCharInPath.test.ts|1✅|||962ms|
+|e2e/__tests__/requireAfterTeardown.test.ts|1✅|||921ms|
+|e2e/__tests__/requireMain.test.ts|1✅|||1s|
+|e2e/__tests__/requireMainAfterCreateRequire.test.ts|1✅|||966ms|
+|e2e/__tests__/requireMainIsolateModules.test.ts|1✅|||976ms|
+|e2e/__tests__/requireMainResetModules.test.ts|2✅|||2s|
+|e2e/__tests__/requireV8Module.test.ts|1✅|||30ms|
+|e2e/__tests__/resetModules.test.ts|1✅|||926ms|
+|e2e/__tests__/resolve.test.ts|1✅|||2s|
+|e2e/__tests__/resolveGetPaths.test.ts|1✅|||1s|
+|e2e/__tests__/resolveNodeModule.test.ts|1✅|||943ms|
+|e2e/__tests__/resolveNoFileExtensions.test.ts|2✅|||1s|
+|e2e/__tests__/resolveWithPaths.test.ts|1✅|||1s|
+|e2e/__tests__/runProgrammatically.test.ts|2✅|||575ms|
+|e2e/__tests__/runTestsByPath.test.ts|1✅|||2s|
+|e2e/__tests__/runtimeInternalModuleRegistry.test.ts|1✅|||1s|
+|e2e/__tests__/selectProjects.test.ts|18✅|||5s|
+|e2e/__tests__/setImmediate.test.ts|1✅|||904ms|
+|e2e/__tests__/setupFilesAfterEnvConfig.test.ts|2✅|||2s|
+|e2e/__tests__/showConfig.test.ts|1✅|||195ms|
+|e2e/__tests__/skipBeforeAfterAll.test.ts|1✅|||1s|
+|e2e/__tests__/snapshot-unknown.test.ts|1✅|||838ms|
+|e2e/__tests__/snapshot.test.ts|9✅|||14s|
+|e2e/__tests__/snapshotMockFs.test.ts|1✅|||883ms|
+|e2e/__tests__/snapshotResolver.test.ts|1✅|||823ms|
+|e2e/__tests__/snapshotSerializers.test.ts|2✅|||2s|
+|e2e/__tests__/stackTrace.test.ts|7✅|||5s|
+|e2e/__tests__/stackTraceNoCaptureStackTrace.test.ts|1✅|||899ms|
+|e2e/__tests__/stackTraceSourceMaps.test.ts|1✅|||2s|
+|e2e/__tests__/stackTraceSourceMapsWithCoverage.test.ts|1✅|||2s|
+|e2e/__tests__/supportsDashedArgs.ts|2✅|||968ms|
+|e2e/__tests__/symbol.test.ts|1✅|||49ms|
+|e2e/__tests__/testEnvironment.test.ts|1✅|||2s|
+|e2e/__tests__/testEnvironmentAsync.test.ts|1✅|||1s|
+|e2e/__tests__/testEnvironmentCircus.test.ts|1✅|||2s|
+|e2e/__tests__/testEnvironmentCircusAsync.test.ts|1✅|||2s|
+|e2e/__tests__/testFailureExitCode.test.ts|2✅|||4s|
+|e2e/__tests__/testInRoot.test.ts|1✅|||1s|
+|e2e/__tests__/testNamePattern.test.ts|1✅|||859ms|
+|e2e/__tests__/testNamePatternSkipped.test.ts|1✅|||991ms|
+|e2e/__tests__/testPathPatternReporterMessage.test.ts|1✅|||3s|
+|e2e/__tests__/testResultsProcessor.test.ts|1✅|||910ms|
+|e2e/__tests__/testRetries.test.ts|4✅|||3s|
+|e2e/__tests__/testTodo.test.ts|5✅|||4s|
+|e2e/__tests__/timeouts.test.ts|4✅|||4s|
+|e2e/__tests__/timeoutsLegacy.test.ts|1✅||3⚪|71ms|
+|e2e/__tests__/timerResetMocks.test.ts|2✅|||2s|
+|e2e/__tests__/timerUseRealTimers.test.ts|1✅|||1s|
+|e2e/__tests__/toMatchInlineSnapshot.test.ts|12✅|||24s|
+|e2e/__tests__/toMatchInlineSnapshotWithRetries.test.ts|3✅|||5s|
+|e2e/__tests__/toMatchSnapshot.test.ts|9✅|||17s|
+|e2e/__tests__/toMatchSnapshotWithRetries.test.ts|2✅|||4s|
+|e2e/__tests__/toMatchSnapshotWithStringSerializer.test.ts|3✅|||4s|
+|e2e/__tests__/toThrowErrorMatchingInlineSnapshot.test.ts|4✅|||4s|
+|e2e/__tests__/toThrowErrorMatchingSnapshot.test.ts|5✅|||4s|
+|e2e/__tests__/transform.test.ts|16✅|||27s|
+|e2e/__tests__/transformLinkedModules.test.ts|1✅|||783ms|
+|e2e/__tests__/typescriptCoverage.test.ts|1✅|||3s|
+|e2e/__tests__/unexpectedToken.test.ts|3✅|||3s|
+|e2e/__tests__/useStderr.test.ts|1✅|||1s|
+|e2e/__tests__/v8Coverage.test.ts|2✅|||2s|
+|e2e/__tests__/verbose.test.ts|1✅|||683ms|
+|e2e/__tests__/version.test.ts|1✅|||138ms|
+|e2e/__tests__/watchModeNoAccess.test.ts|1✅|||4s|
+|e2e/__tests__/watchModeOnlyFailed.test.ts|1✅|||1s|
+|e2e/__tests__/watchModePatterns.test.ts|2✅|||4s|
+|e2e/__tests__/watchModeUpdateSnapshot.test.ts|1✅|||1s|
+|e2e/__tests__/workerForceExit.test.ts|2✅|||5s|
+|e2e/__tests__/wrongEnv.test.ts|5✅|||4s|
+|e2e/custom-test-sequencer/a.test.js|1✅|||29ms|
+|e2e/custom-test-sequencer/b.test.js|1✅|||21ms|
+|e2e/custom-test-sequencer/c.test.js|1✅|||42ms|
+|e2e/custom-test-sequencer/d.test.js|1✅|||21ms|
+|e2e/custom-test-sequencer/e.test.js|1✅|||27ms|
+|e2e/test-in-root/spec.js|1✅|||19ms|
+|e2e/test-in-root/test.js|1✅|||37ms|
+|e2e/timer-reset-mocks/after-reset-all-mocks/timerAndMock.test.js|2✅|||30ms|
+|e2e/timer-reset-mocks/with-reset-mocks/timerWithMock.test.js|1✅|||34ms|
+|e2e/v8-coverage/empty-sourcemap/test.ts|1✅|||31ms|
+|examples/angular/app.component.spec.ts|3✅|||654ms|
+|examples/angular/shared/data.service.spec.ts|2✅|||431ms|
+|examples/angular/shared/sub.service.spec.ts|1✅|||109ms|
+|examples/async/__tests__/user.test.js|8✅|||96ms|
+|examples/automatic-mocks/__tests__/automock.test.js|2✅|||74ms|
+|examples/automatic-mocks/__tests__/createMockFromModule.test.js|2✅|||115ms|
+|examples/automatic-mocks/__tests__/disableAutomocking.test.js|1✅|||24ms|
+|examples/enzyme/__tests__/CheckboxWithLabel-test.js|1✅|||434ms|
+|examples/getting-started/sum.test.js|1✅|||78ms|
+|examples/jquery/__tests__/display_user.test.js|1✅|||196ms|
+|examples/jquery/__tests__/fetch_current_user.test.js|2✅|||196ms|
+|examples/manual-mocks/__tests__/file_summarizer.test.js|1✅|||87ms|
+|examples/manual-mocks/__tests__/lodashMocking.test.js|1✅|||109ms|
+|examples/manual-mocks/__tests__/user.test.js|1✅|||41ms|
+|examples/manual-mocks/__tests__/userMocked.test.js|1✅|||105ms|
+|examples/module-mock/__tests__/full_mock.js|1✅|||60ms|
+|examples/module-mock/__tests__/mock_per_test.js|2✅|||116ms|
+|examples/module-mock/__tests__/partial_mock.js|1✅|||215ms|
+|examples/mongodb/__test__/db.test.js|1✅|||236ms|
+|examples/react-native/__tests__/intro.test.js|4✅|||9s|
+|examples/react-testing-library/__tests__/CheckboxWithLabel-test.js|1✅|||469ms|
+|examples/react/__tests__/CheckboxWithLabel-test.js|1✅|||256ms|
+|examples/snapshot/__tests__/clock.react.test.js|1✅|||62ms|
+|examples/snapshot/__tests__/link.react.test.js|4✅|||181ms|
+|examples/timer/__tests__/infinite_timer_game.test.js|1✅|||94ms|
+|examples/timer/__tests__/timer_game.test.js|3✅|||74ms|
+|examples/typescript/__tests__/calc.test.ts|6✅|||276ms|
+|examples/typescript/__tests__/CheckboxWithLabel-test.tsx|1✅|||227ms|
+|examples/typescript/__tests__/sub-test.ts|1✅|||43ms|
+|examples/typescript/__tests__/sum-test.ts|2✅|||69ms|
+|examples/typescript/__tests__/sum.test.js|2✅|||100ms|
+|packages/babel-jest/src/__tests__/index.ts|6✅|||371ms|
+|packages/babel-plugin-jest-hoist/src/__tests__/hoistPlugin.test.ts|4✅|||347ms|
+|packages/diff-sequences/src/__tests__/index.property.test.ts|7✅|||357ms|
+|packages/diff-sequences/src/__tests__/index.test.ts|48✅|||195ms|
+|packages/expect/src/__tests__/assertionCounts.test.ts|6✅|||60ms|
+|packages/expect/src/__tests__/asymmetricMatchers.test.ts|38✅|||207ms|
+|packages/expect/src/__tests__/extend.test.ts|10✅|||99ms|
+|packages/expect/src/__tests__/isError.test.ts|4✅|||43ms|
+|packages/expect/src/__tests__/matchers-toContain.property.test.ts|2✅|||236ms|
+|packages/expect/src/__tests__/matchers-toContainEqual.property.test.ts|2✅|||287ms|
+|packages/expect/src/__tests__/matchers-toEqual.property.test.ts|2✅|||1s|
+|packages/expect/src/__tests__/matchers-toStrictEqual.property.test.ts|3✅|||394ms|
+|packages/expect/src/__tests__/matchers.test.js|592✅|||862ms|
+|packages/expect/src/__tests__/spyMatchers.test.ts|248✅|||395ms|
+|packages/expect/src/__tests__/stacktrace.test.ts|3✅|||69ms|
+|packages/expect/src/__tests__/symbolInObjects.test.ts|3✅|||33ms|
+|packages/expect/src/__tests__/toEqual-dom.test.ts|12✅|||99ms|
+|packages/expect/src/__tests__/toThrowMatchers.test.ts|98✅|||257ms|
+|packages/expect/src/__tests__/utils.test.ts|41✅|||147ms|
+|packages/jest-circus/src/__tests__/afterAll.test.ts|6✅|||6s|
+|packages/jest-circus/src/__tests__/baseTest.test.ts|2✅|||3s|
+|packages/jest-circus/src/__tests__/circusItTestError.test.ts|8✅|||300ms|
+|packages/jest-circus/src/__tests__/circusItTodoTestError.test.ts|3✅|||81ms|
+|packages/jest-circus/src/__tests__/hooks.test.ts|3✅|||4s|
+|packages/jest-circus/src/__tests__/hooksError.test.ts|32✅|||127ms|
+|packages/jest-cli/src/__tests__/cli/args.test.ts|17✅|||345ms|
+|packages/jest-cli/src/init/__tests__/init.test.js|24✅|||119ms|
+|packages/jest-cli/src/init/__tests__/modifyPackageJson.test.ts|4✅|||30ms|
+|packages/jest-config/src/__tests__/Defaults.test.ts|1✅|||672ms|
+|packages/jest-config/src/__tests__/getMaxWorkers.test.ts|7✅|||67ms|
+|packages/jest-config/src/__tests__/normalize.test.js|118✅|||798ms|
+|packages/jest-config/src/__tests__/readConfig.test.ts|1✅|||76ms|
+|packages/jest-config/src/__tests__/readConfigs.test.ts|3✅|||135ms|
+|packages/jest-config/src/__tests__/resolveConfigPath.test.ts|10✅|||183ms|
+|packages/jest-config/src/__tests__/setFromArgv.test.ts|4✅|||53ms|
+|packages/jest-config/src/__tests__/validatePattern.test.ts|4✅|||52ms|
+|packages/jest-console/src/__tests__/bufferedConsole.test.ts|20✅|||171ms|
+|packages/jest-console/src/__tests__/CustomConsole.test.ts|23✅|||115ms|
+|packages/jest-console/src/__tests__/getConsoleOutput.test.ts|12✅|||56ms|
+|packages/jest-core/src/__tests__/FailedTestsCache.test.js|1✅|||25ms|
+|packages/jest-core/src/__tests__/getNoTestsFoundMessage.test.js|5✅|||61ms|
+|packages/jest-core/src/__tests__/globals.test.ts|1✅|||22ms|
+|packages/jest-core/src/__tests__/runJest.test.js|2✅|||261ms|
+|packages/jest-core/src/__tests__/SearchSource.test.ts|27✅|||3s|
+|packages/jest-core/src/__tests__/SnapshotInteractiveMode.test.js|13✅|||89ms|
+|packages/jest-core/src/__tests__/TestScheduler.test.js|8✅|||520ms|
+|packages/jest-core/src/__tests__/testSchedulerHelper.test.js|12✅|||48ms|
+|packages/jest-core/src/__tests__/watch.test.js|80✅|||7s|
+|packages/jest-core/src/__tests__/watchFileChanges.test.ts|1✅|||2s|
+|packages/jest-core/src/__tests__/watchFilenamePatternMode.test.js|2✅|||165ms|
+|packages/jest-core/src/__tests__/watchTestNamePatternMode.test.js|1✅|||246ms|
+|packages/jest-core/src/lib/__tests__/isValidPath.test.ts|3✅|||166ms|
+|packages/jest-core/src/lib/__tests__/logDebugMessages.test.ts|3✅|||48ms|
+|packages/jest-create-cache-key-function/src/__tests__/index.test.ts|1✅|||75ms|
+|packages/jest-diff/src/__tests__/diff.test.ts|107✅|||625ms|
+|packages/jest-diff/src/__tests__/diffStringsRaw.test.ts|2✅|||55ms|
+|packages/jest-diff/src/__tests__/getAlignedDiffs.test.ts|24✅|||72ms|
+|packages/jest-diff/src/__tests__/joinAlignedDiffs.test.ts|6✅|||44ms|
+|packages/jest-docblock/src/__tests__/index.test.ts|36✅|||177ms|
+|packages/jest-each/src/__tests__/array.test.ts|159✅|||192ms|
+|packages/jest-each/src/__tests__/index.test.ts|10✅|||44ms|
+|packages/jest-each/src/__tests__/template.test.ts|242✅|||483ms|
+|packages/jest-environment-jsdom/src/__tests__/jsdom_environment.test.ts|2✅|||783ms|
+|packages/jest-environment-node/src/__tests__/node_environment.test.ts|6✅|||184ms|
+|packages/jest-fake-timers/src/__tests__/legacyFakeTimers.test.ts|50✅|||302ms|
+|packages/jest-fake-timers/src/__tests__/modernFakeTimers.test.ts|40✅|||317ms|
+|packages/jest-get-type/src/__tests__/getType.test.ts|14✅|||45ms|
+|packages/jest-get-type/src/__tests__/isPrimitive.test.ts|18✅|||36ms|
+|packages/jest-globals/src/__tests__/index.ts|1✅|||533ms|
+|packages/jest-haste-map/src/__tests__/get_mock_name.test.js|1✅|||22ms|
+|packages/jest-haste-map/src/__tests__/includes_dotfiles.test.ts|1✅|||337ms|
+|packages/jest-haste-map/src/__tests__/index.test.js|44✅|||1s|
+|packages/jest-haste-map/src/__tests__/worker.test.js|7✅|||100ms|
+|packages/jest-haste-map/src/crawlers/__tests__/node.test.js|10✅|||170ms|
+|packages/jest-haste-map/src/crawlers/__tests__/watchman.test.js|8✅|||153ms|
+|packages/jest-haste-map/src/lib/__tests__/dependencyExtractor.test.js|15✅|||56ms|
+|packages/jest-haste-map/src/lib/__tests__/fast_path.test.js|5✅|||29ms|
+|packages/jest-haste-map/src/lib/__tests__/getPlatformExtension.test.js|1✅|||35ms|
+|packages/jest-haste-map/src/lib/__tests__/isRegExpSupported.test.js|2✅|||31ms|
+|packages/jest-haste-map/src/lib/__tests__/normalizePathSep.test.js|2✅|||35ms|
+|packages/jest-jasmine2/src/__tests__/concurrent.test.ts|3✅|||24ms|
+|packages/jest-jasmine2/src/__tests__/expectationResultFactory.test.ts|7✅|||70ms|
+|packages/jest-jasmine2/src/__tests__/hooksError.test.ts|32✅|||51ms|
+|packages/jest-jasmine2/src/__tests__/iterators.test.ts|4✅|||43ms|
+|packages/jest-jasmine2/src/__tests__/itTestError.test.ts|6✅|||32ms|
+|packages/jest-jasmine2/src/__tests__/itToTestAlias.test.ts|1✅|||23ms|
+|packages/jest-jasmine2/src/__tests__/pTimeout.test.ts|3✅|||44ms|
+|packages/jest-jasmine2/src/__tests__/queueRunner.test.ts|6✅|||93ms|
+|packages/jest-jasmine2/src/__tests__/reporter.test.ts|1✅|||107ms|
+|packages/jest-jasmine2/src/__tests__/Suite.test.ts|1✅|||84ms|
+|packages/jest-jasmine2/src/__tests__/todoError.test.ts|3✅|||27ms|
+|packages/jest-leak-detector/src/__tests__/index.test.ts|6✅|||986ms|
+|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceable.test.ts|11✅|||49ms|
+|packages/jest-matcher-utils/src/__tests__/deepCyclicCopyReplaceableDom.test.ts|2✅|||48ms|
+|packages/jest-matcher-utils/src/__tests__/index.test.ts|48✅|||391ms|
+|packages/jest-matcher-utils/src/__tests__/printDiffOrStringify.test.ts|21✅|||114ms|
+|packages/jest-matcher-utils/src/__tests__/Replaceable.test.ts|17✅|||111ms|
+|packages/jest-message-util/src/__tests__/messages.test.ts|11✅|||205ms|
+|packages/jest-mock/src/__tests__/index.test.ts|84✅|||509ms|
+|packages/jest-regex-util/src/__tests__/index.test.ts|8✅|||56ms|
+|packages/jest-repl/src/__tests__/jest_repl.test.js|1✅|||1s|
+|packages/jest-repl/src/__tests__/runtime_cli.test.js|4✅|||4s|
+|packages/jest-reporters/src/__tests__/CoverageReporter.test.js|12✅|||397ms|
+|packages/jest-reporters/src/__tests__/CoverageWorker.test.js|2✅|||199ms|
+|packages/jest-reporters/src/__tests__/DefaultReporter.test.js|2✅|||148ms|
+|packages/jest-reporters/src/__tests__/generateEmptyCoverage.test.js|3✅|||1s|
+|packages/jest-reporters/src/__tests__/getResultHeader.test.js|4✅|||30ms|
+|packages/jest-reporters/src/__tests__/getSnapshotStatus.test.js|3✅|||28ms|
+|packages/jest-reporters/src/__tests__/getSnapshotSummary.test.js|4✅|||49ms|
+|packages/jest-reporters/src/__tests__/getWatermarks.test.ts|2✅|||37ms|
+|packages/jest-reporters/src/__tests__/NotifyReporter.test.ts|18✅|||166ms|
+|packages/jest-reporters/src/__tests__/SummaryReporter.test.js|4✅|||366ms|
+|packages/jest-reporters/src/__tests__/utils.test.ts|10✅|||85ms|
+|packages/jest-reporters/src/__tests__/VerboseReporter.test.js|11✅|||425ms|
+|packages/jest-resolve-dependencies/src/__tests__/dependency_resolver.test.ts|11✅|||666ms|
+|packages/jest-resolve/src/__tests__/isBuiltinModule.test.ts|4✅|||36ms|
+|packages/jest-resolve/src/__tests__/resolve.test.ts|16✅|||1s|
+|packages/jest-runner/src/__tests__/testRunner.test.ts|2✅|||905ms|
+|packages/jest-runtime/src/__tests__/instrumentation.test.ts|1✅|||275ms|
+|packages/jest-runtime/src/__tests__/runtime_create_mock_from_module.test.js|3✅|||606ms|
+|packages/jest-runtime/src/__tests__/runtime_environment.test.js|2✅|||497ms|
+|packages/jest-runtime/src/__tests__/runtime_internal_module.test.js|4✅|||727ms|
+|packages/jest-runtime/src/__tests__/runtime_jest_fn.js|4✅|||479ms|
+|packages/jest-runtime/src/__tests__/runtime_jest_spy_on.test.js|2✅|||521ms|
+|packages/jest-runtime/src/__tests__/runtime_mock.test.js|4✅|||743ms|
+|packages/jest-runtime/src/__tests__/runtime_module_directories.test.js|4✅|||525ms|
+|packages/jest-runtime/src/__tests__/runtime_node_path.test.js|4✅|||1s|
+|packages/jest-runtime/src/__tests__/runtime_require_actual.test.js|2✅|||478ms|
+|packages/jest-runtime/src/__tests__/runtime_require_cache.test.js|2✅|||454ms|
+|packages/jest-runtime/src/__tests__/runtime_require_mock.test.js|13✅|||962ms|
+|packages/jest-runtime/src/__tests__/runtime_require_module_no_ext.test.js|1✅|||261ms|
+|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock_transitive_deps.test.js|6✅|||2s|
+|packages/jest-runtime/src/__tests__/runtime_require_module_or_mock.test.js|17✅|||1s|
+|packages/jest-runtime/src/__tests__/runtime_require_module.test.js|27✅|||2s|
+|packages/jest-runtime/src/__tests__/runtime_require_resolve.test.ts|5✅|||707ms|
+|packages/jest-runtime/src/__tests__/runtime_wrap.js|2✅|||263ms|
+|packages/jest-runtime/src/__tests__/Runtime-sourceMaps.test.js|1✅|||584ms|
+|packages/jest-runtime/src/__tests__/Runtime-statics.test.js|2✅|||162ms|
+|packages/jest-serializer/src/__tests__/index.test.ts|17✅|||158ms|
+|packages/jest-snapshot/src/__tests__/dedentLines.test.ts|17✅|||94ms|
+|packages/jest-snapshot/src/__tests__/InlineSnapshots.test.ts|22✅|||1s|
+|packages/jest-snapshot/src/__tests__/matcher.test.ts|1✅|||131ms|
+|packages/jest-snapshot/src/__tests__/mockSerializer.test.ts|10✅|||45ms|
+|packages/jest-snapshot/src/__tests__/printSnapshot.test.ts|71✅|||1s|
+|packages/jest-snapshot/src/__tests__/SnapshotResolver.test.ts|10✅|||98ms|
+|packages/jest-snapshot/src/__tests__/throwMatcher.test.ts|3✅|||481ms|
+|packages/jest-snapshot/src/__tests__/utils.test.ts|26✅|||214ms|
+|packages/jest-source-map/src/__tests__/getCallsite.test.ts|3✅|||86ms|
+|packages/jest-test-result/src/__tests__/formatTestResults.test.ts|1✅|||53ms|
+|packages/jest-test-sequencer/src/__tests__/test_sequencer.test.js|8✅|||251ms|
+|packages/jest-transform/src/__tests__/ScriptTransformer.test.ts|22✅|||2s|
+|packages/jest-transform/src/__tests__/shouldInstrument.test.ts|25✅|||155ms|
+|packages/jest-util/src/__tests__/createProcessObject.test.ts|4✅|||81ms|
+|packages/jest-util/src/__tests__/deepCyclicCopy.test.ts|12✅|||86ms|
+|packages/jest-util/src/__tests__/errorWithStack.test.ts|1✅|||41ms|
+|packages/jest-util/src/__tests__/formatTime.test.ts|11✅|||82ms|
+|packages/jest-util/src/__tests__/globsToMatcher.test.ts|4✅|||56ms|
+|packages/jest-util/src/__tests__/installCommonGlobals.test.ts|2✅|||68ms|
+|packages/jest-util/src/__tests__/isInteractive.test.ts|2✅|||35ms|
+|packages/jest-util/src/__tests__/isPromise.test.ts|10✅|||30ms|
+|packages/jest-validate/src/__tests__/validate.test.ts|23✅|||283ms|
+|packages/jest-validate/src/__tests__/validateCLIOptions.test.js|6✅|||83ms|
+|packages/jest-watcher/src/lib/__tests__/formatTestNameByPattern.test.ts|11✅|||129ms|
+|packages/jest-watcher/src/lib/__tests__/prompt.test.ts|3✅|||91ms|
+|packages/jest-watcher/src/lib/__tests__/scroll.test.ts|5✅|||57ms|
+|packages/jest-worker/src/__tests__/Farm.test.js|10✅|||158ms|
+|packages/jest-worker/src/__tests__/FifoQueue.test.js|3✅|||48ms|
+|packages/jest-worker/src/__tests__/index.test.js|8✅|||230ms|
+|packages/jest-worker/src/__tests__/PriorityQueue.test.js|5✅|||63ms|
+|packages/jest-worker/src/__tests__/process-integration.test.js|5✅|||62ms|
+|packages/jest-worker/src/__tests__/thread-integration.test.js|6✅|||114ms|
+|packages/jest-worker/src/__tests__/WorkerPool.test.js|3✅|||51ms|
+|packages/jest-worker/src/base/__tests__/BaseWorkerPool.test.js|11✅|||653ms|
+|packages/jest-worker/src/workers/__tests__/ChildProcessWorker.test.js|17✅|||184ms|
+|packages/jest-worker/src/workers/__tests__/NodeThreadsWorker.test.js|15✅|||258ms|
+|packages/jest-worker/src/workers/__tests__/processChild.test.js|10✅|||135ms|
+|packages/jest-worker/src/workers/__tests__/threadChild.test.js|10✅|||120ms|
+|packages/pretty-format/src/__tests__/AsymmetricMatcher.test.ts|38✅|||137ms|
+|packages/pretty-format/src/__tests__/ConvertAnsi.test.ts|6✅|||43ms|
+|packages/pretty-format/src/__tests__/DOMCollection.test.ts|10✅|||64ms|
+|packages/pretty-format/src/__tests__/DOMElement.test.ts|28✅|||148ms|
+|packages/pretty-format/src/__tests__/Immutable.test.ts|111✅|||443ms|
+|packages/pretty-format/src/__tests__/prettyFormat.test.ts|86✅|||219ms|
+|packages/pretty-format/src/__tests__/react.test.tsx|55✅|||325ms|
+|packages/pretty-format/src/__tests__/ReactElement.test.ts|3✅|||64ms|
### ❌ e2e/__tests__/jestChangedFiles.test.ts
```
-✔️ gets hg SCM roots and dedupes them
-✔️ gets git SCM roots and dedupes them
-✔️ gets mixed git and hg SCM roots and dedupes them
-✔️ gets changed files for git
-✔️ monitors only root paths for git
-✔️ does not find changes in files with no diff, for git
-✔️ handles a bad revision for "changedSince", for git
+✅ gets hg SCM roots and dedupes them
+✅ gets git SCM roots and dedupes them
+✅ gets mixed git and hg SCM roots and dedupes them
+✅ gets changed files for git
+✅ monitors only root paths for git
+✅ does not find changes in files with no diff, for git
+✅ handles a bad revision for "changedSince", for git
❌ gets changed files for hg
Error: abort: empty revision range
-✔️ monitors only root paths for hg
-✔️ handles a bad revision for "changedSince", for hg
+✅ monitors only root paths for hg
+✅ handles a bad revision for "changedSince", for hg
```
### ❌ e2e/__tests__/onlyChanged.test.ts
```
-✔️ run for "onlyChanged" and "changedSince"
-✔️ run only changed files
-✔️ report test coverage for only changed files
-✔️ report test coverage of source on test file change under only changed files
-✔️ do not pickup non-tested files when reporting coverage on only changed files
-✔️ collect test coverage when using onlyChanged
-✔️ onlyChanged in config is overwritten by --all or testPathPattern
+✅ run for "onlyChanged" and "changedSince"
+✅ run only changed files
+✅ report test coverage for only changed files
+✅ report test coverage of source on test file change under only changed files
+✅ do not pickup non-tested files when reporting coverage on only changed files
+✅ collect test coverage when using onlyChanged
+✅ onlyChanged in config is overwritten by --all or testPathPattern
❌ gets changed files for hg
Error: expect(received).toMatch(expected)
-✔️ path on Windows is case-insensitive
+✅ path on Windows is case-insensitive
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/mocha-json.md b/__tests__/__outputs__/mocha-json.md
index 9eadcae..e104bc4 100644
--- a/__tests__/__outputs__/mocha-json.md
+++ b/__tests__/__outputs__/mocha-json.md
@@ -3,12 +3,12 @@
**6** tests were completed in **12ms** with **1** passed, **4** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[test/main.test.js](#r0s0)|1✔️|3❌||1ms|
-|[test/second.test.js](#r0s1)||1❌|1✖️|8ms|
+|[test/main.test.js](#r0s0)|1✅|3❌||1ms|
+|[test/second.test.js](#r0s1)||1❌|1⚪|8ms|
### ❌ test/main.test.js
```
Test 1
- ✔️ Passing test
+ ✅ Passing test
Test 1 Test 1.1
❌ Exception in target unit
Some error
@@ -23,7 +23,7 @@ Test 2
```
### ❌ test/second.test.js
```
-✖️ Skipped test
+⚪ Skipped test
❌ Timeout test
Timeout of 1ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. (C:\Users\Michal\Workspace\dorny\test-reporter\reports\mocha\test\second.test.js)
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/mocha-test-results.md b/__tests__/__outputs__/mocha-test-results.md
index fd85859..a1cb89b 100644
--- a/__tests__/__outputs__/mocha-test-results.md
+++ b/__tests__/__outputs__/mocha-test-results.md
@@ -1,41 +1,41 @@

-## ✔️ fixtures/external/mocha/mocha-test-results.json
+## ✅ fixtures/external/mocha/mocha-test-results.json
**839** tests were completed in **6s** with **833** passed, **0** failed and **6** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|test/node-unit/buffered-worker-pool.spec.js|14✔️|||8ms|
-|test/node-unit/cli/config.spec.js|10✔️|||8ms|
-|test/node-unit/cli/node-flags.spec.js|105✔️|||9ms|
-|test/node-unit/cli/options.spec.js|36✔️|||250ms|
-|test/node-unit/cli/run-helpers.spec.js|9✔️|||8ms|
-|test/node-unit/cli/run.spec.js|40✔️|||4ms|
-|test/node-unit/mocha.spec.js|24✔️|||33ms|
-|test/node-unit/parallel-buffered-runner.spec.js|19✔️|||23ms|
-|test/node-unit/reporters/parallel-buffered.spec.js|6✔️|||16ms|
-|test/node-unit/serializer.spec.js|40✔️|||31ms|
-|test/node-unit/stack-trace-filter.spec.js|2✔️||4✖️|1ms|
-|test/node-unit/utils.spec.js|5✔️|||1ms|
-|test/node-unit/worker.spec.js|15✔️|||92ms|
-|test/unit/context.spec.js|8✔️|||5ms|
-|test/unit/duration.spec.js|3✔️|||166ms|
-|test/unit/errors.spec.js|13✔️|||5ms|
-|test/unit/globals.spec.js|4✔️|||0ms|
-|test/unit/grep.spec.js|8✔️|||2ms|
-|test/unit/hook-async.spec.js|3✔️|||1ms|
-|test/unit/hook-sync-nested.spec.js|4✔️|||1ms|
-|test/unit/hook-sync.spec.js|3✔️|||0ms|
-|test/unit/hook-timeout.spec.js|1✔️|||0ms|
-|test/unit/hook.spec.js|4✔️|||0ms|
-|test/unit/mocha.spec.js|115✔️||1✖️|128ms|
-|test/unit/overspecified-async.spec.js|1✔️|||3ms|
-|test/unit/parse-query.spec.js|2✔️|||1ms|
-|test/unit/plugin-loader.spec.js|41✔️||1✖️|16ms|
-|test/unit/required-tokens.spec.js|1✔️|||0ms|
-|test/unit/root.spec.js|1✔️|||0ms|
-|test/unit/runnable.spec.js|55✔️|||122ms|
-|test/unit/runner.spec.js|77✔️|||43ms|
-|test/unit/suite.spec.js|57✔️|||14ms|
-|test/unit/test.spec.js|15✔️|||0ms|
-|test/unit/throw.spec.js|9✔️|||9ms|
-|test/unit/timeout.spec.js|8✔️|||109ms|
-|test/unit/utils.spec.js|75✔️|||24ms|
\ No newline at end of file
+|test/node-unit/buffered-worker-pool.spec.js|14✅|||8ms|
+|test/node-unit/cli/config.spec.js|10✅|||8ms|
+|test/node-unit/cli/node-flags.spec.js|105✅|||9ms|
+|test/node-unit/cli/options.spec.js|36✅|||250ms|
+|test/node-unit/cli/run-helpers.spec.js|9✅|||8ms|
+|test/node-unit/cli/run.spec.js|40✅|||4ms|
+|test/node-unit/mocha.spec.js|24✅|||33ms|
+|test/node-unit/parallel-buffered-runner.spec.js|19✅|||23ms|
+|test/node-unit/reporters/parallel-buffered.spec.js|6✅|||16ms|
+|test/node-unit/serializer.spec.js|40✅|||31ms|
+|test/node-unit/stack-trace-filter.spec.js|2✅||4⚪|1ms|
+|test/node-unit/utils.spec.js|5✅|||1ms|
+|test/node-unit/worker.spec.js|15✅|||92ms|
+|test/unit/context.spec.js|8✅|||5ms|
+|test/unit/duration.spec.js|3✅|||166ms|
+|test/unit/errors.spec.js|13✅|||5ms|
+|test/unit/globals.spec.js|4✅|||0ms|
+|test/unit/grep.spec.js|8✅|||2ms|
+|test/unit/hook-async.spec.js|3✅|||1ms|
+|test/unit/hook-sync-nested.spec.js|4✅|||1ms|
+|test/unit/hook-sync.spec.js|3✅|||0ms|
+|test/unit/hook-timeout.spec.js|1✅|||0ms|
+|test/unit/hook.spec.js|4✅|||0ms|
+|test/unit/mocha.spec.js|115✅||1⚪|128ms|
+|test/unit/overspecified-async.spec.js|1✅|||3ms|
+|test/unit/parse-query.spec.js|2✅|||1ms|
+|test/unit/plugin-loader.spec.js|41✅||1⚪|16ms|
+|test/unit/required-tokens.spec.js|1✅|||0ms|
+|test/unit/root.spec.js|1✅|||0ms|
+|test/unit/runnable.spec.js|55✅|||122ms|
+|test/unit/runner.spec.js|77✅|||43ms|
+|test/unit/suite.spec.js|57✅|||14ms|
+|test/unit/test.spec.js|15✅|||0ms|
+|test/unit/throw.spec.js|9✅|||9ms|
+|test/unit/timeout.spec.js|8✅|||109ms|
+|test/unit/utils.spec.js|75✅|||24ms|
\ No newline at end of file
diff --git a/__tests__/__outputs__/provider-test-results.md b/__tests__/__outputs__/provider-test-results.md
index 79b13aa..2cfa0ba 100644
--- a/__tests__/__outputs__/provider-test-results.md
+++ b/__tests__/__outputs__/provider-test-results.md
@@ -3,368 +3,368 @@
**269** tests were completed in **0ms** with **268** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[test/builder_test.dart](#r0s0)|24✔️|||402ms|
-|[test/change_notifier_provider_test.dart](#r0s1)|10✔️|||306ms|
-|[test/consumer_test.dart](#r0s2)|18✔️|||340ms|
-|[test/context_test.dart](#r0s3)|31✔️|||698ms|
-|[test/future_provider_test.dart](#r0s4)|10✔️|||305ms|
-|[test/inherited_provider_test.dart](#r0s5)|81✔️|||1s|
-|[test/listenable_provider_test.dart](#r0s6)|16✔️|||353ms|
-|[test/listenable_proxy_provider_test.dart](#r0s7)|12✔️|||373ms|
-|[test/multi_provider_test.dart](#r0s8)|3✔️|||198ms|
-|[test/provider_test.dart](#r0s9)|11✔️|||306ms|
-|[test/proxy_provider_test.dart](#r0s10)|16✔️|||438ms|
-|[test/reassemble_test.dart](#r0s11)|3✔️|||221ms|
-|[test/selector_test.dart](#r0s12)|17✔️|||364ms|
-|[test/stateful_provider_test.dart](#r0s13)|4✔️|||254ms|
-|[test/stream_provider_test.dart](#r0s14)|8✔️|||282ms|
-|[test/value_listenable_provider_test.dart](#r0s15)|4✔️|1❌||327ms|
-### ✔️ test/builder_test.dart
+|[test/builder_test.dart](#r0s0)|24✅|||402ms|
+|[test/change_notifier_provider_test.dart](#r0s1)|10✅|||306ms|
+|[test/consumer_test.dart](#r0s2)|18✅|||340ms|
+|[test/context_test.dart](#r0s3)|31✅|||698ms|
+|[test/future_provider_test.dart](#r0s4)|10✅|||305ms|
+|[test/inherited_provider_test.dart](#r0s5)|81✅|||1s|
+|[test/listenable_provider_test.dart](#r0s6)|16✅|||353ms|
+|[test/listenable_proxy_provider_test.dart](#r0s7)|12✅|||373ms|
+|[test/multi_provider_test.dart](#r0s8)|3✅|||198ms|
+|[test/provider_test.dart](#r0s9)|11✅|||306ms|
+|[test/proxy_provider_test.dart](#r0s10)|16✅|||438ms|
+|[test/reassemble_test.dart](#r0s11)|3✅|||221ms|
+|[test/selector_test.dart](#r0s12)|17✅|||364ms|
+|[test/stateful_provider_test.dart](#r0s13)|4✅|||254ms|
+|[test/stream_provider_test.dart](#r0s14)|8✅|||282ms|
+|[test/value_listenable_provider_test.dart](#r0s15)|4✅|1❌||327ms|
+### ✅ test/builder_test.dart
```
ChangeNotifierProvider
- ✔️ default
- ✔️ .value
+ ✅ default
+ ✅ .value
ListenableProvider
- ✔️ default
- ✔️ .value
+ ✅ default
+ ✅ .value
Provider
- ✔️ default
- ✔️ .value
+ ✅ default
+ ✅ .value
ProxyProvider
- ✔️ 0
- ✔️ 1
- ✔️ 2
- ✔️ 3
- ✔️ 4
- ✔️ 5
- ✔️ 6
+ ✅ 0
+ ✅ 1
+ ✅ 2
+ ✅ 3
+ ✅ 4
+ ✅ 5
+ ✅ 6
MultiProvider
- ✔️ with 1 ChangeNotifierProvider default
- ✔️ with 2 ChangeNotifierProvider default
- ✔️ with ListenableProvider default
- ✔️ with Provider default
- ✔️ with ProxyProvider0
- ✔️ with ProxyProvider1
- ✔️ with ProxyProvider2
- ✔️ with ProxyProvider3
- ✔️ with ProxyProvider4
- ✔️ with ProxyProvider5
- ✔️ with ProxyProvider6
+ ✅ with 1 ChangeNotifierProvider default
+ ✅ with 2 ChangeNotifierProvider default
+ ✅ with ListenableProvider default
+ ✅ with Provider default
+ ✅ with ProxyProvider0
+ ✅ with ProxyProvider1
+ ✅ with ProxyProvider2
+ ✅ with ProxyProvider3
+ ✅ with ProxyProvider4
+ ✅ with ProxyProvider5
+ ✅ with ProxyProvider6
```
-### ✔️ test/change_notifier_provider_test.dart
+### ✅ test/change_notifier_provider_test.dart
```
-✔️ Use builder property, not child
+✅ Use builder property, not child
ChangeNotifierProvider
- ✔️ value
- ✔️ builder
- ✔️ builder1
- ✔️ builder2
- ✔️ builder3
- ✔️ builder4
- ✔️ builder5
- ✔️ builder6
- ✔️ builder0
+ ✅ value
+ ✅ builder
+ ✅ builder1
+ ✅ builder2
+ ✅ builder3
+ ✅ builder4
+ ✅ builder5
+ ✅ builder6
+ ✅ builder0
```
-### ✔️ test/consumer_test.dart
+### ✅ test/consumer_test.dart
```
consumer
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
consumer2
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
consumer3
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
consumer4
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
consumer5
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
consumer6
- ✔️ obtains value from Provider
- ✔️ crashed with no builder
- ✔️ can be used inside MultiProvider
+ ✅ obtains value from Provider
+ ✅ crashed with no builder
+ ✅ can be used inside MultiProvider
```
-### ✔️ test/context_test.dart
+### ✅ test/context_test.dart
```
-✔️ watch in layoutbuilder
-✔️ select in layoutbuilder
-✔️ cannot select in listView
-✔️ watch in listView
-✔️ watch in gridView
-✔️ clears select dependencies for all dependents
+✅ watch in layoutbuilder
+✅ select in layoutbuilder
+✅ cannot select in listView
+✅ watch in listView
+✅ watch in gridView
+✅ clears select dependencies for all dependents
BuildContext
- ✔️ internal selected value is updated
- ✔️ create can use read without being lazy
- ✔️ watch can be used inside InheritedProvider.update
- ✔️ select doesn't fail if it loads a provider that depends on other providers
- ✔️ don't call old selectors if the child rebuilds individually
- ✔️ selects throws inside click handlers
- ✔️ select throws if try to read dynamic
- ✔️ select throws ProviderNotFoundException
- ✔️ select throws if watch called inside the callback from build
- ✔️ select throws if read called inside the callback from build
- ✔️ select throws if select called inside the callback from build
- ✔️ select throws if read called inside the callback on dependency change
- ✔️ select throws if watch called inside the callback on dependency change
- ✔️ select throws if select called inside the callback on dependency change
- ✔️ can call read inside didChangeDependencies
- ✔️ select cannot be called inside didChangeDependencies
- ✔️ select in initState throws
- ✔️ watch in initState throws
- ✔️ read in initState works
- ✔️ consumer can be removed and selector stops to be called
- ✔️ context.select deeply compares maps
- ✔️ context.select deeply compares lists
- ✔️ context.select deeply compares iterables
- ✔️ context.select deeply compares sets
- ✔️ context.watch listens to value changes
+ ✅ internal selected value is updated
+ ✅ create can use read without being lazy
+ ✅ watch can be used inside InheritedProvider.update
+ ✅ select doesn't fail if it loads a provider that depends on other providers
+ ✅ don't call old selectors if the child rebuilds individually
+ ✅ selects throws inside click handlers
+ ✅ select throws if try to read dynamic
+ ✅ select throws ProviderNotFoundException
+ ✅ select throws if watch called inside the callback from build
+ ✅ select throws if read called inside the callback from build
+ ✅ select throws if select called inside the callback from build
+ ✅ select throws if read called inside the callback on dependency change
+ ✅ select throws if watch called inside the callback on dependency change
+ ✅ select throws if select called inside the callback on dependency change
+ ✅ can call read inside didChangeDependencies
+ ✅ select cannot be called inside didChangeDependencies
+ ✅ select in initState throws
+ ✅ watch in initState throws
+ ✅ read in initState works
+ ✅ consumer can be removed and selector stops to be called
+ ✅ context.select deeply compares maps
+ ✅ context.select deeply compares lists
+ ✅ context.select deeply compares iterables
+ ✅ context.select deeply compares sets
+ ✅ context.watch listens to value changes
```
-### ✔️ test/future_provider_test.dart
+### ✅ test/future_provider_test.dart
```
-✔️ works with MultiProvider
-✔️ (catchError) previous future completes after transition is no-op
-✔️ previous future completes after transition is no-op
-✔️ transition from future to future preserve state
-✔️ throws if future has error and catchError is missing
-✔️ calls catchError if present and future has error
-✔️ works with null
-✔️ create and dispose future with builder
-✔️ FutureProvider() crashes if builder is null
+✅ works with MultiProvider
+✅ (catchError) previous future completes after transition is no-op
+✅ previous future completes after transition is no-op
+✅ transition from future to future preserve state
+✅ throws if future has error and catchError is missing
+✅ calls catchError if present and future has error
+✅ works with null
+✅ create and dispose future with builder
+✅ FutureProvider() crashes if builder is null
FutureProvider()
- ✔️ crashes if builder is null
+ ✅ crashes if builder is null
```
-### ✔️ test/inherited_provider_test.dart
+### ✅ test/inherited_provider_test.dart
```
-✔️ regression test #377
-✔️ rebuild on dependency flags update
-✔️ properly update debug flags if a create triggers another deferred create
-✔️ properly update debug flags if a create triggers another deferred create
-✔️ properly update debug flags if an update triggers another create/update
-✔️ properly update debug flags if a create triggers another create/update
-✔️ Provider.of(listen: false) outside of build works when it loads a provider
-✔️ new value is available in didChangeDependencies
-✔️ builder receives the current value and updates independently from `update`
-✔️ builder can _not_ rebuild when provider updates
-✔️ builder rebuilds if provider is recreated
-✔️ provider.of throws if listen:true outside of the widget tree
-✔️ InheritedProvider throws if no child is provided with default constructor
-✔️ InheritedProvider throws if no child is provided with value constructor
-✔️ DeferredInheritedProvider throws if no child is provided with default constructor
-✔️ DeferredInheritedProvider throws if no child is provided with value constructor
-✔️ startListening markNeedsNotifyDependents
-✔️ InheritedProvider can be subclassed
-✔️ DeferredInheritedProvider can be subclassed
-✔️ can be used with MultiProvider
-✔️ throw if the widget ctor changes
-✔️ InheritedProvider lazy loading can be disabled
-✔️ InheritedProvider.value lazy loading can be disabled
-✔️ InheritedProvider subclass don't have to specify default lazy value
-✔️ DeferredInheritedProvider lazy loading can be disabled
-✔️ DeferredInheritedProvider.value lazy loading can be disabled
-✔️ selector
-✔️ can select multiple types from same provider
-✔️ can select same type on two different providers
-✔️ can select same type twice on same provider
-✔️ Provider.of has a proper error message if context is null
+✅ regression test #377
+✅ rebuild on dependency flags update
+✅ properly update debug flags if a create triggers another deferred create
+✅ properly update debug flags if a create triggers another deferred create
+✅ properly update debug flags if an update triggers another create/update
+✅ properly update debug flags if a create triggers another create/update
+✅ Provider.of(listen: false) outside of build works when it loads a provider
+✅ new value is available in didChangeDependencies
+✅ builder receives the current value and updates independently from `update`
+✅ builder can _not_ rebuild when provider updates
+✅ builder rebuilds if provider is recreated
+✅ provider.of throws if listen:true outside of the widget tree
+✅ InheritedProvider throws if no child is provided with default constructor
+✅ InheritedProvider throws if no child is provided with value constructor
+✅ DeferredInheritedProvider throws if no child is provided with default constructor
+✅ DeferredInheritedProvider throws if no child is provided with value constructor
+✅ startListening markNeedsNotifyDependents
+✅ InheritedProvider can be subclassed
+✅ DeferredInheritedProvider can be subclassed
+✅ can be used with MultiProvider
+✅ throw if the widget ctor changes
+✅ InheritedProvider lazy loading can be disabled
+✅ InheritedProvider.value lazy loading can be disabled
+✅ InheritedProvider subclass don't have to specify default lazy value
+✅ DeferredInheritedProvider lazy loading can be disabled
+✅ DeferredInheritedProvider.value lazy loading can be disabled
+✅ selector
+✅ can select multiple types from same provider
+✅ can select same type on two different providers
+✅ can select same type twice on same provider
+✅ Provider.of has a proper error message if context is null
diagnostics
- ✔️ InheritedProvider.value
- ✔️ InheritedProvider doesn't break lazy loading
- ✔️ InheritedProvider show if listening
- ✔️ DeferredInheritedProvider.value
- ✔️ DeferredInheritedProvider
+ ✅ InheritedProvider.value
+ ✅ InheritedProvider doesn't break lazy loading
+ ✅ InheritedProvider show if listening
+ ✅ DeferredInheritedProvider.value
+ ✅ DeferredInheritedProvider
InheritedProvider.value()
- ✔️ markNeedsNotifyDependents during startListening is noop
- ✔️ startListening called again when create returns new value
- ✔️ startListening
- ✔️ stopListening not called twice if rebuild doesn't have listeners
- ✔️ removeListener cannot be null
- ✔️ pass down current value
- ✔️ default updateShouldNotify
- ✔️ custom updateShouldNotify
+ ✅ markNeedsNotifyDependents during startListening is noop
+ ✅ startListening called again when create returns new value
+ ✅ startListening
+ ✅ stopListening not called twice if rebuild doesn't have listeners
+ ✅ removeListener cannot be null
+ ✅ pass down current value
+ ✅ default updateShouldNotify
+ ✅ custom updateShouldNotify
InheritedProvider()
- ✔️ hasValue
- ✔️ provider calls update if rebuilding only due to didChangeDependencies
- ✔️ provider notifying dependents doesn't call update
- ✔️ update can call Provider.of with listen:true
- ✔️ update lazy loaded can call Provider.of with listen:true
- ✔️ markNeedsNotifyDependents during startListening is noop
- ✔️ update can obtain parent of the same type than self
- ✔️ _debugCheckInvalidValueType
- ✔️ startListening
- ✔️ startListening called again when create returns new value
- ✔️ stopListening not called twice if rebuild doesn't have listeners
- ✔️ removeListener cannot be null
- ✔️ fails if initialValueBuilder calls inheritFromElement/inheritFromWiggetOfExactType
- ✔️ builder is called on every rebuild and after a dependency change
- ✔️ builder with no updateShouldNotify use ==
- ✔️ builder calls updateShouldNotify callback
- ✔️ initialValue is transmitted to valueBuilder
- ✔️ calls builder again if dependencies change
- ✔️ exposes initialValue if valueBuilder is null
- ✔️ call dispose on unmount
- ✔️ builder unmount, dispose not called if value never read
- ✔️ call dispose after new value
- ✔️ valueBuilder works without initialBuilder
- ✔️ calls initialValueBuilder lazily once
- ✔️ throws if both builder and initialBuilder are missing
+ ✅ hasValue
+ ✅ provider calls update if rebuilding only due to didChangeDependencies
+ ✅ provider notifying dependents doesn't call update
+ ✅ update can call Provider.of with listen:true
+ ✅ update lazy loaded can call Provider.of with listen:true
+ ✅ markNeedsNotifyDependents during startListening is noop
+ ✅ update can obtain parent of the same type than self
+ ✅ _debugCheckInvalidValueType
+ ✅ startListening
+ ✅ startListening called again when create returns new value
+ ✅ stopListening not called twice if rebuild doesn't have listeners
+ ✅ removeListener cannot be null
+ ✅ fails if initialValueBuilder calls inheritFromElement/inheritFromWiggetOfExactType
+ ✅ builder is called on every rebuild and after a dependency change
+ ✅ builder with no updateShouldNotify use ==
+ ✅ builder calls updateShouldNotify callback
+ ✅ initialValue is transmitted to valueBuilder
+ ✅ calls builder again if dependencies change
+ ✅ exposes initialValue if valueBuilder is null
+ ✅ call dispose on unmount
+ ✅ builder unmount, dispose not called if value never read
+ ✅ call dispose after new value
+ ✅ valueBuilder works without initialBuilder
+ ✅ calls initialValueBuilder lazily once
+ ✅ throws if both builder and initialBuilder are missing
DeferredInheritedProvider.value()
- ✔️ hasValue
- ✔️ startListening
- ✔️ stopListening cannot be null
- ✔️ startListening doesn't need setState if already initialized
- ✔️ setState without updateShouldNotify
- ✔️ setState with updateShouldNotify
- ✔️ startListening never leave the widget uninitialized
- ✔️ startListening called again on controller change
+ ✅ hasValue
+ ✅ startListening
+ ✅ stopListening cannot be null
+ ✅ startListening doesn't need setState if already initialized
+ ✅ setState without updateShouldNotify
+ ✅ setState with updateShouldNotify
+ ✅ startListening never leave the widget uninitialized
+ ✅ startListening called again on controller change
DeferredInheritedProvider()
- ✔️ create can't call inherited widgets
- ✔️ creates the value lazily
- ✔️ dispose
- ✔️ dispose no-op if never built
+ ✅ create can't call inherited widgets
+ ✅ creates the value lazily
+ ✅ dispose
+ ✅ dispose no-op if never built
```
-### ✔️ test/listenable_provider_test.dart
+### ✅ test/listenable_provider_test.dart
```
ListenableProvider
- ✔️ works with MultiProvider
- ✔️ asserts that the created notifier can have listeners
- ✔️ don't listen again if listenable instance doesn't change
- ✔️ works with null (default)
- ✔️ works with null (create)
- ✔️ stateful create called once
- ✔️ dispose called on unmount
- ✔️ dispose can be null
- ✔️ changing listenable rebuilds descendants
- ✔️ rebuilding with the same provider don't rebuilds descendants
- ✔️ notifylistener rebuilds descendants
+ ✅ works with MultiProvider
+ ✅ asserts that the created notifier can have listeners
+ ✅ don't listen again if listenable instance doesn't change
+ ✅ works with null (default)
+ ✅ works with null (create)
+ ✅ stateful create called once
+ ✅ dispose called on unmount
+ ✅ dispose can be null
+ ✅ changing listenable rebuilds descendants
+ ✅ rebuilding with the same provider don't rebuilds descendants
+ ✅ notifylistener rebuilds descendants
ListenableProvider value constructor
- ✔️ pass down key
- ✔️ changing the Listenable instance rebuilds dependents
+ ✅ pass down key
+ ✅ changing the Listenable instance rebuilds dependents
ListenableProvider stateful constructor
- ✔️ called with context
- ✔️ pass down key
- ✔️ throws if create is null
+ ✅ called with context
+ ✅ pass down key
+ ✅ throws if create is null
```
-### ✔️ test/listenable_proxy_provider_test.dart
+### ✅ test/listenable_proxy_provider_test.dart
```
ListenableProxyProvider
- ✔️ throws if update is missing
- ✔️ asserts that the created notifier has no listener
- ✔️ asserts that the created notifier has no listener after rebuild
- ✔️ rebuilds dependendents when listeners are called
- ✔️ update returning a new Listenable disposes the previously created value and update dependents
- ✔️ disposes of created value
+ ✅ throws if update is missing
+ ✅ asserts that the created notifier has no listener
+ ✅ asserts that the created notifier has no listener after rebuild
+ ✅ rebuilds dependendents when listeners are called
+ ✅ update returning a new Listenable disposes the previously created value and update dependents
+ ✅ disposes of created value
ListenableProxyProvider variants
- ✔️ ListenableProxyProvider
- ✔️ ListenableProxyProvider2
- ✔️ ListenableProxyProvider3
- ✔️ ListenableProxyProvider4
- ✔️ ListenableProxyProvider5
- ✔️ ListenableProxyProvider6
+ ✅ ListenableProxyProvider
+ ✅ ListenableProxyProvider2
+ ✅ ListenableProxyProvider3
+ ✅ ListenableProxyProvider4
+ ✅ ListenableProxyProvider5
+ ✅ ListenableProxyProvider6
```
-### ✔️ test/multi_provider_test.dart
+### ✅ test/multi_provider_test.dart
```
MultiProvider
- ✔️ throw if providers is null
- ✔️ MultiProvider children can only access parent providers
- ✔️ MultiProvider.providers with ignored child
+ ✅ throw if providers is null
+ ✅ MultiProvider children can only access parent providers
+ ✅ MultiProvider.providers with ignored child
```
-### ✔️ test/provider_test.dart
+### ✅ test/provider_test.dart
```
-✔️ works with MultiProvider
+✅ works with MultiProvider
Provider.of
- ✔️ throws if T is dynamic
- ✔️ listen defaults to true when building widgets
- ✔️ listen defaults to false outside of the widget tree
- ✔️ listen:false doesn't trigger rebuild
- ✔️ listen:true outside of the widget tree throws
+ ✅ throws if T is dynamic
+ ✅ listen defaults to true when building widgets
+ ✅ listen defaults to false outside of the widget tree
+ ✅ listen:false doesn't trigger rebuild
+ ✅ listen:true outside of the widget tree throws
Provider
- ✔️ throws if the provided value is a Listenable/Stream
- ✔️ debugCheckInvalidValueType can be disabled
- ✔️ simple usage
- ✔️ throws an error if no provider found
- ✔️ update should notify
+ ✅ throws if the provided value is a Listenable/Stream
+ ✅ debugCheckInvalidValueType can be disabled
+ ✅ simple usage
+ ✅ throws an error if no provider found
+ ✅ update should notify
```
-### ✔️ test/proxy_provider_test.dart
+### ✅ test/proxy_provider_test.dart
```
ProxyProvider
- ✔️ throws if the provided value is a Listenable/Stream
- ✔️ debugCheckInvalidValueType can be disabled
- ✔️ create creates initial value
- ✔️ consume another providers
- ✔️ rebuild descendants if value change
- ✔️ call dispose when unmounted with the latest result
- ✔️ don't rebuild descendants if value doesn't change
- ✔️ pass down updateShouldNotify
- ✔️ works with MultiProvider
- ✔️ update callback can trigger descendants setState synchronously
- ✔️ throws if update is null
+ ✅ throws if the provided value is a Listenable/Stream
+ ✅ debugCheckInvalidValueType can be disabled
+ ✅ create creates initial value
+ ✅ consume another providers
+ ✅ rebuild descendants if value change
+ ✅ call dispose when unmounted with the latest result
+ ✅ don't rebuild descendants if value doesn't change
+ ✅ pass down updateShouldNotify
+ ✅ works with MultiProvider
+ ✅ update callback can trigger descendants setState synchronously
+ ✅ throws if update is null
ProxyProvider variants
- ✔️ ProxyProvider2
- ✔️ ProxyProvider3
- ✔️ ProxyProvider4
- ✔️ ProxyProvider5
- ✔️ ProxyProvider6
+ ✅ ProxyProvider2
+ ✅ ProxyProvider3
+ ✅ ProxyProvider4
+ ✅ ProxyProvider5
+ ✅ ProxyProvider6
```
-### ✔️ test/reassemble_test.dart
+### ✅ test/reassemble_test.dart
```
-✔️ ReassembleHandler
-✔️ unevaluated create
-✔️ unevaluated create
+✅ ReassembleHandler
+✅ unevaluated create
+✅ unevaluated create
```
-### ✔️ test/selector_test.dart
+### ✅ test/selector_test.dart
```
-✔️ asserts that builder/selector are not null
-✔️ Deep compare maps by default
-✔️ Deep compare iterables by default
-✔️ Deep compare sets by default
-✔️ Deep compare lists by default
-✔️ custom shouldRebuid
-✔️ passes `child` and `key`
-✔️ calls builder if the callback changes
-✔️ works with MultiProvider
-✔️ don't call builder again if it rebuilds but selector returns the same thing
-✔️ call builder again if it rebuilds abd selector returns the a different variable
-✔️ Selector
-✔️ Selector2
-✔️ Selector3
-✔️ Selector4
-✔️ Selector5
-✔️ Selector6
+✅ asserts that builder/selector are not null
+✅ Deep compare maps by default
+✅ Deep compare iterables by default
+✅ Deep compare sets by default
+✅ Deep compare lists by default
+✅ custom shouldRebuid
+✅ passes `child` and `key`
+✅ calls builder if the callback changes
+✅ works with MultiProvider
+✅ don't call builder again if it rebuilds but selector returns the same thing
+✅ call builder again if it rebuilds abd selector returns the a different variable
+✅ Selector
+✅ Selector2
+✅ Selector3
+✅ Selector4
+✅ Selector5
+✅ Selector6
```
-### ✔️ test/stateful_provider_test.dart
+### ✅ test/stateful_provider_test.dart
```
-✔️ asserts
-✔️ works with MultiProvider
-✔️ calls create only once
-✔️ dispose
+✅ asserts
+✅ works with MultiProvider
+✅ calls create only once
+✅ dispose
```
-### ✔️ test/stream_provider_test.dart
+### ✅ test/stream_provider_test.dart
```
-✔️ works with MultiProvider
-✔️ transition from stream to stream preserve state
-✔️ throws if stream has error and catchError is missing
-✔️ calls catchError if present and stream has error
-✔️ works with null
-✔️ StreamProvider() crashes if builder is null
+✅ works with MultiProvider
+✅ transition from stream to stream preserve state
+✅ throws if stream has error and catchError is missing
+✅ calls catchError if present and stream has error
+✅ works with null
+✅ StreamProvider() crashes if builder is null
StreamProvider()
- ✔️ create and dispose stream with builder
- ✔️ crashes if builder is null
+ ✅ create and dispose stream with builder
+ ✅ crashes if builder is null
```
### ❌ test/value_listenable_provider_test.dart
```
valueListenableProvider
- ✔️ rebuilds when value change
- ✔️ don't rebuild dependents by default
- ✔️ pass keys
- ✔️ don't listen again if stream instance doesn't change
+ ✅ rebuilds when value change
+ ✅ don't rebuild dependents by default
+ ✅ pass keys
+ ✅ don't listen again if stream instance doesn't change
❌ pass updateShouldNotify
The following TestFailure object was thrown running a test:
Expected: <2>
diff --git a/__tests__/__outputs__/pulsar-test-results-no-merge.md b/__tests__/__outputs__/pulsar-test-results-no-merge.md
index dbf7601..cc873e0 100644
--- a/__tests__/__outputs__/pulsar-test-results-no-merge.md
+++ b/__tests__/__outputs__/pulsar-test-results-no-merge.md
@@ -3,10 +3,10 @@
**2** tests were completed in **116ms** with **0** passed, **1** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[org.apache.pulsar.AddMissingPatchVersionTest](#r0s0)||1❌|1✖️|116ms|
+|[org.apache.pulsar.AddMissingPatchVersionTest](#r0s0)||1❌|1⚪|116ms|
### ❌ org.apache.pulsar.AddMissingPatchVersionTest
```
-✖️ testVersionStrings
+⚪ testVersionStrings
❌ testVersionStrings
java.lang.AssertionError: expected [1.2.1] but found [1.2.0]
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/pulsar-test-results.md b/__tests__/__outputs__/pulsar-test-results.md
index 88e8bea..058f71b 100644
--- a/__tests__/__outputs__/pulsar-test-results.md
+++ b/__tests__/__outputs__/pulsar-test-results.md
@@ -3,1516 +3,1516 @@
**808** tests were completed in **2127s** with **793** passed, **1** failed and **14** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[org.apache.pulsar.AddMissingPatchVersionTest](#r0s0)||1❌|1✖️|116ms|
-|[org.apache.pulsar.broker.admin.AdminApiOffloadTest](#r0s1)|7✔️|||19s|
-|[org.apache.pulsar.broker.auth.AuthenticationServiceTest](#r0s2)|2✔️|||185ms|
-|[org.apache.pulsar.broker.auth.AuthLogsTest](#r0s3)|2✔️|||1s|
-|[org.apache.pulsar.broker.auth.AuthorizationTest](#r0s4)|1✔️|||2s|
-|[org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test](#r0s5)|4✔️|||2s|
-|[org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest](#r0s6)|2✔️|||33s|
-|[org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests](#r0s7)|2✔️|||32s|
-|[org.apache.pulsar.broker.namespace.NamespaceServiceTest](#r0s8)|10✔️|||75s|
-|[org.apache.pulsar.broker.namespace.NamespaceUnloadingTest](#r0s9)|2✔️|||14s|
-|[org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest](#r0s10)|1✔️|||16s|
-|[org.apache.pulsar.broker.namespace.OwnershipCacheTest](#r0s11)|8✔️|||16s|
-|[org.apache.pulsar.broker.protocol.ProtocolHandlersTest](#r0s12)|6✔️|||946ms|
-|[org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest](#r0s13)|3✔️|||7s|
-|[org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest](#r0s14)|1✔️|||15ms|
-|[org.apache.pulsar.broker.PulsarServiceTest](#r0s15)|2✔️|||96ms|
-|[org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest](#r0s16)|3✔️|||14s|
-|[org.apache.pulsar.broker.service.ReplicatorTest](#r0s17)|22✔️|||40s|
-|[org.apache.pulsar.broker.service.TopicOwnerTest](#r0s18)|8✔️|||114s|
-|[org.apache.pulsar.broker.SLAMonitoringTest](#r0s19)|4✔️|||9s|
-|[org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest](#r0s20)|2✔️|||49ms|
-|[org.apache.pulsar.broker.stats.ConsumerStatsTest](#r0s21)|3✔️|||21s|
-|[org.apache.pulsar.broker.stats.ManagedCursorMetricsTest](#r0s22)|1✔️|||281ms|
-|[org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest](#r0s23)|1✔️|||285ms|
-|[org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest](#r0s24)|1✔️|||40ms|
-|[org.apache.pulsar.broker.stats.PrometheusMetricsTest](#r0s25)|15✔️|||83s|
-|[org.apache.pulsar.broker.stats.SubscriptionStatsTest](#r0s26)|2✔️|||2s|
-|[org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest](#r0s27)|1✔️|||1s|
-|[org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest](#r0s28)|3✔️|||28ms|
-|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest](#r0s29)|4✔️|||93ms|
-|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest](#r0s30)|7✔️|||81ms|
-|[org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest](#r0s31)|1✔️|||14ms|
-|[org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest](#r0s32)|2✔️|||38s|
-|[org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest](#r0s33)|2✔️||1✖️|49s|
-|[org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest](#r0s34)|3✔️|||95ms|
-|[org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest](#r0s35)|1✔️|||1s|
-|[org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest](#r0s36)|2✔️||1✖️|57s|
-|[org.apache.pulsar.broker.transaction.TransactionConsumeTest](#r0s37)|2✔️|||30s|
-|[org.apache.pulsar.broker.web.RestExceptionTest](#r0s38)|3✔️|||37ms|
-|[org.apache.pulsar.broker.web.WebServiceTest](#r0s39)|9✔️|||27s|
-|[org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest](#r0s40)|4✔️|||8s|
-|[org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest](#r0s41)|4✔️|||30ms|
-|[org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest](#r0s42)|4✔️|||14s|
-|[org.apache.pulsar.client.impl.BatchMessageIndexAckTest](#r0s43)|5✔️|||44s|
-|[org.apache.pulsar.client.impl.BrokerClientIntegrationTest](#r0s44)|15✔️|||148s|
-|[org.apache.pulsar.client.impl.CompactedOutBatchMessageTest](#r0s45)|1✔️|||1s|
-|[org.apache.pulsar.client.impl.ConsumerAckResponseTest](#r0s46)|1✔️|||549ms|
-|[org.apache.pulsar.client.impl.ConsumerConfigurationTest](#r0s47)|4✔️|||12s|
-|[org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate](#r0s48)|7✔️|||4s|
-|[org.apache.pulsar.client.impl.ConsumerUnsubscribeTest](#r0s49)|1✔️|||129ms|
-|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth](#r0s50)|3✔️|||23s|
-|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth](#r0s51)|3✔️|||8s|
-|[org.apache.pulsar.client.impl.KeyStoreTlsTest](#r0s52)|1✔️|||183ms|
-|[org.apache.pulsar.client.impl.MessageChecksumTest](#r0s53)|3✔️|||47s|
-|[org.apache.pulsar.client.impl.MessageChunkingTest](#r0s54)|8✔️||1✖️|73s|
-|[org.apache.pulsar.client.impl.MessageParserTest](#r0s55)|2✔️|||5s|
-|[org.apache.pulsar.client.impl.MultiTopicsReaderTest](#r0s56)|8✔️|||35s|
-|[org.apache.pulsar.client.impl.NegativeAcksTest](#r0s57)|32✔️|||11s|
-|[org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest](#r0s58)|11✔️|||63s|
-|[org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest](#r0s59)|5✔️|||34s|
-|[org.apache.pulsar.client.impl.PulsarMultiHostClientTest](#r0s60)|3✔️|||15s|
-|[org.apache.pulsar.client.impl.RawMessageSerDeserTest](#r0s61)|1✔️|||10ms|
-|[org.apache.pulsar.client.impl.SchemaDeleteTest](#r0s62)|1✔️|||2s|
-|[org.apache.pulsar.client.impl.SequenceIdWithErrorTest](#r0s63)|3✔️||2✖️|18s|
-|[org.apache.pulsar.client.impl.TopicDoesNotExistsTest](#r0s64)|2✔️|||4s|
-|[org.apache.pulsar.client.impl.TopicFromMessageTest](#r0s65)|5✔️|||14s|
-|[org.apache.pulsar.client.impl.TopicsConsumerImplTest](#r0s66)|17✔️|||133s|
-|[org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest](#r0s67)|7✔️|||44s|
-|[org.apache.pulsar.client.impl.ZeroQueueSizeTest](#r0s68)|14✔️|||16s|
-|[org.apache.pulsar.common.api.raw.RawMessageImplTest](#r0s69)|1✔️|||316ms|
-|[org.apache.pulsar.common.compression.CommandsTest](#r0s70)|1✔️|||30ms|
-|[org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest](#r0s71)|6✔️|||223ms|
-|[org.apache.pulsar.common.compression.CompressorCodecTest](#r0s72)|45✔️|||737ms|
-|[org.apache.pulsar.common.compression.Crc32cChecksumTest](#r0s73)|6✔️|||5s|
-|[org.apache.pulsar.common.lookup.data.LookupDataTest](#r0s74)|4✔️|||2s|
-|[org.apache.pulsar.common.naming.MetadataTests](#r0s75)|2✔️|||161ms|
-|[org.apache.pulsar.common.naming.NamespaceBundlesTest](#r0s76)|5✔️|||99ms|
-|[org.apache.pulsar.common.naming.NamespaceBundleTest](#r0s77)|6✔️|||64ms|
-|[org.apache.pulsar.common.naming.NamespaceNameTest](#r0s78)|2✔️|||207ms|
-|[org.apache.pulsar.common.naming.ServiceConfigurationTest](#r0s79)|4✔️|||48ms|
-|[org.apache.pulsar.common.naming.TopicNameTest](#r0s80)|4✔️|||529ms|
-|[org.apache.pulsar.common.net.ServiceURITest](#r0s81)|21✔️|||237ms|
-|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest](#r0s82)|1✔️|||15ms|
-|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest](#r0s83)|1✔️|||19ms|
-|[org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest](#r0s84)|6✔️|||64ms|
-|[org.apache.pulsar.common.policies.data.BacklogQuotaTest](#r0s85)|1✔️|||12ms|
-|[org.apache.pulsar.common.policies.data.ClusterDataTest](#r0s86)|1✔️|||9ms|
-|[org.apache.pulsar.common.policies.data.ConsumerStatsTest](#r0s87)|1✔️|||8ms|
-|[org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest](#r0s88)|2✔️|||948ms|
-|[org.apache.pulsar.common.policies.data.LocalPolicesTest](#r0s89)|1✔️|||48ms|
-|[org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest](#r0s90)|1✔️|||76ms|
-|[org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest](#r0s91)|1✔️|||45ms|
-|[org.apache.pulsar.common.policies.data.OffloadPoliciesTest](#r0s92)|6✔️|||216ms|
-|[org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest](#r0s93)|1✔️|||12ms|
-|[org.apache.pulsar.common.policies.data.PersistencePoliciesTest](#r0s94)|1✔️|||19ms|
-|[org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest](#r0s95)|1✔️|||29ms|
-|[org.apache.pulsar.common.policies.data.PersistentTopicStatsTest](#r0s96)|2✔️|||51ms|
-|[org.apache.pulsar.common.policies.data.PoliciesDataTest](#r0s97)|4✔️|||1s|
-|[org.apache.pulsar.common.policies.data.PublisherStatsTest](#r0s98)|2✔️|||37ms|
-|[org.apache.pulsar.common.policies.data.ReplicatorStatsTest](#r0s99)|2✔️|||30ms|
-|[org.apache.pulsar.common.policies.data.ResourceQuotaTest](#r0s100)|2✔️|||45ms|
-|[org.apache.pulsar.common.policies.data.RetentionPolicesTest](#r0s101)|1✔️|||8ms|
-|[org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest](#r0s102)|1✔️|||22ms|
-|[org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest](#r0s103)|1✔️|||1ms|
-|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest](#r0s104)|7✔️|||265ms|
-|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest](#r0s105)|7✔️|||309ms|
-|[org.apache.pulsar.common.protocol.ByteBufPairTest](#r0s106)|2✔️|||5s|
-|[org.apache.pulsar.common.protocol.CommandUtilsTests](#r0s107)|7✔️|||3s|
-|[org.apache.pulsar.common.protocol.MarkersTest](#r0s108)|6✔️|||3s|
-|[org.apache.pulsar.common.protocol.PulsarDecoderTest](#r0s109)|1✔️|||4s|
-|[org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest](#r0s110)|1✔️|||82ms|
-|[org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest](#r0s111)|2✔️|||13ms|
-|[org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclableTest](#r0s112)|2✔️|||63ms|
-|[org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest](#r0s113)|13✔️|||28s|
-|[org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest](#r0s114)|15✔️|||2s|
-|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest](#r0s115)|12✔️|||9s|
-|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest](#r0s116)|11✔️|||7s|
-|[org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest](#r0s117)|13✔️|||1s|
-|[org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest](#r0s118)|9✔️|||342ms|
-|[org.apache.pulsar.common.util.collections.FieldParserTest](#r0s119)|2✔️|||64ms|
-|[org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest](#r0s120)|6✔️|||350ms|
-|[org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest](#r0s121)|15✔️|||3s|
-|[org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest](#r0s122)|3✔️|||238ms|
-|[org.apache.pulsar.common.util.FieldParserTest](#r0s123)|1✔️|||242ms|
-|[org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest](#r0s124)|6✔️|||6s|
-|[org.apache.pulsar.common.util.netty.ChannelFuturesTest](#r0s125)|5✔️|||2s|
-|[org.apache.pulsar.common.util.RateLimiterTest](#r0s126)|11✔️|||7s|
-|[org.apache.pulsar.common.util.ReflectionsTest](#r0s127)|12✔️|||172ms|
-|[org.apache.pulsar.common.util.RelativeTimeUtilTest](#r0s128)|1✔️|||39ms|
-|[org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest](#r0s129)|1✔️|||5s|
-|[org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest](#r0s130)|2✔️|||28s|
-|[org.apache.pulsar.functions.worker.PulsarFunctionPublishTest](#r0s131)|3✔️|||42s|
-|[org.apache.pulsar.functions.worker.PulsarFunctionTlsTest](#r0s132)|1✔️|||12s|
-|[org.apache.pulsar.io.PulsarFunctionTlsTest](#r0s133)|1✔️|||30s|
-|[org.apache.pulsar.proxy.server.AdminProxyHandlerTest](#r0s134)|1✔️|||474ms|
-|[org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest](#r0s135)|1✔️|||2s|
-|[org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest](#r0s136)|1✔️|||10ms|
-|[org.apache.pulsar.proxy.server.ProxyAdditionalServletTest](#r0s137)|1✔️|||125ms|
-|[org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest](#r0s138)|1✔️|||2s|
-|[org.apache.pulsar.proxy.server.ProxyAuthenticationTest](#r0s139)|1✔️|||17s|
-|[org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest](#r0s140)|1✔️|||2s|
-|[org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest](#r0s141)|1✔️|||511ms|
-|[org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest](#r0s142)|1✔️|||32s|
-|[org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest](#r0s143)|10✔️|||2s|
-|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth](#r0s144)|3✔️|||7s|
-|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth](#r0s145)|3✔️|||7s|
-|[org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest](#r0s146)|1✔️|||3s|
-|[org.apache.pulsar.proxy.server.ProxyParserTest](#r0s147)|5✔️|||1s|
-|[org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest](#r0s148)|1✔️|||10s|
-|[org.apache.pulsar.proxy.server.ProxyStatsTest](#r0s149)|3✔️|||533ms|
-|[org.apache.pulsar.proxy.server.ProxyTest](#r0s150)|6✔️|||3s|
-|[org.apache.pulsar.proxy.server.ProxyTlsTest](#r0s151)|2✔️|||414ms|
-|[org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth](#r0s152)|1✔️|||4ms|
-|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest](#r0s153)|1✔️|||2s|
-|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest](#r0s154)|13✔️|||33s|
-|[org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest](#r0s155)|1✔️|||2s|
-|[org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest](#r0s156)|3✔️|||8s|
-|[org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest](#r0s157)|2✔️|||114ms|
-|[org.apache.pulsar.PulsarBrokerStarterTest](#r0s158)|9✔️|||591ms|
-|[org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest](#r0s159)|23✔️|||107s|
-|[org.apache.pulsar.schema.PartitionedTopicSchemaTest](#r0s160)|1✔️|||29s|
-|[org.apache.pulsar.schema.SchemaTest](#r0s161)|3✔️|||31s|
-|[org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest](#r0s162)|2✔️|||41s|
-|[org.apache.pulsar.tests.EnumValuesDataProviderTest](#r0s163)|6✔️|||23ms|
-|[org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest](#r0s164)|1✔️||4✖️|36ms|
-|[org.apache.pulsar.tests.TestRetrySupportRetryTest](#r0s165)|1✔️||4✖️|27ms|
-|[org.apache.pulsar.tests.TestRetrySupportSuccessTest](#r0s166)|3✔️|||1ms|
-|[org.apache.pulsar.tests.ThreadDumpUtilTest](#r0s167)|2✔️|||17ms|
-|[org.apache.pulsar.utils.SimpleTextOutputStreamTest](#r0s168)|4✔️|||50ms|
-|[org.apache.pulsar.utils.StatsOutputStreamTest](#r0s169)|6✔️|||59ms|
-|[org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest](#r0s170)|4✔️|||29s|
-|[org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest](#r0s171)|1✔️|||1s|
-|[org.apache.pulsar.websocket.proxy.ProxyConfigurationTest](#r0s172)|2✔️|||9s|
-|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest](#r0s173)|1✔️|||11s|
-|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest](#r0s174)|1✔️|||7s|
-|[org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest](#r0s175)|4✔️|||30s|
+|[org.apache.pulsar.AddMissingPatchVersionTest](#r0s0)||1❌|1⚪|116ms|
+|[org.apache.pulsar.broker.admin.AdminApiOffloadTest](#r0s1)|7✅|||19s|
+|[org.apache.pulsar.broker.auth.AuthenticationServiceTest](#r0s2)|2✅|||185ms|
+|[org.apache.pulsar.broker.auth.AuthLogsTest](#r0s3)|2✅|||1s|
+|[org.apache.pulsar.broker.auth.AuthorizationTest](#r0s4)|1✅|||2s|
+|[org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test](#r0s5)|4✅|||2s|
+|[org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest](#r0s6)|2✅|||33s|
+|[org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests](#r0s7)|2✅|||32s|
+|[org.apache.pulsar.broker.namespace.NamespaceServiceTest](#r0s8)|10✅|||75s|
+|[org.apache.pulsar.broker.namespace.NamespaceUnloadingTest](#r0s9)|2✅|||14s|
+|[org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest](#r0s10)|1✅|||16s|
+|[org.apache.pulsar.broker.namespace.OwnershipCacheTest](#r0s11)|8✅|||16s|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlersTest](#r0s12)|6✅|||946ms|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest](#r0s13)|3✅|||7s|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest](#r0s14)|1✅|||15ms|
+|[org.apache.pulsar.broker.PulsarServiceTest](#r0s15)|2✅|||96ms|
+|[org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest](#r0s16)|3✅|||14s|
+|[org.apache.pulsar.broker.service.ReplicatorTest](#r0s17)|22✅|||40s|
+|[org.apache.pulsar.broker.service.TopicOwnerTest](#r0s18)|8✅|||114s|
+|[org.apache.pulsar.broker.SLAMonitoringTest](#r0s19)|4✅|||9s|
+|[org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest](#r0s20)|2✅|||49ms|
+|[org.apache.pulsar.broker.stats.ConsumerStatsTest](#r0s21)|3✅|||21s|
+|[org.apache.pulsar.broker.stats.ManagedCursorMetricsTest](#r0s22)|1✅|||281ms|
+|[org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest](#r0s23)|1✅|||285ms|
+|[org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest](#r0s24)|1✅|||40ms|
+|[org.apache.pulsar.broker.stats.PrometheusMetricsTest](#r0s25)|15✅|||83s|
+|[org.apache.pulsar.broker.stats.SubscriptionStatsTest](#r0s26)|2✅|||2s|
+|[org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest](#r0s27)|1✅|||1s|
+|[org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest](#r0s28)|3✅|||28ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest](#r0s29)|4✅|||93ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest](#r0s30)|7✅|||81ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest](#r0s31)|1✅|||14ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest](#r0s32)|2✅|||38s|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest](#r0s33)|2✅||1⚪|49s|
+|[org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest](#r0s34)|3✅|||95ms|
+|[org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest](#r0s35)|1✅|||1s|
+|[org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest](#r0s36)|2✅||1⚪|57s|
+|[org.apache.pulsar.broker.transaction.TransactionConsumeTest](#r0s37)|2✅|||30s|
+|[org.apache.pulsar.broker.web.RestExceptionTest](#r0s38)|3✅|||37ms|
+|[org.apache.pulsar.broker.web.WebServiceTest](#r0s39)|9✅|||27s|
+|[org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest](#r0s40)|4✅|||8s|
+|[org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest](#r0s41)|4✅|||30ms|
+|[org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest](#r0s42)|4✅|||14s|
+|[org.apache.pulsar.client.impl.BatchMessageIndexAckTest](#r0s43)|5✅|||44s|
+|[org.apache.pulsar.client.impl.BrokerClientIntegrationTest](#r0s44)|15✅|||148s|
+|[org.apache.pulsar.client.impl.CompactedOutBatchMessageTest](#r0s45)|1✅|||1s|
+|[org.apache.pulsar.client.impl.ConsumerAckResponseTest](#r0s46)|1✅|||549ms|
+|[org.apache.pulsar.client.impl.ConsumerConfigurationTest](#r0s47)|4✅|||12s|
+|[org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate](#r0s48)|7✅|||4s|
+|[org.apache.pulsar.client.impl.ConsumerUnsubscribeTest](#r0s49)|1✅|||129ms|
+|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth](#r0s50)|3✅|||23s|
+|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth](#r0s51)|3✅|||8s|
+|[org.apache.pulsar.client.impl.KeyStoreTlsTest](#r0s52)|1✅|||183ms|
+|[org.apache.pulsar.client.impl.MessageChecksumTest](#r0s53)|3✅|||47s|
+|[org.apache.pulsar.client.impl.MessageChunkingTest](#r0s54)|8✅||1⚪|73s|
+|[org.apache.pulsar.client.impl.MessageParserTest](#r0s55)|2✅|||5s|
+|[org.apache.pulsar.client.impl.MultiTopicsReaderTest](#r0s56)|8✅|||35s|
+|[org.apache.pulsar.client.impl.NegativeAcksTest](#r0s57)|32✅|||11s|
+|[org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest](#r0s58)|11✅|||63s|
+|[org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest](#r0s59)|5✅|||34s|
+|[org.apache.pulsar.client.impl.PulsarMultiHostClientTest](#r0s60)|3✅|||15s|
+|[org.apache.pulsar.client.impl.RawMessageSerDeserTest](#r0s61)|1✅|||10ms|
+|[org.apache.pulsar.client.impl.SchemaDeleteTest](#r0s62)|1✅|||2s|
+|[org.apache.pulsar.client.impl.SequenceIdWithErrorTest](#r0s63)|3✅||2⚪|18s|
+|[org.apache.pulsar.client.impl.TopicDoesNotExistsTest](#r0s64)|2✅|||4s|
+|[org.apache.pulsar.client.impl.TopicFromMessageTest](#r0s65)|5✅|||14s|
+|[org.apache.pulsar.client.impl.TopicsConsumerImplTest](#r0s66)|17✅|||133s|
+|[org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest](#r0s67)|7✅|||44s|
+|[org.apache.pulsar.client.impl.ZeroQueueSizeTest](#r0s68)|14✅|||16s|
+|[org.apache.pulsar.common.api.raw.RawMessageImplTest](#r0s69)|1✅|||316ms|
+|[org.apache.pulsar.common.compression.CommandsTest](#r0s70)|1✅|||30ms|
+|[org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest](#r0s71)|6✅|||223ms|
+|[org.apache.pulsar.common.compression.CompressorCodecTest](#r0s72)|45✅|||737ms|
+|[org.apache.pulsar.common.compression.Crc32cChecksumTest](#r0s73)|6✅|||5s|
+|[org.apache.pulsar.common.lookup.data.LookupDataTest](#r0s74)|4✅|||2s|
+|[org.apache.pulsar.common.naming.MetadataTests](#r0s75)|2✅|||161ms|
+|[org.apache.pulsar.common.naming.NamespaceBundlesTest](#r0s76)|5✅|||99ms|
+|[org.apache.pulsar.common.naming.NamespaceBundleTest](#r0s77)|6✅|||64ms|
+|[org.apache.pulsar.common.naming.NamespaceNameTest](#r0s78)|2✅|||207ms|
+|[org.apache.pulsar.common.naming.ServiceConfigurationTest](#r0s79)|4✅|||48ms|
+|[org.apache.pulsar.common.naming.TopicNameTest](#r0s80)|4✅|||529ms|
+|[org.apache.pulsar.common.net.ServiceURITest](#r0s81)|21✅|||237ms|
+|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest](#r0s82)|1✅|||15ms|
+|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest](#r0s83)|1✅|||19ms|
+|[org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest](#r0s84)|6✅|||64ms|
+|[org.apache.pulsar.common.policies.data.BacklogQuotaTest](#r0s85)|1✅|||12ms|
+|[org.apache.pulsar.common.policies.data.ClusterDataTest](#r0s86)|1✅|||9ms|
+|[org.apache.pulsar.common.policies.data.ConsumerStatsTest](#r0s87)|1✅|||8ms|
+|[org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest](#r0s88)|2✅|||948ms|
+|[org.apache.pulsar.common.policies.data.LocalPolicesTest](#r0s89)|1✅|||48ms|
+|[org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest](#r0s90)|1✅|||76ms|
+|[org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest](#r0s91)|1✅|||45ms|
+|[org.apache.pulsar.common.policies.data.OffloadPoliciesTest](#r0s92)|6✅|||216ms|
+|[org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest](#r0s93)|1✅|||12ms|
+|[org.apache.pulsar.common.policies.data.PersistencePoliciesTest](#r0s94)|1✅|||19ms|
+|[org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest](#r0s95)|1✅|||29ms|
+|[org.apache.pulsar.common.policies.data.PersistentTopicStatsTest](#r0s96)|2✅|||51ms|
+|[org.apache.pulsar.common.policies.data.PoliciesDataTest](#r0s97)|4✅|||1s|
+|[org.apache.pulsar.common.policies.data.PublisherStatsTest](#r0s98)|2✅|||37ms|
+|[org.apache.pulsar.common.policies.data.ReplicatorStatsTest](#r0s99)|2✅|||30ms|
+|[org.apache.pulsar.common.policies.data.ResourceQuotaTest](#r0s100)|2✅|||45ms|
+|[org.apache.pulsar.common.policies.data.RetentionPolicesTest](#r0s101)|1✅|||8ms|
+|[org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest](#r0s102)|1✅|||22ms|
+|[org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest](#r0s103)|1✅|||1ms|
+|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest](#r0s104)|7✅|||265ms|
+|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest](#r0s105)|7✅|||309ms|
+|[org.apache.pulsar.common.protocol.ByteBufPairTest](#r0s106)|2✅|||5s|
+|[org.apache.pulsar.common.protocol.CommandUtilsTests](#r0s107)|7✅|||3s|
+|[org.apache.pulsar.common.protocol.MarkersTest](#r0s108)|6✅|||3s|
+|[org.apache.pulsar.common.protocol.PulsarDecoderTest](#r0s109)|1✅|||4s|
+|[org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest](#r0s110)|1✅|||82ms|
+|[org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest](#r0s111)|2✅|||13ms|
+|[org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclableTest](#r0s112)|2✅|||63ms|
+|[org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest](#r0s113)|13✅|||28s|
+|[org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest](#r0s114)|15✅|||2s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest](#r0s115)|12✅|||9s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest](#r0s116)|11✅|||7s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest](#r0s117)|13✅|||1s|
+|[org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest](#r0s118)|9✅|||342ms|
+|[org.apache.pulsar.common.util.collections.FieldParserTest](#r0s119)|2✅|||64ms|
+|[org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest](#r0s120)|6✅|||350ms|
+|[org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest](#r0s121)|15✅|||3s|
+|[org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest](#r0s122)|3✅|||238ms|
+|[org.apache.pulsar.common.util.FieldParserTest](#r0s123)|1✅|||242ms|
+|[org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest](#r0s124)|6✅|||6s|
+|[org.apache.pulsar.common.util.netty.ChannelFuturesTest](#r0s125)|5✅|||2s|
+|[org.apache.pulsar.common.util.RateLimiterTest](#r0s126)|11✅|||7s|
+|[org.apache.pulsar.common.util.ReflectionsTest](#r0s127)|12✅|||172ms|
+|[org.apache.pulsar.common.util.RelativeTimeUtilTest](#r0s128)|1✅|||39ms|
+|[org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest](#r0s129)|1✅|||5s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest](#r0s130)|2✅|||28s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionPublishTest](#r0s131)|3✅|||42s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionTlsTest](#r0s132)|1✅|||12s|
+|[org.apache.pulsar.io.PulsarFunctionTlsTest](#r0s133)|1✅|||30s|
+|[org.apache.pulsar.proxy.server.AdminProxyHandlerTest](#r0s134)|1✅|||474ms|
+|[org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest](#r0s135)|1✅|||2s|
+|[org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest](#r0s136)|1✅|||10ms|
+|[org.apache.pulsar.proxy.server.ProxyAdditionalServletTest](#r0s137)|1✅|||125ms|
+|[org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest](#r0s138)|1✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyAuthenticationTest](#r0s139)|1✅|||17s|
+|[org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest](#r0s140)|1✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest](#r0s141)|1✅|||511ms|
+|[org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest](#r0s142)|1✅|||32s|
+|[org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest](#r0s143)|10✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth](#r0s144)|3✅|||7s|
+|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth](#r0s145)|3✅|||7s|
+|[org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest](#r0s146)|1✅|||3s|
+|[org.apache.pulsar.proxy.server.ProxyParserTest](#r0s147)|5✅|||1s|
+|[org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest](#r0s148)|1✅|||10s|
+|[org.apache.pulsar.proxy.server.ProxyStatsTest](#r0s149)|3✅|||533ms|
+|[org.apache.pulsar.proxy.server.ProxyTest](#r0s150)|6✅|||3s|
+|[org.apache.pulsar.proxy.server.ProxyTlsTest](#r0s151)|2✅|||414ms|
+|[org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth](#r0s152)|1✅|||4ms|
+|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest](#r0s153)|1✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest](#r0s154)|13✅|||33s|
+|[org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest](#r0s155)|1✅|||2s|
+|[org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest](#r0s156)|3✅|||8s|
+|[org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest](#r0s157)|2✅|||114ms|
+|[org.apache.pulsar.PulsarBrokerStarterTest](#r0s158)|9✅|||591ms|
+|[org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest](#r0s159)|23✅|||107s|
+|[org.apache.pulsar.schema.PartitionedTopicSchemaTest](#r0s160)|1✅|||29s|
+|[org.apache.pulsar.schema.SchemaTest](#r0s161)|3✅|||31s|
+|[org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest](#r0s162)|2✅|||41s|
+|[org.apache.pulsar.tests.EnumValuesDataProviderTest](#r0s163)|6✅|||23ms|
+|[org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest](#r0s164)|1✅||4⚪|36ms|
+|[org.apache.pulsar.tests.TestRetrySupportRetryTest](#r0s165)|1✅||4⚪|27ms|
+|[org.apache.pulsar.tests.TestRetrySupportSuccessTest](#r0s166)|3✅|||1ms|
+|[org.apache.pulsar.tests.ThreadDumpUtilTest](#r0s167)|2✅|||17ms|
+|[org.apache.pulsar.utils.SimpleTextOutputStreamTest](#r0s168)|4✅|||50ms|
+|[org.apache.pulsar.utils.StatsOutputStreamTest](#r0s169)|6✅|||59ms|
+|[org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest](#r0s170)|4✅|||29s|
+|[org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest](#r0s171)|1✅|||1s|
+|[org.apache.pulsar.websocket.proxy.ProxyConfigurationTest](#r0s172)|2✅|||9s|
+|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest](#r0s173)|1✅|||11s|
+|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest](#r0s174)|1✅|||7s|
+|[org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest](#r0s175)|4✅|||30s|
### ❌ org.apache.pulsar.AddMissingPatchVersionTest
```
-✖️ testVersionStrings
+⚪ testVersionStrings
❌ testVersionStrings
java.lang.AssertionError: expected [1.2.1] but found [1.2.0]
```
-### ✔️ org.apache.pulsar.broker.admin.AdminApiOffloadTest
+### ✅ org.apache.pulsar.broker.admin.AdminApiOffloadTest
```
-✔️ testOffloadPoliciesAppliedApi
-✔️ testOffloadV2
-✔️ testTopicLevelOffloadNonPartitioned
-✔️ testTopicLevelOffloadPartitioned
-✔️ testOffloadV1
-✔️ testOffloadPolicies
-✔️ testOffloadPoliciesApi
+✅ testOffloadPoliciesAppliedApi
+✅ testOffloadV2
+✅ testTopicLevelOffloadNonPartitioned
+✅ testTopicLevelOffloadPartitioned
+✅ testOffloadV1
+✅ testOffloadPolicies
+✅ testOffloadPoliciesApi
```
-### ✔️ org.apache.pulsar.broker.auth.AuthenticationServiceTest
+### ✅ org.apache.pulsar.broker.auth.AuthenticationServiceTest
```
-✔️ testAuthentication
-✔️ testAuthenticationHttp
+✅ testAuthentication
+✅ testAuthenticationHttp
```
-### ✔️ org.apache.pulsar.broker.auth.AuthLogsTest
+### ✅ org.apache.pulsar.broker.auth.AuthLogsTest
```
-✔️ httpEndpoint
-✔️ binaryEndpoint
+✅ httpEndpoint
+✅ binaryEndpoint
```
-### ✔️ org.apache.pulsar.broker.auth.AuthorizationTest
+### ✅ org.apache.pulsar.broker.auth.AuthorizationTest
```
-✔️ simple
+✅ simple
```
-### ✔️ org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test
+### ✅ org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test
```
-✔️ crossColoLookup
-✔️ testNotEnoughLookupPermits
-✔️ testValidateReplicationSettingsOnNamespace
-✔️ testDataPojo
+✅ crossColoLookup
+✅ testNotEnoughLookupPermits
+✅ testValidateReplicationSettingsOnNamespace
+✅ testDataPojo
```
-### ✔️ org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest
```
-✔️ testCreateNamespaceWithDefaultBundles
-✔️ testSplitBundleUpdatesLocalPoliciesWithoutOverwriting
+✅ testCreateNamespaceWithDefaultBundles
+✅ testSplitBundleUpdatesLocalPoliciesWithoutOverwriting
```
-### ✔️ org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests
+### ✅ org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests
```
-✔️ testGetAllPartitions
-✔️ testNamespaceBundleOwnershipListener
+✅ testGetAllPartitions
+✅ testNamespaceBundleOwnershipListener
```
-### ✔️ org.apache.pulsar.broker.namespace.NamespaceServiceTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceServiceTest
```
-✔️ testSplitMapWithRefreshedStatMap
-✔️ testRemoveOwnershipNamespaceBundle
-✔️ testIsServiceUnitDisabled
-✔️ testLoadReportDeserialize
-✔️ testCreateLookupResult
-✔️ testUnloadNamespaceBundleWithStuckTopic
-✔️ testUnloadNamespaceBundleFailure
-✔️ testSplitAndOwnBundles
-✔️ testCreateNamespaceWithDefaultNumberOfBundles
-✔️ testRemoveOwnershipAndSplitBundle
+✅ testSplitMapWithRefreshedStatMap
+✅ testRemoveOwnershipNamespaceBundle
+✅ testIsServiceUnitDisabled
+✅ testLoadReportDeserialize
+✅ testCreateLookupResult
+✅ testUnloadNamespaceBundleWithStuckTopic
+✅ testUnloadNamespaceBundleFailure
+✅ testSplitAndOwnBundles
+✅ testCreateNamespaceWithDefaultNumberOfBundles
+✅ testRemoveOwnershipAndSplitBundle
```
-### ✔️ org.apache.pulsar.broker.namespace.NamespaceUnloadingTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceUnloadingTest
```
-✔️ testUnloadNotLoadedNamespace
-✔️ testUnloadPartiallyLoadedNamespace
+✅ testUnloadNotLoadedNamespace
+✅ testUnloadPartiallyLoadedNamespace
```
-### ✔️ org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest
+### ✅ org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest
```
-✔️ testOwnershipForCurrentServer
+✅ testOwnershipForCurrentServer
```
-### ✔️ org.apache.pulsar.broker.namespace.OwnershipCacheTest
+### ✅ org.apache.pulsar.broker.namespace.OwnershipCacheTest
```
-✔️ testGetOwnedServiceUnits
-✔️ testRemoveOwnership
-✔️ testGetOwnedServiceUnit
-✔️ testGetOrSetOwner
-✔️ testConstructor
-✔️ testGetOwner
-✔️ testDisableOwnership
-✔️ testReestablishOwnership
+✅ testGetOwnedServiceUnits
+✅ testRemoveOwnership
+✅ testGetOwnedServiceUnit
+✅ testGetOrSetOwner
+✅ testConstructor
+✅ testGetOwner
+✅ testDisableOwnership
+✅ testReestablishOwnership
```
-### ✔️ org.apache.pulsar.broker.protocol.ProtocolHandlersTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlersTest
```
-✔️ testStart
-✔️ testGetProtocol
-✔️ testNewChannelInitializersSuccess
-✔️ testInitialize
-✔️ testNewChannelInitializersOverlapped
-✔️ testGetProtocolDataToAdvertise
+✅ testStart
+✅ testGetProtocol
+✅ testNewChannelInitializersSuccess
+✅ testInitialize
+✅ testNewChannelInitializersOverlapped
+✅ testGetProtocolDataToAdvertise
```
-### ✔️ org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest
```
-✔️ testLoadProtocolHandler
-✔️ testLoadProtocolHandlerBlankHandlerClass
-✔️ testLoadProtocolHandlerWrongHandlerClass
+✅ testLoadProtocolHandler
+✅ testLoadProtocolHandlerBlankHandlerClass
+✅ testLoadProtocolHandlerWrongHandlerClass
```
-### ✔️ org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest
```
-✔️ testWrapper
+✅ testWrapper
```
-### ✔️ org.apache.pulsar.broker.PulsarServiceTest
+### ✅ org.apache.pulsar.broker.PulsarServiceTest
```
-✔️ testGetWorkerService
-✔️ testGetWorkerServiceException
+✅ testGetWorkerService
+✅ testGetWorkerServiceException
```
-### ✔️ org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest
+### ✅ org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest
```
-✔️ testMessagePublishBufferThrottleEnable
-✔️ testBlockByPublishRateLimiting
-✔️ testMessagePublishBufferThrottleDisabled
+✅ testMessagePublishBufferThrottleEnable
+✅ testBlockByPublishRateLimiting
+✅ testMessagePublishBufferThrottleDisabled
```
-### ✔️ org.apache.pulsar.broker.service.ReplicatorTest
+### ✅ org.apache.pulsar.broker.service.ReplicatorTest
```
-✔️ testResumptionAfterBacklogRelaxed
-✔️ testReplicationOverrides
-✔️ testResetCursorNotFail
-✔️ testUpdateGlobalTopicPartition
-✔️ testReplication
-✔️ testReplicatorOnPartitionedTopic
-✔️ testConcurrentReplicator
-✔️ testTopicReplicatedAndProducerCreate
-✔️ testDeleteReplicatorFailure
-✔️ testReplicatorOnPartitionedTopic
-✔️ testReplicationForBatchMessages
-✔️ testReplicatorClearBacklog
-✔️ verifyChecksumAfterReplication
-✔️ testCloseReplicatorStartProducer
-✔️ activeBrokerParse
-✔️ testReplicatePeekAndSkip
-✔️ testReplication
-✔️ testReplicatedCluster
-✔️ testTopicReplicatedAndProducerCreate
-✔️ testConfigChange
-✔️ testFailures
-✔️ testReplicatorProducerClosing
+✅ testResumptionAfterBacklogRelaxed
+✅ testReplicationOverrides
+✅ testResetCursorNotFail
+✅ testUpdateGlobalTopicPartition
+✅ testReplication
+✅ testReplicatorOnPartitionedTopic
+✅ testConcurrentReplicator
+✅ testTopicReplicatedAndProducerCreate
+✅ testDeleteReplicatorFailure
+✅ testReplicatorOnPartitionedTopic
+✅ testReplicationForBatchMessages
+✅ testReplicatorClearBacklog
+✅ verifyChecksumAfterReplication
+✅ testCloseReplicatorStartProducer
+✅ activeBrokerParse
+✅ testReplicatePeekAndSkip
+✅ testReplication
+✅ testReplicatedCluster
+✅ testTopicReplicatedAndProducerCreate
+✅ testConfigChange
+✅ testFailures
+✅ testReplicatorProducerClosing
```
-### ✔️ org.apache.pulsar.broker.service.TopicOwnerTest
+### ✅ org.apache.pulsar.broker.service.TopicOwnerTest
```
-✔️ testReleaseOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeDeleted
-✔️ testAcquireOwnershipWithZookeeperDisconnectedAfterOwnershipNodeCreated
-✔️ testConnectToInvalidateBundleCacheBroker
-✔️ testAcquireOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeCreated
-✔️ testLookupPartitionedTopic
-✔️ testListNonPersistentTopic
-✔️ testReleaseOwnershipWithZookeeperDisconnectedAfterOwnershipNodeDeleted
-✔️ testReestablishOwnershipAfterInvalidateCache
+✅ testReleaseOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeDeleted
+✅ testAcquireOwnershipWithZookeeperDisconnectedAfterOwnershipNodeCreated
+✅ testConnectToInvalidateBundleCacheBroker
+✅ testAcquireOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeCreated
+✅ testLookupPartitionedTopic
+✅ testListNonPersistentTopic
+✅ testReleaseOwnershipWithZookeeperDisconnectedAfterOwnershipNodeDeleted
+✅ testReestablishOwnershipAfterInvalidateCache
```
-### ✔️ org.apache.pulsar.broker.SLAMonitoringTest
+### ✅ org.apache.pulsar.broker.SLAMonitoringTest
```
-✔️ testOwnedNamespaces
-✔️ testOwnershipAfterSetup
-✔️ testUnloadIfBrokerCrashes
-✔️ testOwnershipViaAdminAfterSetup
+✅ testOwnedNamespaces
+✅ testOwnershipAfterSetup
+✅ testUnloadIfBrokerCrashes
+✅ testOwnershipViaAdminAfterSetup
```
-### ✔️ org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest
+### ✅ org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest
```
-✔️ testJvmDirectMemoryUsedMetric
-✔️ testBookieClientStatsGenerator
+✅ testJvmDirectMemoryUsedMetric
+✅ testBookieClientStatsGenerator
```
-### ✔️ org.apache.pulsar.broker.stats.ConsumerStatsTest
+### ✅ org.apache.pulsar.broker.stats.ConsumerStatsTest
```
-✔️ testAckStatsOnPartitionedTopicForExclusiveSubscription
-✔️ testConsumerStatsOnZeroMaxUnackedMessagesPerConsumer
-✔️ testUpdateStatsForActiveConsumerAndSubscription
+✅ testAckStatsOnPartitionedTopicForExclusiveSubscription
+✅ testConsumerStatsOnZeroMaxUnackedMessagesPerConsumer
+✅ testUpdateStatsForActiveConsumerAndSubscription
```
-### ✔️ org.apache.pulsar.broker.stats.ManagedCursorMetricsTest
+### ✅ org.apache.pulsar.broker.stats.ManagedCursorMetricsTest
```
-✔️ testManagedCursorMetrics
+✅ testManagedCursorMetrics
```
-### ✔️ org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest
+### ✅ org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest
```
-✔️ testManagedLedgerMetrics
+✅ testManagedLedgerMetrics
```
-### ✔️ org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest
+### ✅ org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest
```
-✔️ testSimpleAggregation
+✅ testSimpleAggregation
```
-### ✔️ org.apache.pulsar.broker.stats.PrometheusMetricsTest
+### ✅ org.apache.pulsar.broker.stats.PrometheusMetricsTest
```
-✔️ testPerTopicStats
-✔️ testAuthMetrics
-✔️ testPerTopicExpiredStat
-✔️ testPerProducerStats
-✔️ testMetricsTopicCount
-✔️ testManagedLedgerBookieClientStats
-✔️ testDuplicateMetricTypeDefinitions
-✔️ testExpiringTokenMetrics
-✔️ testPerConsumerStats
-✔️ testPerNamespaceStats
-✔️ testManagedCursorPersistStats
-✔️ testDuplicateMetricTypeDefinitions
-✔️ testExpiredTokenMetrics
-✔️ testManagedLedgerCacheStats
-✔️ testManagedLedgerStats
+✅ testPerTopicStats
+✅ testAuthMetrics
+✅ testPerTopicExpiredStat
+✅ testPerProducerStats
+✅ testMetricsTopicCount
+✅ testManagedLedgerBookieClientStats
+✅ testDuplicateMetricTypeDefinitions
+✅ testExpiringTokenMetrics
+✅ testPerConsumerStats
+✅ testPerNamespaceStats
+✅ testManagedCursorPersistStats
+✅ testDuplicateMetricTypeDefinitions
+✅ testExpiredTokenMetrics
+✅ testManagedLedgerCacheStats
+✅ testManagedLedgerStats
```
-### ✔️ org.apache.pulsar.broker.stats.SubscriptionStatsTest
+### ✅ org.apache.pulsar.broker.stats.SubscriptionStatsTest
```
-✔️ testConsumersAfterMarkDelete
-✔️ testNonContiguousDeletedMessagesRanges
+✅ testConsumersAfterMarkDelete
+✅ testNonContiguousDeletedMessagesRanges
```
-### ✔️ org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest
+### ✅ org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest
```
-✔️ testSendAndReceiveNamespaceEvents
+✅ testSendAndReceiveNamespaceEvents
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest
```
-✔️ testCloseReleaseAllEntries
-✔️ testInvalidNumEntriesArgument
-✔️ testEndOfTransactionException
+✅ testCloseReleaseAllEntries
+✅ testInvalidNumEntriesArgument
+✅ testEndOfTransactionException
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest
```
-✔️ testAbortOnTopic
-✔️ testAbortOnSubscription
-✔️ testCommitOnTopic
-✔️ testCommitOnSubscription
+✅ testAbortOnTopic
+✅ testAbortOnSubscription
+✅ testCommitOnTopic
+✅ testCommitOnSubscription
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest
```
-✔️ testOpenReaderOnNonExistentTxn
-✔️ testAbortCommittedTxn
-✔️ testAbortTxn
-✔️ testAbortNonExistentTxn
-✔️ testCommitNonExistentTxn
-✔️ testCommitTxn
-✔️ testOpenReaderOnAnOpenTxn
+✅ testOpenReaderOnNonExistentTxn
+✅ testAbortCommittedTxn
+✅ testAbortTxn
+✅ testAbortNonExistentTxn
+✅ testCommitNonExistentTxn
+✅ testCommitTxn
+✅ testOpenReaderOnAnOpenTxn
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest
```
-✔️ testCloseShouldReleaseBuffer
+✅ testCloseShouldReleaseBuffer
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest
```
-✔️ testTransactionBufferLowWaterMark
-✔️ testPendingAckLowWaterMark
+✅ testTransactionBufferLowWaterMark
+✅ testPendingAckLowWaterMark
```
-### ✔️ org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest
```
-✔️ commitTxnTest
-✔️ abortTxnTest
-✖️ commitTxnTest
+✅ commitTxnTest
+✅ abortTxnTest
+⚪ commitTxnTest
```
-### ✔️ org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest
+### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest
```
-✔️ testClientStart
-✔️ testCommitAndAbort
-✔️ testNewTxn
+✅ testClientStart
+✅ testCommitAndAbort
+✅ testNewTxn
```
-### ✔️ org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest
+### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest
```
-✔️ testTransactionMetaStoreAssignAndFailover
+✅ testTransactionMetaStoreAssignAndFailover
```
-### ✔️ org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest
+### ✅ org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest
```
-✖️ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
-✔️ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
-✔️ txnAckTestBatchAndSharedSubMemoryDeleteTest
+⚪ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
+✅ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
+✅ txnAckTestBatchAndSharedSubMemoryDeleteTest
```
-### ✔️ org.apache.pulsar.broker.transaction.TransactionConsumeTest
+### ✅ org.apache.pulsar.broker.transaction.TransactionConsumeTest
```
-✔️ noSortedTest
-✔️ sortedTest
+✅ noSortedTest
+✅ sortedTest
```
-### ✔️ org.apache.pulsar.broker.web.RestExceptionTest
+### ✅ org.apache.pulsar.broker.web.RestExceptionTest
```
-✔️ testRestException
-✔️ testWebApplicationException
-✔️ testOtherException
+✅ testRestException
+✅ testWebApplicationException
+✅ testOtherException
```
-### ✔️ org.apache.pulsar.broker.web.WebServiceTest
+### ✅ org.apache.pulsar.broker.web.WebServiceTest
```
-✔️ testTlsAuthDisallowInsecure
-✔️ testBrokerReady
-✔️ testDefaultClientVersion
-✔️ testTlsEnabled
-✔️ testTlsAuthAllowInsecure
-✔️ testSplitPath
-✔️ testMaxRequestSize
-✔️ testTlsDisabled
-✔️ testRateLimiting
+✅ testTlsAuthDisallowInsecure
+✅ testBrokerReady
+✅ testDefaultClientVersion
+✅ testTlsEnabled
+✅ testTlsAuthAllowInsecure
+✅ testSplitPath
+✅ testMaxRequestSize
+✅ testTlsDisabled
+✅ testRateLimiting
```
-### ✔️ org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest
+### ✅ org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest
```
-✔️ testAuthorizedUserAsOriginalPrincipal
-✔️ testSuperUserCantListNamespaces
-✔️ testPersistentList
-✔️ testSuperUserCanListTenants
+✅ testAuthorizedUserAsOriginalPrincipal
+✅ testSuperUserCantListNamespaces
+✅ testPersistentList
+✅ testSuperUserCanListTenants
```
-### ✔️ org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest
```
-✔️ testSerializationEmpty
-✔️ testSerialization1
-✔️ testSerializationNull
-✔️ testSerialization2
+✅ testSerializationEmpty
+✅ testSerialization1
+✅ testSerializationNull
+✅ testSerialization2
```
-### ✔️ org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest
```
-✔️ testBatchMessageIndexAckForExclusiveSubscription
-✔️ testBatchMessageIndexAckForSharedSubscription
-✔️ testBatchMessageIndexAckForExclusiveSubscription
-✔️ testBatchMessageIndexAckForSharedSubscription
+✅ testBatchMessageIndexAckForExclusiveSubscription
+✅ testBatchMessageIndexAckForSharedSubscription
+✅ testBatchMessageIndexAckForExclusiveSubscription
+✅ testBatchMessageIndexAckForSharedSubscription
```
-### ✔️ org.apache.pulsar.client.impl.BatchMessageIndexAckTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckTest
```
-✔️ testBatchMessageIndexAckForSharedSubscription
-✔️ testBatchMessageIndexAckForSharedSubscription
-✔️ testDoNotRecycleAckSetMultipleTimes
-✔️ testBatchMessageIndexAckForExclusiveSubscription
-✔️ testBatchMessageIndexAckForExclusiveSubscription
+✅ testBatchMessageIndexAckForSharedSubscription
+✅ testBatchMessageIndexAckForSharedSubscription
+✅ testDoNotRecycleAckSetMultipleTimes
+✅ testBatchMessageIndexAckForExclusiveSubscription
+✅ testBatchMessageIndexAckForExclusiveSubscription
```
-### ✔️ org.apache.pulsar.client.impl.BrokerClientIntegrationTest
+### ✅ org.apache.pulsar.client.impl.BrokerClientIntegrationTest
```
-✔️ testDisconnectClientWithoutClosingConnection
-✔️ testResetCursor
-✔️ testResetCursor
-✔️ testCloseBrokerService
-✔️ testUnsupportedBatchMessageConsumer
-✔️ testAvroSchemaProducerConsumerWithSpecifiedReaderAndWriter
-✔️ testJsonSchemaProducerConsumerWithSpecifiedReaderAndWriter
-✔️ testOperationTimeout
-✔️ testCleanProducer
-✔️ testUnsupportedBatchMessageConsumer
-✔️ testCloseConnectionOnBrokerRejectedRequest
-✔️ testAddEntryOperationTimeout
-✔️ testInvalidDynamicConfiguration
-✔️ testMaxConcurrentTopicLoading
-✔️ testCloseConnectionOnInternalServerError
+✅ testDisconnectClientWithoutClosingConnection
+✅ testResetCursor
+✅ testResetCursor
+✅ testCloseBrokerService
+✅ testUnsupportedBatchMessageConsumer
+✅ testAvroSchemaProducerConsumerWithSpecifiedReaderAndWriter
+✅ testJsonSchemaProducerConsumerWithSpecifiedReaderAndWriter
+✅ testOperationTimeout
+✅ testCleanProducer
+✅ testUnsupportedBatchMessageConsumer
+✅ testCloseConnectionOnBrokerRejectedRequest
+✅ testAddEntryOperationTimeout
+✅ testInvalidDynamicConfiguration
+✅ testMaxConcurrentTopicLoading
+✅ testCloseConnectionOnInternalServerError
```
-### ✔️ org.apache.pulsar.client.impl.CompactedOutBatchMessageTest
+### ✅ org.apache.pulsar.client.impl.CompactedOutBatchMessageTest
```
-✔️ testCompactedOutMessages
+✅ testCompactedOutMessages
```
-### ✔️ org.apache.pulsar.client.impl.ConsumerAckResponseTest
+### ✅ org.apache.pulsar.client.impl.ConsumerAckResponseTest
```
-✔️ testAckResponse
+✅ testAckResponse
```
-### ✔️ org.apache.pulsar.client.impl.ConsumerConfigurationTest
-```
-✔️ testReadCompactNonPersistentExclusive
-✔️ testReadCompactPersistentExclusive
-✔️ testReadCompactPersistentFailover
-✔️ testReadCompactPersistentShared
-```
-### ✔️ org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate
-```
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-✔️ testConsumerDedup
-```
-### ✔️ org.apache.pulsar.client.impl.ConsumerUnsubscribeTest
-```
-✔️ testConsumerUnsubscribeReference
-```
-### ✔️ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth
-```
-✔️ testTlsClientAuthOverHTTPProtocol
-✔️ testTlsClientAuthOverBinaryProtocol
-✔️ testTlsLargeSizeMessage
-```
-### ✔️ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth
-```
-✔️ testTlsClientAuthOverHTTPProtocol
-✔️ testTlsClientAuthOverBinaryProtocol
-✔️ testTlsLargeSizeMessage
-```
-### ✔️ org.apache.pulsar.client.impl.KeyStoreTlsTest
-```
-✔️ testValidate
-```
-### ✔️ org.apache.pulsar.client.impl.MessageChecksumTest
-```
-✔️ testChecksumCompatibilityInMixedVersionBrokerCluster
-✔️ testTamperingMessageIsDetected
-✔️ testChecksumCompatibilityInMixedVersionBrokerCluster
-```
-### ✔️ org.apache.pulsar.client.impl.MessageChunkingTest
-```
-✔️ testPublishWithFailure
-✔️ testInvalidUseCaseForChunking
-✔️ testLargeMessage
-✔️ testExpireIncompleteChunkMessage
-✔️ testInvalidConfig
-✔️ testLargeMessageAckTimeOut
-✔️ testLargeMessageAckTimeOut
-✔️ testLargeMessage
-✖️ testMaxPendingChunkMessages
-```
-### ✔️ org.apache.pulsar.client.impl.MessageParserTest
-```
-✔️ testWithoutBatches
-✔️ testWithBatches
-```
-### ✔️ org.apache.pulsar.client.impl.MultiTopicsReaderTest
-```
-✔️ testReadMessageWithBatchingWithMessageInclusive
-✔️ testKeyHashRangeReader
-✔️ testRemoveSubscriptionForReaderNeedRemoveCursor
-✔️ testReadMessageWithBatching
-✔️ testReadMessageWithoutBatchingWithMessageInclusive
-✔️ testMultiReaderSeek
-✔️ testReadMessageWithoutBatching
-✔️ testReaderWithTimeLong
-```
-### ✔️ org.apache.pulsar.client.impl.NegativeAcksTest
-```
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-✔️ testNegativeAcks
-```
-### ✔️ org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest
-```
-✔️ testStartEmptyPatternConsumer
-✔️ testBinaryProtoToGetTopicsOfNamespaceAll
-✔️ testPatternTopicsSubscribeWithBuilderFail
-✔️ testPubRateOnNonPersistent
-✔️ testTopicDeletion
-✔️ testAutoUnbubscribePatternConsumer
-✔️ testTopicsPatternFilter
-✔️ testBinaryProtoToGetTopicsOfNamespaceNonPersistent
-✔️ testBinaryProtoToGetTopicsOfNamespacePersistent
-✔️ testTopicsListMinus
-✔️ testAutoSubscribePatternConsumer
-```
-### ✔️ org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest
-```
-✔️ testSharedAckedNormalTopic
-✔️ testUnAckedMessageTrackerSize
-✔️ testSharedAckedPartitionedTopic
-✔️ testExclusiveAckedNormalTopic
-✔️ testFailoverAckedNormalTopic
-```
-### ✔️ org.apache.pulsar.client.impl.PulsarMultiHostClientTest
-```
-✔️ testMultiHostUrlRetrySuccess
-✔️ testGetPartitionedTopicDataTimeout
-✔️ testGetPartitionedTopicMetaData
-```
-### ✔️ org.apache.pulsar.client.impl.RawMessageSerDeserTest
-```
-✔️ testSerializationAndDeserialization
-```
-### ✔️ org.apache.pulsar.client.impl.SchemaDeleteTest
-```
-✔️ createTopicDeleteTopicCreateTopic
-```
-### ✔️ org.apache.pulsar.client.impl.SequenceIdWithErrorTest
-```
-✔️ testCheckSequenceId
-✔️ testDeleteTopicWithMissingData
-✔️ testTopicWithWildCardChar
-✖️ testCrashBrokerWithoutCursorLedgerLeak
-✖️ testSkipCorruptDataLedger
-```
-### ✔️ org.apache.pulsar.client.impl.TopicDoesNotExistsTest
-```
-✔️ testCreateConsumerOnNotExistsTopic
-✔️ testCreateProducerOnNotExistsTopic
-```
-### ✔️ org.apache.pulsar.client.impl.TopicFromMessageTest
-```
-✔️ testSingleTopicConsumerNoBatchFullName
-✔️ testMultiTopicConsumerBatchShortName
-✔️ testSingleTopicConsumerNoBatchShortName
-✔️ testMultiTopicConsumerNoBatchShortName
-✔️ testSingleTopicConsumerBatchShortName
-```
-### ✔️ org.apache.pulsar.client.impl.TopicsConsumerImplTest
-```
-✔️ testTopicAutoUpdatePartitions
-✔️ testDifferentTopicsNameSubscribe
-✔️ testGetLastMessageId
-✔️ testConsumerUnackedRedelivery
-✔️ testSubscriptionMustCompleteWhenOperationTimeoutOnMultipleTopics
-✔️ testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions
-✔️ multiTopicsInDifferentNameSpace
-✔️ testDefaultBacklogTTL
-✔️ testGetConsumersAndGetTopics
-✔️ testSubscribeUnsubscribeSingleTopic
-✔️ testResubscribeSameTopic
-✔️ testSyncProducerAndConsumer
-✔️ testPartitionsUpdatesForMultipleTopics
-✔️ testTopicsNameSubscribeWithBuilderFail
-✔️ testMultiTopicsMessageListener
-✔️ testTopicNameValid
-✔️ testAsyncConsumer
-```
-### ✔️ org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest
-```
-✔️ testCheckUnAcknowledgedMessageTimer
-✔️ testExclusiveSingleAckedNormalTopic
-✔️ testFailoverSingleAckedPartitionedTopic
-✔️ testSharedSingleAckedPartitionedTopic
-✔️ testAckTimeoutMinValue
-✔️ testExclusiveCumulativeAckedNormalTopic
-✔️ testSingleMessageBatch
-```
-### ✔️ org.apache.pulsar.client.impl.ZeroQueueSizeTest
-```
-✔️ zeroQueueSizeSharedSubscription
-✔️ testPauseAndResume
-✔️ testZeroQueueSizeMessageRedeliveryForAsyncReceive
-✔️ zeroQueueSizeConsumerListener
-✔️ zeroQueueSizeFailoverSubscription
-✔️ validQueueSizeConfig
-✔️ zeroQueueSizeNormalConsumer
-✔️ zeroQueueSizeReceieveAsyncInCompatibility
-✔️ InvalidQueueSizeConfig
-✔️ testZeroQueueSizeMessageRedeliveryForListener
-✔️ testZeroQueueSizeMessageRedelivery
-✔️ zeroQueueSizePartitionedTopicInCompatibility
-✔️ testFailedZeroQueueSizeBatchMessage
-✔️ testPauseAndResumeWithUnloading
-```
-### ✔️ org.apache.pulsar.common.api.raw.RawMessageImplTest
-```
-✔️ testGetProperties
-```
-### ✔️ org.apache.pulsar.common.compression.CommandsTest
-```
-✔️ testChecksumSendCommand
-```
-### ✔️ org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest
-```
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-```
-### ✔️ org.apache.pulsar.common.compression.CompressorCodecTest
-```
-✔️ testCompressDecompress
-✔️ testMultpileUsages
-✔️ testMultpileUsages
-✔️ testCompressDecompress
-✔️ testMultpileUsages
-✔️ testCompressDecompress
-✔️ testMultpileUsages
-✔️ testCompressDecompress
-✔️ testDecompressFromSampleBuffer
-✔️ testDecompressReadonlyByteBuf
-✔️ testDecompressReadonlyByteBuf
-✔️ testCodecProvider
-✔️ testEmptyInput
-✔️ testEmptyInput
-✔️ testCompressDecompress
-✔️ testCodecProvider
-✔️ testDecompressFromSampleBuffer
-✔️ testMultpileUsages
-✔️ testCodecProvider
-✔️ testEmptyInput
-✔️ testDecompressReadonlyByteBuf
-✔️ testCompressDecompress
-✔️ testDecompressReadonlyByteBuf
-✔️ testCompressDecompress
-✔️ testCompressDecompress
-✔️ testMultpileUsages
-✔️ testEmptyInput
-✔️ testDecompressReadonlyByteBuf
-✔️ testDecompressFromSampleBuffer
-✔️ testDecompressFromSampleBuffer
-✔️ testDecompressFromSampleBuffer
-✔️ testDecompressReadonlyByteBuf
-✔️ testDecompressReadonlyByteBuf
-✔️ testMultpileUsages
-✔️ testCompressDecompress
-✔️ testCodecProvider
-✔️ testMultpileUsages
-✔️ testCompressDecompress
-✔️ testMultpileUsages
-✔️ testDecompressReadonlyByteBuf
-✔️ testEmptyInput
-✔️ testCodecProvider
-✔️ testDecompressReadonlyByteBuf
-✔️ testDecompressReadonlyByteBuf
-✔️ testMultpileUsages
-```
-### ✔️ org.apache.pulsar.common.compression.Crc32cChecksumTest
-```
-✔️ testCrc32cHardware
-✔️ testCrc32cDirectMemoryHardware
-✔️ testCrc32c
-✔️ testCrc32cSoftware
-✔️ testCrc32cIncremental
-✔️ testCrc32cIncrementalUsingProvider
-```
-### ✔️ org.apache.pulsar.common.lookup.data.LookupDataTest
-```
-✔️ testLoadReportSerialization
-✔️ testUrlEncoder
-✔️ serializeToJsonTest
-✔️ withConstructor
-```
-### ✔️ org.apache.pulsar.common.naming.MetadataTests
-```
-✔️ testInvalidMetadata
-✔️ testValidMetadata
-```
-### ✔️ org.apache.pulsar.common.naming.NamespaceBundlesTest
-```
-✔️ testConstructor
-✔️ testSplitBundleInTwo
-✔️ testsplitBundles
-✔️ testFindBundle
-✔️ testSplitBundleByFixBoundary
-```
-### ✔️ org.apache.pulsar.common.naming.NamespaceBundleTest
-```
-✔️ testIncludes
-✔️ testGetBundle
-✔️ testCompareTo
-✔️ testConstructor
-✔️ testToString
-✔️ testEquals
-```
-### ✔️ org.apache.pulsar.common.naming.NamespaceNameTest
-```
-✔️ namespace
-✔️ testNewScheme
-```
-### ✔️ org.apache.pulsar.common.naming.ServiceConfigurationTest
-```
-✔️ testOptionalSettingPresent
-✔️ testOptionalSettingEmpty
-✔️ testInit
-✔️ testInitFailure
+### ✅ org.apache.pulsar.client.impl.ConsumerConfigurationTest
+```
+✅ testReadCompactNonPersistentExclusive
+✅ testReadCompactPersistentExclusive
+✅ testReadCompactPersistentFailover
+✅ testReadCompactPersistentShared
+```
+### ✅ org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate
+```
+✅ testConsumerDedup
+✅ testConsumerDedup
+✅ testConsumerDedup
+✅ testConsumerDedup
+✅ testConsumerDedup
+✅ testConsumerDedup
+✅ testConsumerDedup
+```
+### ✅ org.apache.pulsar.client.impl.ConsumerUnsubscribeTest
+```
+✅ testConsumerUnsubscribeReference
+```
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth
+```
+✅ testTlsClientAuthOverHTTPProtocol
+✅ testTlsClientAuthOverBinaryProtocol
+✅ testTlsLargeSizeMessage
+```
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth
+```
+✅ testTlsClientAuthOverHTTPProtocol
+✅ testTlsClientAuthOverBinaryProtocol
+✅ testTlsLargeSizeMessage
+```
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsTest
+```
+✅ testValidate
+```
+### ✅ org.apache.pulsar.client.impl.MessageChecksumTest
+```
+✅ testChecksumCompatibilityInMixedVersionBrokerCluster
+✅ testTamperingMessageIsDetected
+✅ testChecksumCompatibilityInMixedVersionBrokerCluster
+```
+### ✅ org.apache.pulsar.client.impl.MessageChunkingTest
+```
+✅ testPublishWithFailure
+✅ testInvalidUseCaseForChunking
+✅ testLargeMessage
+✅ testExpireIncompleteChunkMessage
+✅ testInvalidConfig
+✅ testLargeMessageAckTimeOut
+✅ testLargeMessageAckTimeOut
+✅ testLargeMessage
+⚪ testMaxPendingChunkMessages
+```
+### ✅ org.apache.pulsar.client.impl.MessageParserTest
+```
+✅ testWithoutBatches
+✅ testWithBatches
+```
+### ✅ org.apache.pulsar.client.impl.MultiTopicsReaderTest
+```
+✅ testReadMessageWithBatchingWithMessageInclusive
+✅ testKeyHashRangeReader
+✅ testRemoveSubscriptionForReaderNeedRemoveCursor
+✅ testReadMessageWithBatching
+✅ testReadMessageWithoutBatchingWithMessageInclusive
+✅ testMultiReaderSeek
+✅ testReadMessageWithoutBatching
+✅ testReaderWithTimeLong
+```
+### ✅ org.apache.pulsar.client.impl.NegativeAcksTest
+```
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+✅ testNegativeAcks
+```
+### ✅ org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest
+```
+✅ testStartEmptyPatternConsumer
+✅ testBinaryProtoToGetTopicsOfNamespaceAll
+✅ testPatternTopicsSubscribeWithBuilderFail
+✅ testPubRateOnNonPersistent
+✅ testTopicDeletion
+✅ testAutoUnbubscribePatternConsumer
+✅ testTopicsPatternFilter
+✅ testBinaryProtoToGetTopicsOfNamespaceNonPersistent
+✅ testBinaryProtoToGetTopicsOfNamespacePersistent
+✅ testTopicsListMinus
+✅ testAutoSubscribePatternConsumer
+```
+### ✅ org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest
+```
+✅ testSharedAckedNormalTopic
+✅ testUnAckedMessageTrackerSize
+✅ testSharedAckedPartitionedTopic
+✅ testExclusiveAckedNormalTopic
+✅ testFailoverAckedNormalTopic
+```
+### ✅ org.apache.pulsar.client.impl.PulsarMultiHostClientTest
+```
+✅ testMultiHostUrlRetrySuccess
+✅ testGetPartitionedTopicDataTimeout
+✅ testGetPartitionedTopicMetaData
+```
+### ✅ org.apache.pulsar.client.impl.RawMessageSerDeserTest
+```
+✅ testSerializationAndDeserialization
+```
+### ✅ org.apache.pulsar.client.impl.SchemaDeleteTest
+```
+✅ createTopicDeleteTopicCreateTopic
+```
+### ✅ org.apache.pulsar.client.impl.SequenceIdWithErrorTest
+```
+✅ testCheckSequenceId
+✅ testDeleteTopicWithMissingData
+✅ testTopicWithWildCardChar
+⚪ testCrashBrokerWithoutCursorLedgerLeak
+⚪ testSkipCorruptDataLedger
+```
+### ✅ org.apache.pulsar.client.impl.TopicDoesNotExistsTest
+```
+✅ testCreateConsumerOnNotExistsTopic
+✅ testCreateProducerOnNotExistsTopic
+```
+### ✅ org.apache.pulsar.client.impl.TopicFromMessageTest
+```
+✅ testSingleTopicConsumerNoBatchFullName
+✅ testMultiTopicConsumerBatchShortName
+✅ testSingleTopicConsumerNoBatchShortName
+✅ testMultiTopicConsumerNoBatchShortName
+✅ testSingleTopicConsumerBatchShortName
+```
+### ✅ org.apache.pulsar.client.impl.TopicsConsumerImplTest
+```
+✅ testTopicAutoUpdatePartitions
+✅ testDifferentTopicsNameSubscribe
+✅ testGetLastMessageId
+✅ testConsumerUnackedRedelivery
+✅ testSubscriptionMustCompleteWhenOperationTimeoutOnMultipleTopics
+✅ testConsumerDistributionInFailoverSubscriptionWhenUpdatePartitions
+✅ multiTopicsInDifferentNameSpace
+✅ testDefaultBacklogTTL
+✅ testGetConsumersAndGetTopics
+✅ testSubscribeUnsubscribeSingleTopic
+✅ testResubscribeSameTopic
+✅ testSyncProducerAndConsumer
+✅ testPartitionsUpdatesForMultipleTopics
+✅ testTopicsNameSubscribeWithBuilderFail
+✅ testMultiTopicsMessageListener
+✅ testTopicNameValid
+✅ testAsyncConsumer
+```
+### ✅ org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest
+```
+✅ testCheckUnAcknowledgedMessageTimer
+✅ testExclusiveSingleAckedNormalTopic
+✅ testFailoverSingleAckedPartitionedTopic
+✅ testSharedSingleAckedPartitionedTopic
+✅ testAckTimeoutMinValue
+✅ testExclusiveCumulativeAckedNormalTopic
+✅ testSingleMessageBatch
+```
+### ✅ org.apache.pulsar.client.impl.ZeroQueueSizeTest
+```
+✅ zeroQueueSizeSharedSubscription
+✅ testPauseAndResume
+✅ testZeroQueueSizeMessageRedeliveryForAsyncReceive
+✅ zeroQueueSizeConsumerListener
+✅ zeroQueueSizeFailoverSubscription
+✅ validQueueSizeConfig
+✅ zeroQueueSizeNormalConsumer
+✅ zeroQueueSizeReceieveAsyncInCompatibility
+✅ InvalidQueueSizeConfig
+✅ testZeroQueueSizeMessageRedeliveryForListener
+✅ testZeroQueueSizeMessageRedelivery
+✅ zeroQueueSizePartitionedTopicInCompatibility
+✅ testFailedZeroQueueSizeBatchMessage
+✅ testPauseAndResumeWithUnloading
+```
+### ✅ org.apache.pulsar.common.api.raw.RawMessageImplTest
+```
+✅ testGetProperties
+```
+### ✅ org.apache.pulsar.common.compression.CommandsTest
+```
+✅ testChecksumSendCommand
+```
+### ✅ org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest
+```
+✅ testCompressDecompress
+✅ testCompressDecompress
+✅ testCompressDecompress
+✅ testCompressDecompress
+✅ testCompressDecompress
+✅ testCompressDecompress
+```
+### ✅ org.apache.pulsar.common.compression.CompressorCodecTest
+```
+✅ testCompressDecompress
+✅ testMultpileUsages
+✅ testMultpileUsages
+✅ testCompressDecompress
+✅ testMultpileUsages
+✅ testCompressDecompress
+✅ testMultpileUsages
+✅ testCompressDecompress
+✅ testDecompressFromSampleBuffer
+✅ testDecompressReadonlyByteBuf
+✅ testDecompressReadonlyByteBuf
+✅ testCodecProvider
+✅ testEmptyInput
+✅ testEmptyInput
+✅ testCompressDecompress
+✅ testCodecProvider
+✅ testDecompressFromSampleBuffer
+✅ testMultpileUsages
+✅ testCodecProvider
+✅ testEmptyInput
+✅ testDecompressReadonlyByteBuf
+✅ testCompressDecompress
+✅ testDecompressReadonlyByteBuf
+✅ testCompressDecompress
+✅ testCompressDecompress
+✅ testMultpileUsages
+✅ testEmptyInput
+✅ testDecompressReadonlyByteBuf
+✅ testDecompressFromSampleBuffer
+✅ testDecompressFromSampleBuffer
+✅ testDecompressFromSampleBuffer
+✅ testDecompressReadonlyByteBuf
+✅ testDecompressReadonlyByteBuf
+✅ testMultpileUsages
+✅ testCompressDecompress
+✅ testCodecProvider
+✅ testMultpileUsages
+✅ testCompressDecompress
+✅ testMultpileUsages
+✅ testDecompressReadonlyByteBuf
+✅ testEmptyInput
+✅ testCodecProvider
+✅ testDecompressReadonlyByteBuf
+✅ testDecompressReadonlyByteBuf
+✅ testMultpileUsages
+```
+### ✅ org.apache.pulsar.common.compression.Crc32cChecksumTest
+```
+✅ testCrc32cHardware
+✅ testCrc32cDirectMemoryHardware
+✅ testCrc32c
+✅ testCrc32cSoftware
+✅ testCrc32cIncremental
+✅ testCrc32cIncrementalUsingProvider
+```
+### ✅ org.apache.pulsar.common.lookup.data.LookupDataTest
+```
+✅ testLoadReportSerialization
+✅ testUrlEncoder
+✅ serializeToJsonTest
+✅ withConstructor
+```
+### ✅ org.apache.pulsar.common.naming.MetadataTests
+```
+✅ testInvalidMetadata
+✅ testValidMetadata
+```
+### ✅ org.apache.pulsar.common.naming.NamespaceBundlesTest
+```
+✅ testConstructor
+✅ testSplitBundleInTwo
+✅ testsplitBundles
+✅ testFindBundle
+✅ testSplitBundleByFixBoundary
+```
+### ✅ org.apache.pulsar.common.naming.NamespaceBundleTest
+```
+✅ testIncludes
+✅ testGetBundle
+✅ testCompareTo
+✅ testConstructor
+✅ testToString
+✅ testEquals
+```
+### ✅ org.apache.pulsar.common.naming.NamespaceNameTest
+```
+✅ namespace
+✅ testNewScheme
+```
+### ✅ org.apache.pulsar.common.naming.ServiceConfigurationTest
+```
+✅ testOptionalSettingPresent
+✅ testOptionalSettingEmpty
+✅ testInit
+✅ testInitFailure
```
-### ✔️ org.apache.pulsar.common.naming.TopicNameTest
+### ✅ org.apache.pulsar.common.naming.TopicNameTest
```
-✔️ testShortTopicName
-✔️ topic
-✔️ testTopicNameWithoutCluster
-✔️ testDecodeEncode
+✅ testShortTopicName
+✅ topic
+✅ testTopicNameWithoutCluster
+✅ testDecodeEncode
```
-### ✔️ org.apache.pulsar.common.net.ServiceURITest
+### ✅ org.apache.pulsar.common.net.ServiceURITest
```
-✔️ testEmptyServiceUriString
-✔️ testMultipleHostsSemiColon
-✔️ testInvalidServiceUris
-✔️ testMultipleHostsWithoutHttpPorts
-✔️ testRootPath
-✔️ testMultipleHostsMixedPorts
-✔️ testMultipleHostsWithoutPulsarTlsPorts
-✔️ testUserInfoWithMultipleHosts
-✔️ testMultipleHostsComma
-✔️ testMultipleHostsMixed
-✔️ testUserInfo
-✔️ testIpv6UriWithoutPulsarPort
-✔️ testMultiIpv6Uri
-✔️ testMultiIpv6UriWithoutPulsarPort
-✔️ testEmptyPath
-✔️ testNullServiceUriString
-✔️ testNullServiceUriInstance
-✔️ testMissingServiceName
-✔️ testMultipleHostsWithoutHttpsPorts
-✔️ testMultipleHostsWithoutPulsarPorts
-✔️ testIpv6Uri
+✅ testEmptyServiceUriString
+✅ testMultipleHostsSemiColon
+✅ testInvalidServiceUris
+✅ testMultipleHostsWithoutHttpPorts
+✅ testRootPath
+✅ testMultipleHostsMixedPorts
+✅ testMultipleHostsWithoutPulsarTlsPorts
+✅ testUserInfoWithMultipleHosts
+✅ testMultipleHostsComma
+✅ testMultipleHostsMixed
+✅ testUserInfo
+✅ testIpv6UriWithoutPulsarPort
+✅ testMultiIpv6Uri
+✅ testMultiIpv6UriWithoutPulsarPort
+✅ testEmptyPath
+✅ testNullServiceUriString
+✅ testNullServiceUriInstance
+✅ testMissingServiceName
+✅ testMultipleHostsWithoutHttpsPorts
+✅ testMultipleHostsWithoutPulsarPorts
+✅ testIpv6Uri
```
-### ✔️ org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest
+### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest
```
-✔️ testAutoFailoverPolicyData
+✅ testAutoFailoverPolicyData
```
-### ✔️ org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest
+### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest
```
-✔️ testAutoFailoverPolicyType
+✅ testAutoFailoverPolicyType
```
-### ✔️ org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest
+### ✅ org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest
```
-✔️ testInvalidTopicType
-✔️ testNumPartitionsTooLow
-✔️ testNumPartitionsNotSet
-✔️ testValidOverrideNonPartitioned
-✔️ testNumPartitionsOnNonPartitioned
-✔️ testValidOverridePartitioned
+✅ testInvalidTopicType
+✅ testNumPartitionsTooLow
+✅ testNumPartitionsNotSet
+✅ testValidOverrideNonPartitioned
+✅ testNumPartitionsOnNonPartitioned
+✅ testValidOverridePartitioned
```
-### ✔️ org.apache.pulsar.common.policies.data.BacklogQuotaTest
+### ✅ org.apache.pulsar.common.policies.data.BacklogQuotaTest
```
-✔️ testBacklogQuotaIdentity
+✅ testBacklogQuotaIdentity
```
-### ✔️ org.apache.pulsar.common.policies.data.ClusterDataTest
+### ✅ org.apache.pulsar.common.policies.data.ClusterDataTest
```
-✔️ simple
+✅ simple
```
-### ✔️ org.apache.pulsar.common.policies.data.ConsumerStatsTest
+### ✅ org.apache.pulsar.common.policies.data.ConsumerStatsTest
```
-✔️ testConsumerStats
+✅ testConsumerStats
```
-### ✔️ org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest
+### ✅ org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest
```
-✔️ testDecodeFailed
-✔️ testEncodeDecodeSuccessfully
+✅ testDecodeFailed
+✅ testEncodeDecodeSuccessfully
```
-### ✔️ org.apache.pulsar.common.policies.data.LocalPolicesTest
+### ✅ org.apache.pulsar.common.policies.data.LocalPolicesTest
```
-✔️ testLocalPolices
+✅ testLocalPolices
```
-### ✔️ org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest
+### ✅ org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest
```
-✔️ testNamespaceIsolationData
+✅ testNamespaceIsolationData
```
-### ✔️ org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest
+### ✅ org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest
```
-✔️ testSerialization
+✅ testSerialization
```
-### ✔️ org.apache.pulsar.common.policies.data.OffloadPoliciesTest
+### ✅ org.apache.pulsar.common.policies.data.OffloadPoliciesTest
```
-✔️ testGcsConfiguration
-✔️ mergeTest
-✔️ compatibleWithConfigFileTest
-✔️ testCreateByProperties
-✔️ testS3Configuration
-✔️ oldPoliciesCompatibleTest
+✅ testGcsConfiguration
+✅ mergeTest
+✅ compatibleWithConfigFileTest
+✅ testCreateByProperties
+✅ testS3Configuration
+✅ oldPoliciesCompatibleTest
```
-### ✔️ org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest
```
-✔️ testPartitionedTopicStats
+✅ testPartitionedTopicStats
```
-### ✔️ org.apache.pulsar.common.policies.data.PersistencePoliciesTest
+### ✅ org.apache.pulsar.common.policies.data.PersistencePoliciesTest
```
-✔️ testPersistencePolicies
+✅ testPersistencePolicies
```
-### ✔️ org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest
```
-✔️ testPersistentOfflineTopicStats
+✅ testPersistentOfflineTopicStats
```
-### ✔️ org.apache.pulsar.common.policies.data.PersistentTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PersistentTopicStatsTest
```
-✔️ testPersistentTopicStatsAggregation
-✔️ testPersistentTopicStats
+✅ testPersistentTopicStatsAggregation
+✅ testPersistentTopicStats
```
-### ✔️ org.apache.pulsar.common.policies.data.PoliciesDataTest
+### ✅ org.apache.pulsar.common.policies.data.PoliciesDataTest
```
-✔️ propertyAdmin
-✔️ policies
-✔️ bundlesData
-✔️ bundlesPolicies
+✅ propertyAdmin
+✅ policies
+✅ bundlesData
+✅ bundlesPolicies
```
-### ✔️ org.apache.pulsar.common.policies.data.PublisherStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PublisherStatsTest
```
-✔️ testPublisherStats
-✔️ testPublisherStatsAggregation
+✅ testPublisherStats
+✅ testPublisherStatsAggregation
```
-### ✔️ org.apache.pulsar.common.policies.data.ReplicatorStatsTest
+### ✅ org.apache.pulsar.common.policies.data.ReplicatorStatsTest
```
-✔️ testReplicatorStatsAdd
-✔️ testReplicatorStatsNull
+✅ testReplicatorStatsAdd
+✅ testReplicatorStatsNull
```
-### ✔️ org.apache.pulsar.common.policies.data.ResourceQuotaTest
+### ✅ org.apache.pulsar.common.policies.data.ResourceQuotaTest
```
-✔️ testResourceQuotaDefault
-✔️ testResourceQuotaEqual
+✅ testResourceQuotaDefault
+✅ testResourceQuotaEqual
```
-### ✔️ org.apache.pulsar.common.policies.data.RetentionPolicesTest
+### ✅ org.apache.pulsar.common.policies.data.RetentionPolicesTest
```
-✔️ testRetentionPolices
+✅ testRetentionPolices
```
-### ✔️ org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest
+### ✅ org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest
```
-✔️ testAutoFailoverPolicyFactory
+✅ testAutoFailoverPolicyFactory
```
-### ✔️ org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest
+### ✅ org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest
```
-✔️ testMinAvailablePolicty
+✅ testMinAvailablePolicty
```
-### ✔️ org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest
+### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest
```
-✔️ testBrokerAssignment
-✔️ testGetNamespaceIsolationPolicyByName
-✔️ testDeletePolicy
-✔️ testSetPolicy
-✔️ testJsonSerialization
-✔️ testDefaultConstructor
-✔️ testGetNamespaceIsolationPolicyByNamespace
+✅ testBrokerAssignment
+✅ testGetNamespaceIsolationPolicyByName
+✅ testDeletePolicy
+✅ testSetPolicy
+✅ testJsonSerialization
+✅ testDefaultConstructor
+✅ testGetNamespaceIsolationPolicyByNamespace
```
-### ✔️ org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest
+### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest
```
-✔️ testFindBrokers
-✔️ testGetSecondaryBrokers
-✔️ testShouldFailover
-✔️ testGetPrimaryBrokers
-✔️ testGetAvailablePrimaryBrokers
-✔️ testConstructor
-✔️ testIsPrimaryOrSecondaryBroker
+✅ testFindBrokers
+✅ testGetSecondaryBrokers
+✅ testShouldFailover
+✅ testGetPrimaryBrokers
+✅ testGetAvailablePrimaryBrokers
+✅ testConstructor
+✅ testIsPrimaryOrSecondaryBroker
```
-### ✔️ org.apache.pulsar.common.protocol.ByteBufPairTest
+### ✅ org.apache.pulsar.common.protocol.ByteBufPairTest
```
-✔️ testEncoder
-✔️ testDoubleByteBuf
+✅ testEncoder
+✅ testDoubleByteBuf
```
-### ✔️ org.apache.pulsar.common.protocol.CommandUtilsTests
+### ✅ org.apache.pulsar.common.protocol.CommandUtilsTests
```
-✔️ testSkipBrokerEntryMetadata
-✔️ testPeekBrokerEntryMetadata
-✔️ testParseBrokerEntryMetadata
-✔️ testMetadataFromCommandSubscribe
-✔️ testMetadataFromCommandProducer
-✔️ testAddBrokerEntryMetadata
-✔️ testByteBufComposite
+✅ testSkipBrokerEntryMetadata
+✅ testPeekBrokerEntryMetadata
+✅ testParseBrokerEntryMetadata
+✅ testMetadataFromCommandSubscribe
+✅ testMetadataFromCommandProducer
+✅ testAddBrokerEntryMetadata
+✅ testByteBufComposite
```
-### ✔️ org.apache.pulsar.common.protocol.MarkersTest
+### ✅ org.apache.pulsar.common.protocol.MarkersTest
```
-✔️ testSnapshot
-✔️ testTxnAbortMarker
-✔️ testUpdate
-✔️ testTxnCommitMarker
-✔️ testSnapshotRequest
-✔️ testSnapshotResponse
+✅ testSnapshot
+✅ testTxnAbortMarker
+✅ testUpdate
+✅ testTxnCommitMarker
+✅ testSnapshotRequest
+✅ testSnapshotResponse
```
-### ✔️ org.apache.pulsar.common.protocol.PulsarDecoderTest
+### ✅ org.apache.pulsar.common.protocol.PulsarDecoderTest
```
-✔️ testChannelRead
+✅ testChannelRead
```
-### ✔️ org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest
+### ✅ org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest
```
-✔️ testInvokeJVMInternals
+✅ testInvokeJVMInternals
```
-### ✔️ org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest
+### ✅ org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest
```
-✔️ testResetWords
-✔️ testRecycle
+✅ testResetWords
+✅ testRecycle
```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclableTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclableTest
```
-✔️ testRecycle
-✔️ testGenerateByBitSet
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest
-```
-✔️ testRehashingWithDeletes
-✔️ concurrentInsertionsAndReads
-✔️ testRemove
-✔️ testRehashing
-✔️ simpleInsertions
-✔️ testComputeIfAbsent
-✔️ testConstructor
-✔️ testPutIfAbsent
-✔️ testIteration
-✔️ testHashConflictWithDeletion
-✔️ concurrentInsertions
-✔️ stressConcurrentInsertionsAndReads
-✔️ testNegativeUsedBucketCount
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest
-```
-✔️ concurrentInsertionsAndReads
-✔️ testEqualsObjects
-✔️ testIfRemoval
-✔️ testRehashing
-✔️ testToString
-✔️ testRemove
-✔️ testItems
-✔️ testRehashingWithDeletes
-✔️ testHashConflictWithDeletion
-✔️ testIteration
-✔️ simpleInsertions
-✔️ testRehashingRemoval
-✔️ testRemoval
-✔️ testConstructor
-✔️ concurrentInsertions
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest
-```
-✔️ testRemove
-✔️ simpleInsertions
-✔️ testPutIfAbsent
-✔️ concurrentInsertions
-✔️ testHashConflictWithDeletion
-✔️ testRehashingWithDeletes
-✔️ testComputeIfAbsent
-✔️ testRehashing
-✔️ testIteration
-✔️ testEqualsKeys
-✔️ concurrentInsertionsAndReads
-✔️ testConstructor
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest
-```
-✔️ concurrentInsertions
-✔️ testRehashing
-✔️ testRemoval
-✔️ testEqualsObjects
-✔️ testHashConflictWithDeletion
-✔️ testConstructor
-✔️ concurrentInsertionsAndReads
-✔️ testIteration
-✔️ simpleInsertions
-✔️ testRehashingWithDeletes
-✔️ testRemove
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest
-```
-✔️ testAddForDifferentKey
-✔️ testToString
-✔️ testCacheFlagConflict
-✔️ testDeleteWithLeastMost
-✔️ testDeleteForDifferentKey
-✔️ testLastRange
-✔️ testAddCompareCompareWithGuava
-✔️ testSpanWithGuava
-✔️ testDeleteCompareWithGuava
-✔️ testFirstRange
-✔️ testAddForSameKey
-✔️ testDeleteWithAtMost
-✔️ testRangeContaining
-```
-### ✔️ org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest
-```
-✔️ concurrentInsertions
-✔️ testIfRemoval
-✔️ testRemoval
-✔️ testRemove
-✔️ testItems
-✔️ testEqualsObjects
-✔️ simpleInsertions
-✔️ testIteration
-✔️ testToString
-```
-### ✔️ org.apache.pulsar.common.util.collections.FieldParserTest
-```
-✔️ testUpdateObject
-✔️ testConversion
-```
-### ✔️ org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest
-```
-✔️ removeTest
-✔️ growArray
-✔️ pollTimeout
-✔️ simple
-✔️ pollTimeout2
-✔️ blockingTake
-```
-### ✔️ org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest
-```
-✔️ testItems
-✔️ testRemove
-✔️ testExpandQueue
-✔️ testInsertAndRemove
-✔️ testEqualsObjects
-✔️ testExpandRemoval
-✔️ testIteration
-✔️ simpleInsertions
-✔️ concurrentInsertions
-✔️ testConstructor
-✔️ testSetWithDuplicateInsert
-✔️ testExpandWithDeletes
-✔️ concurrentInsertionsAndReads
-✔️ testRemoval
-✔️ testIfRemoval
-```
-### ✔️ org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest
-```
-✔️ testQueue
-✔️ testCheckForEmpty
-✔️ testCompareWithSamePrefix
+✅ testRecycle
+✅ testGenerateByBitSet
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest
+```
+✅ testRehashingWithDeletes
+✅ concurrentInsertionsAndReads
+✅ testRemove
+✅ testRehashing
+✅ simpleInsertions
+✅ testComputeIfAbsent
+✅ testConstructor
+✅ testPutIfAbsent
+✅ testIteration
+✅ testHashConflictWithDeletion
+✅ concurrentInsertions
+✅ stressConcurrentInsertionsAndReads
+✅ testNegativeUsedBucketCount
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest
+```
+✅ concurrentInsertionsAndReads
+✅ testEqualsObjects
+✅ testIfRemoval
+✅ testRehashing
+✅ testToString
+✅ testRemove
+✅ testItems
+✅ testRehashingWithDeletes
+✅ testHashConflictWithDeletion
+✅ testIteration
+✅ simpleInsertions
+✅ testRehashingRemoval
+✅ testRemoval
+✅ testConstructor
+✅ concurrentInsertions
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest
+```
+✅ testRemove
+✅ simpleInsertions
+✅ testPutIfAbsent
+✅ concurrentInsertions
+✅ testHashConflictWithDeletion
+✅ testRehashingWithDeletes
+✅ testComputeIfAbsent
+✅ testRehashing
+✅ testIteration
+✅ testEqualsKeys
+✅ concurrentInsertionsAndReads
+✅ testConstructor
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest
+```
+✅ concurrentInsertions
+✅ testRehashing
+✅ testRemoval
+✅ testEqualsObjects
+✅ testHashConflictWithDeletion
+✅ testConstructor
+✅ concurrentInsertionsAndReads
+✅ testIteration
+✅ simpleInsertions
+✅ testRehashingWithDeletes
+✅ testRemove
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest
+```
+✅ testAddForDifferentKey
+✅ testToString
+✅ testCacheFlagConflict
+✅ testDeleteWithLeastMost
+✅ testDeleteForDifferentKey
+✅ testLastRange
+✅ testAddCompareCompareWithGuava
+✅ testSpanWithGuava
+✅ testDeleteCompareWithGuava
+✅ testFirstRange
+✅ testAddForSameKey
+✅ testDeleteWithAtMost
+✅ testRangeContaining
+```
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest
+```
+✅ concurrentInsertions
+✅ testIfRemoval
+✅ testRemoval
+✅ testRemove
+✅ testItems
+✅ testEqualsObjects
+✅ simpleInsertions
+✅ testIteration
+✅ testToString
+```
+### ✅ org.apache.pulsar.common.util.collections.FieldParserTest
+```
+✅ testUpdateObject
+✅ testConversion
+```
+### ✅ org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest
+```
+✅ removeTest
+✅ growArray
+✅ pollTimeout
+✅ simple
+✅ pollTimeout2
+✅ blockingTake
+```
+### ✅ org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest
+```
+✅ testItems
+✅ testRemove
+✅ testExpandQueue
+✅ testInsertAndRemove
+✅ testEqualsObjects
+✅ testExpandRemoval
+✅ testIteration
+✅ simpleInsertions
+✅ concurrentInsertions
+✅ testConstructor
+✅ testSetWithDuplicateInsert
+✅ testExpandWithDeletes
+✅ concurrentInsertionsAndReads
+✅ testRemoval
+✅ testIfRemoval
+```
+### ✅ org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest
+```
+✅ testQueue
+✅ testCheckForEmpty
+✅ testCompareWithSamePrefix
```
-### ✔️ org.apache.pulsar.common.util.FieldParserTest
+### ✅ org.apache.pulsar.common.util.FieldParserTest
```
-✔️ testMap
+✅ testMap
```
-### ✔️ org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest
+### ✅ org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest
```
-✔️ testFileNotModified
-✔️ testFileModified
-✔️ testFileModified
-✔️ testFileNotModified
-✔️ testFileModified
-✔️ testFileNotModified
+✅ testFileNotModified
+✅ testFileModified
+✅ testFileModified
+✅ testFileNotModified
+✅ testFileModified
+✅ testFileNotModified
```
-### ✔️ org.apache.pulsar.common.util.netty.ChannelFuturesTest
+### ✅ org.apache.pulsar.common.util.netty.ChannelFuturesTest
```
-✔️ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedAfter
-✔️ toCompletableFuture_shouldCompleteSuccessfully_channelFutureCompletedAfter
-✔️ toCompletableFuture_shouldCompleteSuccessfully_channelFutureCompletedBefore
-✔️ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedBefore
-✔️ toCompletableFuture_shouldRequireNonNullArgument
+✅ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedAfter
+✅ toCompletableFuture_shouldCompleteSuccessfully_channelFutureCompletedAfter
+✅ toCompletableFuture_shouldCompleteSuccessfully_channelFutureCompletedBefore
+✅ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedBefore
+✅ toCompletableFuture_shouldRequireNonNullArgument
```
-### ✔️ org.apache.pulsar.common.util.RateLimiterTest
+### ✅ org.apache.pulsar.common.util.RateLimiterTest
```
-✔️ testMultipleTryAcquire
-✔️ testRateLimiterWithPermitUpdater
-✔️ testTryAcquire
-✔️ testTryAcquireNoPermits
-✔️ testClose
-✔️ testResetRate
-✔️ testMultipleAcquire
-✔️ testAcquire
-✔️ testInvalidRenewTime
-✔️ testRateLimiterWithFunction
-✔️ testAcquireBlock
+✅ testMultipleTryAcquire
+✅ testRateLimiterWithPermitUpdater
+✅ testTryAcquire
+✅ testTryAcquireNoPermits
+✅ testClose
+✅ testResetRate
+✅ testMultipleAcquire
+✅ testAcquire
+✅ testInvalidRenewTime
+✅ testRateLimiterWithFunction
+✅ testAcquireBlock
```
-### ✔️ org.apache.pulsar.common.util.ReflectionsTest
+### ✅ org.apache.pulsar.common.util.ReflectionsTest
```
-✔️ testCreateInstanceNoNoArgConstructor
-✔️ testCreateInstanceConstructorThrowsException
-✔️ testCreateInstanceAbstractClass
-✔️ testCreateTypedInstanceUnassignableClass
-✔️ testCreateInstanceClassNotFound
-✔️ testCreateTypedInstanceConstructorThrowsException
-✔️ testClassExists
-✔️ testCreateTypedInstanceAbstractClass
-✔️ testCreateTypedInstanceClassNotFound
-✔️ testCreateTypedInstanceNoNoArgConstructor
-✔️ testLoadClass
-✔️ testClassInJarImplementsIface
+✅ testCreateInstanceNoNoArgConstructor
+✅ testCreateInstanceConstructorThrowsException
+✅ testCreateInstanceAbstractClass
+✅ testCreateTypedInstanceUnassignableClass
+✅ testCreateInstanceClassNotFound
+✅ testCreateTypedInstanceConstructorThrowsException
+✅ testClassExists
+✅ testCreateTypedInstanceAbstractClass
+✅ testCreateTypedInstanceClassNotFound
+✅ testCreateTypedInstanceNoNoArgConstructor
+✅ testLoadClass
+✅ testClassInJarImplementsIface
```
-### ✔️ org.apache.pulsar.common.util.RelativeTimeUtilTest
+### ✅ org.apache.pulsar.common.util.RelativeTimeUtilTest
```
-✔️ testParseRelativeTime
+✅ testParseRelativeTime
```
-### ✔️ org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest
+### ✅ org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest
```
-✔️ testRedirectUrlWithServerStarted
+✅ testRedirectUrlWithServerStarted
```
-### ✔️ org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest
```
-✔️ testAuthorizationWithAnonymousUser
-✔️ testAuthorization
+✅ testAuthorizationWithAnonymousUser
+✅ testAuthorization
```
-### ✔️ org.apache.pulsar.functions.worker.PulsarFunctionPublishTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionPublishTest
```
-✔️ testPulsarFunctionState
-✔️ testMultipleAddress
-✔️ testPulsarFunctionBKCleanup
+✅ testPulsarFunctionState
+✅ testMultipleAddress
+✅ testPulsarFunctionBKCleanup
```
-### ✔️ org.apache.pulsar.functions.worker.PulsarFunctionTlsTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionTlsTest
```
-✔️ testFunctionsCreation
+✅ testFunctionsCreation
```
-### ✔️ org.apache.pulsar.io.PulsarFunctionTlsTest
+### ✅ org.apache.pulsar.io.PulsarFunctionTlsTest
```
-✔️ testAuthorization
+✅ testAuthorization
```
-### ✔️ org.apache.pulsar.proxy.server.AdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.AdminProxyHandlerTest
```
-✔️ replayableProxyContentProviderTest
+✅ replayableProxyContentProviderTest
```
-### ✔️ org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest
```
-✔️ testAuthenticatedProxyAsNonAdmin
+✅ testAuthenticatedProxyAsNonAdmin
```
-### ✔️ org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest
+### ✅ org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest
```
-✔️ testFunctionWorkerRedirect
+✅ testFunctionWorkerRedirect
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyAdditionalServletTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAdditionalServletTest
```
-✔️ test
+✅ test
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest
```
-✔️ testTlsSyncProducerAndConsumer
+✅ testTlsSyncProducerAndConsumer
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyAuthenticationTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticationTest
```
-✔️ testAuthentication
+✅ testAuthentication
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest
+### ✅ org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest
```
-✔️ testInboundConnection
+✅ testInboundConnection
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest
+### ✅ org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest
```
-✔️ testSimpleProduceAndConsume
+✅ testSimpleProduceAndConsume
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest
+### ✅ org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest
```
-✔️ testForwardAuthData
+✅ testForwardAuthData
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest
+### ✅ org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest
```
-✔️ testProxyToEndsInSlash
-✔️ testStreaming
-✔️ testLongPath
-✔️ testLongPathInProxyTo
-✔️ testPathEndsInSlash
-✔️ testPathNotSpecified
-✔️ testTryingToUseExistingPath
-✔️ testMultipleRedirect
-✔️ testSingleRedirect
-✔️ testRedirectNotSpecified
+✅ testProxyToEndsInSlash
+✅ testStreaming
+✅ testLongPath
+✅ testLongPathInProxyTo
+✅ testPathEndsInSlash
+✅ testPathNotSpecified
+✅ testTryingToUseExistingPath
+✅ testMultipleRedirect
+✅ testSingleRedirect
+✅ testRedirectNotSpecified
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth
```
-✔️ testProducerFailed
-✔️ testPartitions
-✔️ testProducer
+✅ testProducerFailed
+✅ testPartitions
+✅ testProducer
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth
```
-✔️ testPartitions
-✔️ testProducerFailed
-✔️ testProducer
+✅ testPartitions
+✅ testProducerFailed
+✅ testProducer
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest
+### ✅ org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest
```
-✔️ testLookup
+✅ testLookup
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyParserTest
+### ✅ org.apache.pulsar.proxy.server.ProxyParserTest
```
-✔️ testRegexSubscription
-✔️ testProducerConsumer
-✔️ testProducer
-✔️ testPartitions
-✔️ testProtocolVersionAdvertisement
+✅ testRegexSubscription
+✅ testProducerConsumer
+✅ testProducer
+✅ testPartitions
+✅ testProtocolVersionAdvertisement
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest
+### ✅ org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest
```
-✔️ testIncorrectRoles
+✅ testIncorrectRoles
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyStatsTest
+### ✅ org.apache.pulsar.proxy.server.ProxyStatsTest
```
-✔️ testChangeLogLevel
-✔️ testConnectionsStats
-✔️ testTopicStats
+✅ testChangeLogLevel
+✅ testConnectionsStats
+✅ testTopicStats
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyTest
+### ✅ org.apache.pulsar.proxy.server.ProxyTest
```
-✔️ testPartitions
-✔️ testRegexSubscription
-✔️ testProtocolVersionAdvertisement
-✔️ testGetSchema
-✔️ testProducer
-✔️ testProducerConsumer
+✅ testPartitions
+✅ testRegexSubscription
+✅ testProtocolVersionAdvertisement
+✅ testGetSchema
+✅ testProducer
+✅ testProducerConsumer
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyTlsTest
+### ✅ org.apache.pulsar.proxy.server.ProxyTlsTest
```
-✔️ testProducer
-✔️ testPartitions
+✅ testProducer
+✅ testPartitions
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth
```
-✔️ testServiceStartup
+✅ testServiceStartup
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest
```
-✔️ testProxyAuthorization
+✅ testProxyAuthorization
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest
```
-✔️ tlsCiphersAndProtocols
-✔️ testTlsHostVerificationProxyToClient
-✔️ tlsCiphersAndProtocols
-✔️ testProxyAuthorization
-✔️ tlsCiphersAndProtocols
-✔️ testTlsHostVerificationProxyToBroker
-✔️ tlsCiphersAndProtocols
-✔️ tlsCiphersAndProtocols
-✔️ tlsCiphersAndProtocols
-✔️ testTlsHostVerificationProxyToBroker
-✔️ tlsCiphersAndProtocols
-✔️ testTlsHostVerificationProxyToClient
-✔️ tlsCiphersAndProtocols
+✅ tlsCiphersAndProtocols
+✅ testTlsHostVerificationProxyToClient
+✅ tlsCiphersAndProtocols
+✅ testProxyAuthorization
+✅ tlsCiphersAndProtocols
+✅ testTlsHostVerificationProxyToBroker
+✅ tlsCiphersAndProtocols
+✅ tlsCiphersAndProtocols
+✅ tlsCiphersAndProtocols
+✅ testTlsHostVerificationProxyToBroker
+✅ tlsCiphersAndProtocols
+✅ testTlsHostVerificationProxyToClient
+✅ tlsCiphersAndProtocols
```
-### ✔️ org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest
```
-✔️ testDiscoveryService
+✅ testDiscoveryService
```
-### ✔️ org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest
```
-✔️ testAuthWithRandoCert
-✔️ testAuthenticatedProxyAsAdmin
-✔️ testAuthenticatedProxyAsNonAdmin
+✅ testAuthWithRandoCert
+✅ testAuthenticatedProxyAsAdmin
+✅ testAuthenticatedProxyAsNonAdmin
```
-### ✔️ org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest
```
-✔️ testUnauthenticatedProxy
-✔️ testVipStatus
+✅ testUnauthenticatedProxy
+✅ testVipStatus
```
-### ✔️ org.apache.pulsar.PulsarBrokerStarterTest
+### ✅ org.apache.pulsar.PulsarBrokerStarterTest
```
-✔️ testMainRunBookieNoConfig
-✔️ testLoadConfigWithException
-✔️ testMainWithNoArgument
-✔️ testLoadBalancerConfig
-✔️ testGlobalZooKeeperConfig
-✔️ testMainRunBookieRecoveryNoConfig
-✔️ testLoadConfig
-✔️ testMainEnableRunBookieThroughBrokerConfig
-✔️ testMainRunBookieAndAutoRecoveryNoConfig
+✅ testMainRunBookieNoConfig
+✅ testLoadConfigWithException
+✅ testMainWithNoArgument
+✅ testLoadBalancerConfig
+✅ testGlobalZooKeeperConfig
+✅ testMainRunBookieRecoveryNoConfig
+✅ testLoadConfig
+✅ testMainEnableRunBookieThroughBrokerConfig
+✅ testMainRunBookieAndAutoRecoveryNoConfig
```
-### ✔️ org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest
+### ✅ org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest
```
-✔️ testConsumerCompatibilityCheckCanReadLastTest
-✔️ testConsumerWithNotCompatibilitySchema
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testConsumerCompatibilityCheckCanReadLastTest
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testSchemaComparison
-✔️ testConsumerCompatibilityCheckCanReadLastTest
-✔️ testConsumerCompatibilityReadAllCheckTest
-✔️ testConsumerWithNotCompatibilitySchema
-✔️ testIsAutoUpdateSchema
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testConsumerCompatibilityReadAllCheckTest
-✔️ testIsAutoUpdateSchema
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testConsumerWithNotCompatibilitySchema
-✔️ testIsAutoUpdateSchema
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testConsumerWithNotCompatibilitySchema
-✔️ testProducerSendWithOldSchemaAndConsumerCanRead
-✔️ testIsAutoUpdateSchema
-✔️ testIsAutoUpdateSchema
-✔️ testConsumerCompatibilityCheckCanReadLastTest
-✔️ testIsAutoUpdateSchema
+✅ testConsumerCompatibilityCheckCanReadLastTest
+✅ testConsumerWithNotCompatibilitySchema
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testConsumerCompatibilityCheckCanReadLastTest
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testSchemaComparison
+✅ testConsumerCompatibilityCheckCanReadLastTest
+✅ testConsumerCompatibilityReadAllCheckTest
+✅ testConsumerWithNotCompatibilitySchema
+✅ testIsAutoUpdateSchema
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testConsumerCompatibilityReadAllCheckTest
+✅ testIsAutoUpdateSchema
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testConsumerWithNotCompatibilitySchema
+✅ testIsAutoUpdateSchema
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testConsumerWithNotCompatibilitySchema
+✅ testProducerSendWithOldSchemaAndConsumerCanRead
+✅ testIsAutoUpdateSchema
+✅ testIsAutoUpdateSchema
+✅ testConsumerCompatibilityCheckCanReadLastTest
+✅ testIsAutoUpdateSchema
```
-### ✔️ org.apache.pulsar.schema.PartitionedTopicSchemaTest
+### ✅ org.apache.pulsar.schema.PartitionedTopicSchemaTest
```
-✔️ test
+✅ test
```
-### ✔️ org.apache.pulsar.schema.SchemaTest
+### ✅ org.apache.pulsar.schema.SchemaTest
```
-✔️ testIsUsingAvroSchemaParser
-✔️ testBytesSchemaDeserialize
-✔️ testMultiTopicSetSchemaProvider
+✅ testIsUsingAvroSchemaParser
+✅ testBytesSchemaDeserialize
+✅ testMultiTopicSetSchemaProvider
```
-### ✔️ org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest
+### ✅ org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest
```
-✔️ testServiceException
-✔️ testTopicInternalStats
+✅ testServiceException
+✅ testTopicInternalStats
```
-### ✔️ org.apache.pulsar.tests.EnumValuesDataProviderTest
+### ✅ org.apache.pulsar.tests.EnumValuesDataProviderTest
```
-✔️ shouldFailIfEnumParameterIsMissing
-✔️ testEnumValuesProvider
-✔️ testEnumValuesProvider
-✔️ shouldDetermineEnumValuesFromMethod
-✔️ shouldContainAllEnumValues
-✔️ testEnumValuesProvider
+✅ shouldFailIfEnumParameterIsMissing
+✅ testEnumValuesProvider
+✅ testEnumValuesProvider
+✅ shouldDetermineEnumValuesFromMethod
+✅ shouldContainAllEnumValues
+✅ testEnumValuesProvider
```
-### ✔️ org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest
```
-✔️ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
-✖️ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
-✖️ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
-✖️ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
-✖️ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
+✅ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
+⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
+⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
+⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
+⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
```
-### ✔️ org.apache.pulsar.tests.TestRetrySupportRetryTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportRetryTest
```
-✖️ shouldCallSetupBeforeRetrying
-✔️ shouldCallSetupBeforeRetrying
-✖️ shouldCallSetupBeforeRetrying
-✖️ shouldCallSetupBeforeRetrying
-✖️ shouldCallSetupBeforeRetrying
+⚪ shouldCallSetupBeforeRetrying
+✅ shouldCallSetupBeforeRetrying
+⚪ shouldCallSetupBeforeRetrying
+⚪ shouldCallSetupBeforeRetrying
+⚪ shouldCallSetupBeforeRetrying
```
-### ✔️ org.apache.pulsar.tests.TestRetrySupportSuccessTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportSuccessTest
```
-✔️ shouldCallSetupOnce1
-✔️ shouldCallSetupOnce3
-✔️ shouldCallSetupOnce2
+✅ shouldCallSetupOnce1
+✅ shouldCallSetupOnce3
+✅ shouldCallSetupOnce2
```
-### ✔️ org.apache.pulsar.tests.ThreadDumpUtilTest
+### ✅ org.apache.pulsar.tests.ThreadDumpUtilTest
```
-✔️ testHelp
-✔️ testThreadDump
+✅ testHelp
+✅ testThreadDump
```
-### ✔️ org.apache.pulsar.utils.SimpleTextOutputStreamTest
+### ✅ org.apache.pulsar.utils.SimpleTextOutputStreamTest
```
-✔️ testBooleanFormat
-✔️ testDoubleFormat
-✔️ testLongFormat
-✔️ testString
+✅ testBooleanFormat
+✅ testDoubleFormat
+✅ testLongFormat
+✅ testString
```
-### ✔️ org.apache.pulsar.utils.StatsOutputStreamTest
+### ✅ org.apache.pulsar.utils.StatsOutputStreamTest
```
-✔️ testLists
-✔️ testNamedObjects
-✔️ testNestedObjects
-✔️ testNamedLists
-✔️ testPairs
-✔️ testObjects
+✅ testLists
+✅ testNamedObjects
+✅ testNestedObjects
+✅ testNamedLists
+✅ testPairs
+✅ testObjects
```
-### ✔️ org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest
```
-✔️ unauthenticatedSocketTest
-✔️ authenticatedSocketTest
-✔️ statsTest
-✔️ anonymousSocketTest
+✅ unauthenticatedSocketTest
+✅ authenticatedSocketTest
+✅ statsTest
+✅ anonymousSocketTest
```
-### ✔️ org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest
```
-✔️ test
+✅ test
```
-### ✔️ org.apache.pulsar.websocket.proxy.ProxyConfigurationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyConfigurationTest
```
-✔️ configTest
-✔️ configTest
+✅ configTest
+✅ configTest
```
-### ✔️ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest
```
-✔️ socketTest
+✅ socketTest
```
-### ✔️ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest
```
-✔️ socketTest
+✅ socketTest
```
-### ✔️ org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest
+### ✅ org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest
```
-✔️ anonymousSocketTest
-✔️ authenticatedSocketTest
-✔️ statsTest
-✔️ unauthenticatedSocketTest
+✅ anonymousSocketTest
+✅ authenticatedSocketTest
+✅ statsTest
+✅ unauthenticatedSocketTest
```
\ No newline at end of file
diff --git a/__tests__/__outputs__/silent-notes-test-results.md b/__tests__/__outputs__/silent-notes-test-results.md
index de01928..7d4d4ac 100644
--- a/__tests__/__outputs__/silent-notes-test-results.md
+++ b/__tests__/__outputs__/silent-notes-test-results.md
@@ -1,136 +1,136 @@

-## ✔️ fixtures/external/SilentNotes.trx
+## ✅ fixtures/external/SilentNotes.trx
**79** tests were completed in **1s** with **67** passed, **0** failed and **12** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[VanillaCloudStorageClientTest.CloudStorageCredentialsTest](#r0s0)|6✔️|||30ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest](#r0s1)|2✔️||3✖️|101ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest](#r0s2)|4✔️||3✖️|166ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest](#r0s3)|2✔️|||7ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest](#r0s4)|1✔️||3✖️|40ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest](#r0s5)|1✔️||3✖️|15ms|
-|[VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest](#r0s6)|5✔️|||16ms|
-|[VanillaCloudStorageClientTest.CloudStorageTokenTest](#r0s7)|9✔️|||0ms|
-|[VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest](#r0s8)|3✔️|||3ms|
-|[VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest](#r0s9)|9✔️|||12ms|
-|[VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest](#r0s10)|5✔️|||13ms|
-|[VanillaCloudStorageClientTest.SecureStringExtensionsTest](#r0s11)|7✔️|||0ms|
-|[VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest](#r0s12)|13✔️|||43ms|
-### ✔️ VanillaCloudStorageClientTest.CloudStorageCredentialsTest
-```
-✔️ AreEqualWorksWithDifferentPassword
-✔️ AreEqualWorksWithSameContent
-✔️ CorrectlyConvertsSecureStringToString
-✔️ CorrectlyConvertsStringToSecureString
-✔️ ValidateAcceptsValidCredentials
-✔️ ValidateRejectsInvalidCredentials
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest
-```
-✔️ FileLifecycleWorks
-✖️ ReallyDoFetchToken
-✖️ ReallyDoOpenAuthorizationPageInBrowser
-✖️ ReallyDoRefreshToken
-✔️ ThrowsAccessDeniedExceptionWithInvalidToken
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest
-```
-✔️ FileLifecycleWorks
-✔️ SanitizeCredentials_ChangesInvalidPrefix
-✔️ SecureSslConnectionWorks
-✔️ ThrowsWithHttpInsteadOfFtp
-✖️ ThrowsWithInvalidPassword
-✖️ ThrowsWithInvalidUrl
-✖️ ThrowsWithInvalidUsername
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest
-```
-✔️ ChoosesCorrectUrlForGmxComEmail
-✔️ ChoosesCorrectUrlForGmxNetEmail
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest
-```
-✔️ FileLifecycleWorks
-✖️ ReallyDoFetchToken
-✖️ ReallyDoOpenAuthorizationPageInBrowser
-✖️ ReallyDoRefreshToken
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest
-```
-✔️ FileLifecycleWorks
-✖️ ReallyDoFetchToken
-✖️ ReallyDoOpenAuthorizationPageInBrowser
-✖️ ReallyDoRefreshToken
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest
-```
-✔️ FileLifecycleWorks
-✔️ ParseGmxWebdavResponseCorrectly
-✔️ ParseStratoWebdavResponseCorrectly
-✔️ ThrowsWithInvalidPath
-✔️ ThrowsWithInvalidUsername
-```
-### ✔️ VanillaCloudStorageClientTest.CloudStorageTokenTest
-```
-✔️ AreEqualWorksWithNullDate
-✔️ AreEqualWorksWithSameContent
-✔️ NeedsRefreshReturnsFalseForTokenFlow
-✔️ NeedsRefreshReturnsFalseIfNotExpired
-✔️ NeedsRefreshReturnsTrueIfExpired
-✔️ NeedsRefreshReturnsTrueIfNoExpirationDate
-✔️ SetExpiryDateBySecondsWorks
-✔️ SetExpiryDateBySecondsWorksWithNull
-✔️ SetExpiryDateBySecondsWorksWithVeryShortPeriod
-```
-### ✔️ VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest
-```
-✔️ ParsesAllErrorCodesCorrectly
-✔️ ParsesNullErrorCodeCorrectly
-✔️ ParsesUnknownErrorCodeCorrectly
-```
-### ✔️ VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest
-```
-✔️ BuildAuthorizationRequestUrlEscapesParameters
-✔️ BuildAuthorizationRequestUrlLeavesOutOptionalParameters
-✔️ BuildAuthorizationRequestUrlThrowsWithMissingRedirectUrlForTokenFlow
-✔️ BuildAuthorizationRequestUrlUsesAllParameters
-✔️ BuildAuthorizationRequestUrlUsesCodeVerifier
-✔️ ParseRealWorldDropboxRejectResponse
-✔️ ParseRealWorldDropboxSuccessResponse
-✔️ ParseRealWorldGoogleRejectResponse
-✔️ ParseRealWorldGoogleSuccessResponse
-```
-### ✔️ VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest
-```
-✔️ BuildOAuth2AuthorizationRequestUrlWorks
-✔️ FetchTokenCanInterpretGoogleResponse
-✔️ FetchTokenReturnsNullForDeniedAccess
-✔️ FetchTokenThrowsWithWrongState
-✔️ RefreshTokenCanInterpretGoogleResponse
-```
-### ✔️ VanillaCloudStorageClientTest.SecureStringExtensionsTest
-```
-✔️ AreEqualsWorksCorrectly
-✔️ CorrectlyConvertsSecureStringToString
-✔️ CorrectlyConvertsSecureStringToUnicodeBytes
-✔️ CorrectlyConvertsSecureStringToUtf8Bytes
-✔️ CorrectlyConvertsStringToSecureString
-✔️ CorrectlyConvertsUnicodeBytesToSecureString
-✔️ CorrectlyConvertsUtf8BytesToSecureString
-```
-### ✔️ VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest
-```
-✔️ DecryptAfterDesrializationCanReadAllPropertiesBack
-✔️ DecryptAfterDesrializationRespectsNullProperties
-✔️ EncryptBeforeSerializationProtectsAllNecessaryProperties
-✔️ EncryptBeforeSerializationRespectsNullProperties
-✔️ SerializedDatacontractCanBeReadBack
-✔️ SerializedDatacontractDoesNotContainNullProperties
-✔️ SerializedDatacontractDoesNotContainPlaintextData
-✔️ SerializedJsonCanBeReadBack
-✔️ SerializedJsonDoesNotContainNullProperties
-✔️ SerializedJsonDoesNotContainPlaintextData
-✔️ SerializedXmlCanBeReadBack
-✔️ SerializedXmlDoesNotContainNullProperties
-✔️ SerializedXmlDoesNotContainPlaintextData
+|[VanillaCloudStorageClientTest.CloudStorageCredentialsTest](#r0s0)|6✅|||30ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest](#r0s1)|2✅||3⚪|101ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest](#r0s2)|4✅||3⚪|166ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest](#r0s3)|2✅|||7ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest](#r0s4)|1✅||3⚪|40ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest](#r0s5)|1✅||3⚪|15ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest](#r0s6)|5✅|||16ms|
+|[VanillaCloudStorageClientTest.CloudStorageTokenTest](#r0s7)|9✅|||0ms|
+|[VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest](#r0s8)|3✅|||3ms|
+|[VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest](#r0s9)|9✅|||12ms|
+|[VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest](#r0s10)|5✅|||13ms|
+|[VanillaCloudStorageClientTest.SecureStringExtensionsTest](#r0s11)|7✅|||0ms|
+|[VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest](#r0s12)|13✅|||43ms|
+### ✅ VanillaCloudStorageClientTest.CloudStorageCredentialsTest
+```
+✅ AreEqualWorksWithDifferentPassword
+✅ AreEqualWorksWithSameContent
+✅ CorrectlyConvertsSecureStringToString
+✅ CorrectlyConvertsStringToSecureString
+✅ ValidateAcceptsValidCredentials
+✅ ValidateRejectsInvalidCredentials
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest
+```
+✅ FileLifecycleWorks
+⚪ ReallyDoFetchToken
+⚪ ReallyDoOpenAuthorizationPageInBrowser
+⚪ ReallyDoRefreshToken
+✅ ThrowsAccessDeniedExceptionWithInvalidToken
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest
+```
+✅ FileLifecycleWorks
+✅ SanitizeCredentials_ChangesInvalidPrefix
+✅ SecureSslConnectionWorks
+✅ ThrowsWithHttpInsteadOfFtp
+⚪ ThrowsWithInvalidPassword
+⚪ ThrowsWithInvalidUrl
+⚪ ThrowsWithInvalidUsername
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest
+```
+✅ ChoosesCorrectUrlForGmxComEmail
+✅ ChoosesCorrectUrlForGmxNetEmail
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest
+```
+✅ FileLifecycleWorks
+⚪ ReallyDoFetchToken
+⚪ ReallyDoOpenAuthorizationPageInBrowser
+⚪ ReallyDoRefreshToken
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest
+```
+✅ FileLifecycleWorks
+⚪ ReallyDoFetchToken
+⚪ ReallyDoOpenAuthorizationPageInBrowser
+⚪ ReallyDoRefreshToken
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest
+```
+✅ FileLifecycleWorks
+✅ ParseGmxWebdavResponseCorrectly
+✅ ParseStratoWebdavResponseCorrectly
+✅ ThrowsWithInvalidPath
+✅ ThrowsWithInvalidUsername
+```
+### ✅ VanillaCloudStorageClientTest.CloudStorageTokenTest
+```
+✅ AreEqualWorksWithNullDate
+✅ AreEqualWorksWithSameContent
+✅ NeedsRefreshReturnsFalseForTokenFlow
+✅ NeedsRefreshReturnsFalseIfNotExpired
+✅ NeedsRefreshReturnsTrueIfExpired
+✅ NeedsRefreshReturnsTrueIfNoExpirationDate
+✅ SetExpiryDateBySecondsWorks
+✅ SetExpiryDateBySecondsWorksWithNull
+✅ SetExpiryDateBySecondsWorksWithVeryShortPeriod
+```
+### ✅ VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest
+```
+✅ ParsesAllErrorCodesCorrectly
+✅ ParsesNullErrorCodeCorrectly
+✅ ParsesUnknownErrorCodeCorrectly
+```
+### ✅ VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest
+```
+✅ BuildAuthorizationRequestUrlEscapesParameters
+✅ BuildAuthorizationRequestUrlLeavesOutOptionalParameters
+✅ BuildAuthorizationRequestUrlThrowsWithMissingRedirectUrlForTokenFlow
+✅ BuildAuthorizationRequestUrlUsesAllParameters
+✅ BuildAuthorizationRequestUrlUsesCodeVerifier
+✅ ParseRealWorldDropboxRejectResponse
+✅ ParseRealWorldDropboxSuccessResponse
+✅ ParseRealWorldGoogleRejectResponse
+✅ ParseRealWorldGoogleSuccessResponse
+```
+### ✅ VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest
+```
+✅ BuildOAuth2AuthorizationRequestUrlWorks
+✅ FetchTokenCanInterpretGoogleResponse
+✅ FetchTokenReturnsNullForDeniedAccess
+✅ FetchTokenThrowsWithWrongState
+✅ RefreshTokenCanInterpretGoogleResponse
+```
+### ✅ VanillaCloudStorageClientTest.SecureStringExtensionsTest
+```
+✅ AreEqualsWorksCorrectly
+✅ CorrectlyConvertsSecureStringToString
+✅ CorrectlyConvertsSecureStringToUnicodeBytes
+✅ CorrectlyConvertsSecureStringToUtf8Bytes
+✅ CorrectlyConvertsStringToSecureString
+✅ CorrectlyConvertsUnicodeBytesToSecureString
+✅ CorrectlyConvertsUtf8BytesToSecureString
+```
+### ✅ VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest
+```
+✅ DecryptAfterDesrializationCanReadAllPropertiesBack
+✅ DecryptAfterDesrializationRespectsNullProperties
+✅ EncryptBeforeSerializationProtectsAllNecessaryProperties
+✅ EncryptBeforeSerializationRespectsNullProperties
+✅ SerializedDatacontractCanBeReadBack
+✅ SerializedDatacontractDoesNotContainNullProperties
+✅ SerializedDatacontractDoesNotContainPlaintextData
+✅ SerializedJsonCanBeReadBack
+✅ SerializedJsonDoesNotContainNullProperties
+✅ SerializedJsonDoesNotContainPlaintextData
+✅ SerializedXmlCanBeReadBack
+✅ SerializedXmlDoesNotContainNullProperties
+✅ SerializedXmlDoesNotContainPlaintextData
```
\ No newline at end of file