diff --git a/__tests__/__outputs__/dart-json.md b/__tests__/__outputs__/dart-json.md
index dfe8e05..9805d20 100644
--- a/__tests__/__outputs__/dart-json.md
+++ b/__tests__/__outputs__/dart-json.md
@@ -2,13 +2,13 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/dart-json.json|1 ✅|4 ❌|1 ⚪|4s|
-## ❌ fixtures/dart-json.json
+## ❌ fixtures/dart-json.json
**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
+|[test/main_test.dart](#user-content-r0s0)|1 ✅|3 ❌||74ms|
+|[test/second_test.dart](#user-content-r0s1)||1 ❌|1 ⚪|51ms|
+### ❌ test/main_test.dart
```
Test 1
✅ Passing test
@@ -23,7 +23,7 @@ Test 2
❌ Exception in test
Exception: Some error
```
-### ❌ test/second_test.dart
+### ❌ test/second_test.dart
```
❌ Timeout test
TimeoutException after 0:00:00.000001: Test timed out after 0 seconds.
diff --git a/__tests__/__outputs__/dotnet-nunit.md b/__tests__/__outputs__/dotnet-nunit.md
index c7f2d52..e33c66d 100644
--- a/__tests__/__outputs__/dotnet-nunit.md
+++ b/__tests__/__outputs__/dotnet-nunit.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/dotnet-nunit.xml|3 ✅|5 ❌|1 ⚪|230ms|
-## ❌ fixtures/dotnet-nunit.xml
+## ❌ fixtures/dotnet-nunit.xml
**9** tests were completed in **230ms** with **3** passed, **5** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[DotnetTests.NUnitV3Tests.dll.DotnetTests.XUnitTests](#r0s0)|3 ✅|5 ❌|1 ⚪|69ms|
-### ❌ DotnetTests.NUnitV3Tests.dll.DotnetTests.XUnitTests
+|[DotnetTests.NUnitV3Tests.dll.DotnetTests.XUnitTests](#user-content-r0s0)|3 ✅|5 ❌|1 ⚪|69ms|
+### ❌ DotnetTests.NUnitV3Tests.dll.DotnetTests.XUnitTests
```
CalculatorTests
✅ Is_Even_Number(2)
diff --git a/__tests__/__outputs__/dotnet-trx.md b/__tests__/__outputs__/dotnet-trx.md
index 7a38b19..eedab46 100644
--- a/__tests__/__outputs__/dotnet-trx.md
+++ b/__tests__/__outputs__/dotnet-trx.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/dotnet-trx.trx|5 ✅|5 ❌|1 ⚪|1s|
-## ❌ fixtures/dotnet-trx.trx
+## ❌ fixtures/dotnet-trx.trx
**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
+|[DotnetTests.XUnitTests.CalculatorTests](#user-content-r0s0)|5 ✅|5 ❌|1 ⚪|118ms|
+### ❌ DotnetTests.XUnitTests.CalculatorTests
```
✅ Custom Name
❌ Exception_In_TargetTest
diff --git a/__tests__/__outputs__/fluent-validation-test-results.md b/__tests__/__outputs__/fluent-validation-test-results.md
index fe13390..9337a62 100644
--- a/__tests__/__outputs__/fluent-validation-test-results.md
+++ b/__tests__/__outputs__/fluent-validation-test-results.md
@@ -4,73 +4,73 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/FluentValidation.Tests.trx|803 ✅||1 ⚪|4s|
-## ✅ 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
+|[FluentValidation.Tests.AbstractValidatorTester](#user-content-r0s0)|35 ✅|||12ms|
+|[FluentValidation.Tests.AccessorCacheTests](#user-content-r0s1)|4 ✅||1 ⚪|4ms|
+|[FluentValidation.Tests.AssemblyScannerTester](#user-content-r0s2)|2 ✅|||2ms|
+|[FluentValidation.Tests.CascadingFailuresTester](#user-content-r0s3)|38 ✅|||23ms|
+|[FluentValidation.Tests.ChainedValidationTester](#user-content-r0s4)|13 ✅|||6ms|
+|[FluentValidation.Tests.ChainingValidatorsTester](#user-content-r0s5)|3 ✅|||1ms|
+|[FluentValidation.Tests.ChildRulesTests](#user-content-r0s6)|2 ✅|||7ms|
+|[FluentValidation.Tests.CollectionValidatorWithParentTests](#user-content-r0s7)|16 ✅|||13ms|
+|[FluentValidation.Tests.ComplexValidationTester](#user-content-r0s8)|17 ✅|||26ms|
+|[FluentValidation.Tests.ConditionTests](#user-content-r0s9)|18 ✅|||9ms|
+|[FluentValidation.Tests.CreditCardValidatorTests](#user-content-r0s10)|2 ✅|||2ms|
+|[FluentValidation.Tests.CustomFailureActionTester](#user-content-r0s11)|3 ✅|||1ms|
+|[FluentValidation.Tests.CustomMessageFormatTester](#user-content-r0s12)|6 ✅|||3ms|
+|[FluentValidation.Tests.CustomValidatorTester](#user-content-r0s13)|10 ✅|||6ms|
+|[FluentValidation.Tests.DefaultValidatorExtensionTester](#user-content-r0s14)|30 ✅|||38ms|
+|[FluentValidation.Tests.EmailValidatorTests](#user-content-r0s15)|36 ✅|||18ms|
+|[FluentValidation.Tests.EmptyTester](#user-content-r0s16)|9 ✅|||5ms|
+|[FluentValidation.Tests.EnumValidatorTests](#user-content-r0s17)|12 ✅|||24ms|
+|[FluentValidation.Tests.EqualValidatorTests](#user-content-r0s18)|10 ✅|||3ms|
+|[FluentValidation.Tests.ExactLengthValidatorTester](#user-content-r0s19)|6 ✅|||2ms|
+|[FluentValidation.Tests.ExclusiveBetweenValidatorTests](#user-content-r0s20)|19 ✅|||6ms|
+|[FluentValidation.Tests.ExtensionTester](#user-content-r0s21)|4 ✅|||1ms|
+|[FluentValidation.Tests.ForEachRuleTests](#user-content-r0s22)|34 ✅|||47ms|
+|[FluentValidation.Tests.GreaterThanOrEqualToValidatorTester](#user-content-r0s23)|14 ✅|||5ms|
+|[FluentValidation.Tests.GreaterThanValidatorTester](#user-content-r0s24)|13 ✅|||4ms|
+|[FluentValidation.Tests.InclusiveBetweenValidatorTests](#user-content-r0s25)|18 ✅|||4ms|
+|[FluentValidation.Tests.InheritanceValidatorTest](#user-content-r0s26)|11 ✅|||18ms|
+|[FluentValidation.Tests.InlineValidatorTester](#user-content-r0s27)|1 ✅|||2ms|
+|[FluentValidation.Tests.LanguageManagerTests](#user-content-r0s28)|21 ✅|||28ms|
+|[FluentValidation.Tests.LengthValidatorTests](#user-content-r0s29)|16 ✅|||17ms|
+|[FluentValidation.Tests.LessThanOrEqualToValidatorTester](#user-content-r0s30)|13 ✅|||4ms|
+|[FluentValidation.Tests.LessThanValidatorTester](#user-content-r0s31)|16 ✅|||6ms|
+|[FluentValidation.Tests.LocalisedMessagesTester](#user-content-r0s32)|6 ✅|||3ms|
+|[FluentValidation.Tests.LocalisedNameTester](#user-content-r0s33)|2 ✅|||1ms|
+|[FluentValidation.Tests.MemberAccessorTests](#user-content-r0s34)|9 ✅|||5ms|
+|[FluentValidation.Tests.MessageFormatterTests](#user-content-r0s35)|10 ✅|||2ms|
+|[FluentValidation.Tests.ModelLevelValidatorTests](#user-content-r0s36)|2 ✅|||1ms|
+|[FluentValidation.Tests.NameResolutionPluggabilityTester](#user-content-r0s37)|3 ✅|||2ms|
+|[FluentValidation.Tests.NotEmptyTester](#user-content-r0s38)|10 ✅|||7ms|
+|[FluentValidation.Tests.NotEqualValidatorTests](#user-content-r0s39)|11 ✅|||7ms|
+|[FluentValidation.Tests.NotNullTester](#user-content-r0s40)|5 ✅|||1ms|
+|[FluentValidation.Tests.NullTester](#user-content-r0s41)|5 ✅|||2ms|
+|[FluentValidation.Tests.OnFailureTests](#user-content-r0s42)|10 ✅|||8ms|
+|[FluentValidation.Tests.PredicateValidatorTester](#user-content-r0s43)|5 ✅|||2ms|
+|[FluentValidation.Tests.PropertyChainTests](#user-content-r0s44)|7 ✅|||1ms|
+|[FluentValidation.Tests.RegularExpressionValidatorTests](#user-content-r0s45)|15 ✅|||6ms|
+|[FluentValidation.Tests.RuleBuilderTests](#user-content-r0s46)|29 ✅|||96ms|
+|[FluentValidation.Tests.RuleDependencyTests](#user-content-r0s47)|14 ✅|||3s|
+|[FluentValidation.Tests.RulesetTests](#user-content-r0s48)|21 ✅|||14ms|
+|[FluentValidation.Tests.ScalePrecisionValidatorTests](#user-content-r0s49)|6 ✅|||4ms|
+|[FluentValidation.Tests.SharedConditionTests](#user-content-r0s50)|42 ✅|||42ms|
+|[FluentValidation.Tests.StandalonePropertyValidationTester](#user-content-r0s51)|1 ✅|||0ms|
+|[FluentValidation.Tests.StringEnumValidatorTests](#user-content-r0s52)|10 ✅|||5ms|
+|[FluentValidation.Tests.TrackingCollectionTests](#user-content-r0s53)|3 ✅|||2ms|
+|[FluentValidation.Tests.TransformTests](#user-content-r0s54)|4 ✅|||3ms|
+|[FluentValidation.Tests.UserSeverityTester](#user-content-r0s55)|7 ✅|||3ms|
+|[FluentValidation.Tests.UserStateTester](#user-content-r0s56)|4 ✅|||3ms|
+|[FluentValidation.Tests.ValidateAndThrowTester](#user-content-r0s57)|14 ✅|||25ms|
+|[FluentValidation.Tests.ValidationResultTests](#user-content-r0s58)|8 ✅|||8ms|
+|[FluentValidation.Tests.ValidatorDescriptorTester](#user-content-r0s59)|5 ✅|||1ms|
+|[FluentValidation.Tests.ValidatorSelectorTests](#user-content-r0s60)|10 ✅|||9ms|
+|[FluentValidation.Tests.ValidatorTesterTester](#user-content-r0s61)|73 ✅|||74ms|
+### ✅ FluentValidation.Tests.AbstractValidatorTester
```
✅ Can_replace_default_errorcode_resolver
✅ CanValidateInstancesOfType_returns_false_when_comparing_against_some_other_type
@@ -108,7 +108,7 @@
✅ WithName_should_override_field_name
✅ WithName_should_override_field_name_with_value_from_other_property
```
-### ✅ FluentValidation.Tests.AccessorCacheTests
+### ✅ FluentValidation.Tests.AccessorCacheTests
```
⚪ Benchmark
✅ Equality_comparison_check
@@ -116,12 +116,12 @@
✅ Gets_member_for_nested_property
✅ Identifies_if_memberexp_acts_on_model_instance
```
-### ✅ FluentValidation.Tests.AssemblyScannerTester
+### ✅ FluentValidation.Tests.AssemblyScannerTester
```
✅ Finds_validators_for_types
✅ ForEach_iterates_over_types
```
-### ✅ FluentValidation.Tests.CascadingFailuresTester
+### ✅ FluentValidation.Tests.CascadingFailuresTester
```
✅ Cascade_mode_can_be_set_after_validator_instantiated
✅ Cascade_mode_can_be_set_after_validator_instantiated_async
@@ -162,7 +162,7 @@
✅ 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
+### ✅ FluentValidation.Tests.ChainedValidationTester
```
✅ Can_validate_using_validator_for_base_type
✅ Chained_property_should_be_excluded
@@ -178,18 +178,18 @@
✅ Uses_explicit_ruleset
✅ Validates_chained_property
```
-### ✅ FluentValidation.Tests.ChainingValidatorsTester
+### ✅ FluentValidation.Tests.ChainingValidatorsTester
```
✅ Options_should_only_apply_to_current_validator
✅ Should_create_multiple_validators
✅ Should_execute_multiple_validators
```
-### ✅ FluentValidation.Tests.ChildRulesTests
+### ✅ FluentValidation.Tests.ChildRulesTests
```
✅ Can_define_nested_rules_for_collection
✅ ChildRules_works_with_RuleSet
```
-### ✅ FluentValidation.Tests.CollectionValidatorWithParentTests
+### ✅ FluentValidation.Tests.CollectionValidatorWithParentTests
```
✅ Async_condition_should_work_with_child_collection
✅ Can_specify_condition_for_individual_collection_elements
@@ -208,7 +208,7 @@
✅ Validates_collection_several_levels_deep
✅ Validates_collection_several_levels_deep_async
```
-### ✅ FluentValidation.Tests.ComplexValidationTester
+### ✅ FluentValidation.Tests.ComplexValidationTester
```
✅ Async_condition_should_work_with_complex_property
✅ Async_condition_should_work_with_complex_property_when_validator_invoked_synchronously
@@ -228,7 +228,7 @@
✅ Validates_child_validator_synchronously
✅ Validates_complex_property
```
-### ✅ FluentValidation.Tests.ConditionTests
+### ✅ FluentValidation.Tests.ConditionTests
```
✅ Async_condition_executed_synchronosuly_with_asynchronous_collection_rule
✅ Async_condition_executed_synchronosuly_with_asynchronous_rule
@@ -249,18 +249,18 @@
✅ Validation_should_succeed_when_condition_does_not_match
✅ Validation_should_succeed_when_condition_matches
```
-### ✅ FluentValidation.Tests.CreditCardValidatorTests
+### ✅ FluentValidation.Tests.CreditCardValidatorTests
```
✅ IsValidTests
✅ When_validation_fails_the_default_error_should_be_set
```
-### ✅ FluentValidation.Tests.CustomFailureActionTester
+### ✅ FluentValidation.Tests.CustomFailureActionTester
```
✅ Does_not_invoke_action_if_validation_success
✅ Invokes_custom_action_on_failure
✅ Passes_object_being_validated_to_action
```
-### ✅ FluentValidation.Tests.CustomMessageFormatTester
+### ✅ FluentValidation.Tests.CustomMessageFormatTester
```
✅ Replaces_propertyvalue_placeholder
✅ Replaces_propertyvalue_with_empty_string_when_null
@@ -269,7 +269,7 @@
✅ Uses_custom_delegate_for_building_message_only_for_specific_validator
✅ Uses_property_value_in_message
```
-### ✅ FluentValidation.Tests.CustomValidatorTester
+### ✅ FluentValidation.Tests.CustomValidatorTester
```
✅ New_Custom_Returns_single_failure
✅ New_Custom_Returns_single_failure_async
@@ -282,7 +282,7 @@
✅ Runs_async_rule_synchronously_when_validator_invoked_synchronously
✅ Runs_sync_rule_asynchronously_when_validator_invoked_asynchronously
```
-### ✅ FluentValidation.Tests.DefaultValidatorExtensionTester
+### ✅ FluentValidation.Tests.DefaultValidatorExtensionTester
```
✅ Empty_should_create_EmptyValidator
✅ Equal_should_create_EqualValidator_with_explicit_value
@@ -315,7 +315,7 @@
✅ ScalePrecision_should_create_ScalePrecisionValidator
✅ ScalePrecision_should_create_ScalePrecisionValidator_with_ignore_trailing_zeros
```
-### ✅ FluentValidation.Tests.EmailValidatorTests
+### ✅ FluentValidation.Tests.EmailValidatorTests
```
✅ Fails_email_validation_aspnetcore_compatible(email: " \r \t \n")
✅ Fails_email_validation_aspnetcore_compatible(email: "")
@@ -354,7 +354,7 @@
✅ Valid_email_addresses_regex(email: "testperson+label@gmail.com")
✅ Valid_email_addresses_regex(email: null)
```
-### ✅ FluentValidation.Tests.EmptyTester
+### ✅ FluentValidation.Tests.EmptyTester
```
✅ Passes_for_ienumerable_that_doesnt_implement_ICollection
✅ Passes_when_collection_empty
@@ -366,7 +366,7 @@
✅ When_value_is_null_validator_should_pass
✅ When_value_is_whitespace_validation_should_pass
```
-### ✅ FluentValidation.Tests.EnumValidatorTests
+### ✅ FluentValidation.Tests.EnumValidatorTests
```
✅ Flags_enum_invalid_when_using_outofrange_negative_value
✅ Flags_enum_invalid_when_using_outofrange_positive_value
@@ -381,7 +381,7 @@
✅ 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
+### ✅ FluentValidation.Tests.EqualValidatorTests
```
✅ Comparison_property_uses_custom_resolver
✅ Should_store_comparison_type
@@ -394,7 +394,7 @@
✅ When_the_objects_are_not_equal_validation_should_fail
✅ When_validation_fails_the_error_should_be_set
```
-### ✅ FluentValidation.Tests.ExactLengthValidatorTester
+### ✅ FluentValidation.Tests.ExactLengthValidatorTester
```
✅ Min_and_max_properties_should_be_set
✅ When_exact_length_rule_failes_error_should_have_exact_length_error_errorcode
@@ -403,7 +403,7 @@
✅ When_the_text_length_is_smaller_the_validator_should_fail
✅ When_the_validator_fails_the_error_message_should_be_set
```
-### ✅ FluentValidation.Tests.ExclusiveBetweenValidatorTests
+### ✅ FluentValidation.Tests.ExclusiveBetweenValidatorTests
```
✅ To_and_from_properties_should_be_set
✅ To_and_from_properties_should_be_set_for_dates
@@ -425,14 +425,14 @@
✅ 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
+### ✅ 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
+### ✅ FluentValidation.Tests.ForEachRuleTests
```
✅ Async_condition_should_work_with_child_collection
✅ Can_access_colletion_index
@@ -469,7 +469,7 @@
✅ When_runs_outside_RuleForEach_loop
✅ When_runs_outside_RuleForEach_loop_async
```
-### ✅ FluentValidation.Tests.GreaterThanOrEqualToValidatorTester
+### ✅ FluentValidation.Tests.GreaterThanOrEqualToValidatorTester
```
✅ Comparison_property_uses_custom_resolver
✅ Comparison_type
@@ -486,7 +486,7 @@
✅ Validates_with_nullable_when_property_not_null_cross_property
✅ Validates_with_property
```
-### ✅ FluentValidation.Tests.GreaterThanValidatorTester
+### ✅ FluentValidation.Tests.GreaterThanValidatorTester
```
✅ Comparison_property_uses_custom_resolver
✅ Comparison_Type
@@ -502,7 +502,7 @@
✅ Validates_with_nullable_when_property_not_null_cross_property
✅ Validates_with_property
```
-### ✅ FluentValidation.Tests.InclusiveBetweenValidatorTests
+### ✅ FluentValidation.Tests.InclusiveBetweenValidatorTests
```
✅ To_and_from_properties_should_be_set
✅ To_and_from_properties_should_be_set_for_strings
@@ -523,7 +523,7 @@
✅ 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
+### ✅ FluentValidation.Tests.InheritanceValidatorTest
```
✅ Can_use_custom_subclass_with_nongeneric_overload
✅ Validates_collection
@@ -537,11 +537,11 @@
✅ Validates_with_callback_accepting_derived_async
✅ Validates_with_callback_async
```
-### ✅ FluentValidation.Tests.InlineValidatorTester
+### ✅ FluentValidation.Tests.InlineValidatorTester
```
✅ Uses_inline_validator_to_build_rules
```
-### ✅ FluentValidation.Tests.LanguageManagerTests
+### ✅ FluentValidation.Tests.LanguageManagerTests
```
✅ All_languages_should_be_loaded
✅ All_localizations_have_same_parameters_as_English
@@ -565,7 +565,7 @@
✅ Gets_translation_for_specific_culture
✅ Uses_error_code_as_localization_key
```
-### ✅ FluentValidation.Tests.LengthValidatorTests
+### ✅ FluentValidation.Tests.LengthValidatorTests
```
✅ Min_and_max_properties_should_be_set
✅ When_input_is_null_then_the_validator_should_pass
@@ -584,7 +584,7 @@
✅ 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
+### ✅ FluentValidation.Tests.LessThanOrEqualToValidatorTester
```
✅ Comparison_property_uses_custom_resolver
✅ Comparison_type
@@ -600,7 +600,7 @@
✅ Validates_with_nullable_when_property_not_null_cross_property
✅ Validates_with_property
```
-### ✅ FluentValidation.Tests.LessThanValidatorTester
+### ✅ FluentValidation.Tests.LessThanValidatorTester
```
✅ Comparison_property_uses_custom_resolver
✅ Comparison_type
@@ -619,7 +619,7 @@
✅ Validates_with_nullable_when_property_not_null_cross_property
✅ Validates_with_nullable_when_property_null_cross_property
```
-### ✅ FluentValidation.Tests.LocalisedMessagesTester
+### ✅ FluentValidation.Tests.LocalisedMessagesTester
```
✅ Correctly_assigns_default_localized_error_message
✅ Does_not_throw_InvalidCastException_when_using_RuleForEach
@@ -628,12 +628,12 @@
✅ Uses_func_to_get_message
✅ Uses_string_format_with_property_value
```
-### ✅ FluentValidation.Tests.LocalisedNameTester
+### ✅ FluentValidation.Tests.LocalisedNameTester
```
✅ Uses_localized_name
✅ Uses_localized_name_expression
```
-### ✅ FluentValidation.Tests.MemberAccessorTests
+### ✅ FluentValidation.Tests.MemberAccessorTests
```
✅ ComplexPropertyGet
✅ ComplexPropertySet
@@ -645,7 +645,7 @@
✅ SimplePropertyGet
✅ SimplePropertySet
```
-### ✅ FluentValidation.Tests.MessageFormatterTests
+### ✅ FluentValidation.Tests.MessageFormatterTests
```
✅ Adds_argument_and_custom_arguments
✅ Adds_formatted_argument_and_custom_arguments
@@ -658,18 +658,18 @@
✅ Understands_date_formats
✅ Understands_numeric_formats
```
-### ✅ FluentValidation.Tests.ModelLevelValidatorTests
+### ✅ FluentValidation.Tests.ModelLevelValidatorTests
```
✅ Can_use_child_validator_at_model_level
✅ Validates_at_model_level
```
-### ✅ FluentValidation.Tests.NameResolutionPluggabilityTester
+### ✅ FluentValidation.Tests.NameResolutionPluggabilityTester
```
✅ Resolves_nested_properties
✅ ShouldHaveValidationError_Should_support_custom_propertynameresolver
✅ Uses_custom_property_name
```
-### ✅ FluentValidation.Tests.NotEmptyTester
+### ✅ FluentValidation.Tests.NotEmptyTester
```
✅ Fails_for_array
✅ Fails_for_ienumerable_that_doesnt_implement_ICollection
@@ -682,7 +682,7 @@
✅ When_value_is_null_validator_should_fail
✅ When_value_is_whitespace_validation_should_fail
```
-### ✅ FluentValidation.Tests.NotEqualValidatorTests
+### ✅ FluentValidation.Tests.NotEqualValidatorTests
```
✅ Comparison_property_uses_custom_resolver
✅ Should_handle_custom_value_types_correctly
@@ -696,7 +696,7 @@
✅ When_the_objects_are_not_equal_then_the_validator_should_pass
✅ When_the_validator_fails_the_error_message_should_be_set
```
-### ✅ FluentValidation.Tests.NotNullTester
+### ✅ FluentValidation.Tests.NotNullTester
```
✅ Fails_when_nullable_value_type_is_null
✅ Not_null_validator_should_not_crash_with_non_nullable_value_type
@@ -704,7 +704,7 @@
✅ NotNullValidator_should_pass_if_value_has_value
✅ When_the_validator_fails_the_error_message_should_be_set
```
-### ✅ FluentValidation.Tests.NullTester
+### ✅ FluentValidation.Tests.NullTester
```
✅ Not_null_validator_should_not_crash_with_non_nullable_value_type
✅ NullValidator_should_fail_if_value_has_value
@@ -712,7 +712,7 @@
✅ Passes_when_nullable_value_type_is_null
✅ When_the_validator_passes_the_error_message_should_be_set
```
-### ✅ FluentValidation.Tests.OnFailureTests
+### ✅ FluentValidation.Tests.OnFailureTests
```
✅ OnFailure_called_for_each_failed_rule
✅ OnFailure_called_for_each_failed_rule_asyncAsync
@@ -725,7 +725,7 @@
✅ WhenWithOnFailure_should_invoke_condition_on_async_inner_validator
✅ WhenWithOnFailure_should_invoke_condition_on_inner_validator
```
-### ✅ FluentValidation.Tests.PredicateValidatorTester
+### ✅ FluentValidation.Tests.PredicateValidatorTester
```
✅ Should_fail_when_predicate_returns_false
✅ Should_succeed_when_predicate_returns_true
@@ -733,7 +733,7 @@
✅ When_validation_fails_metadata_should_be_set_on_failure
✅ When_validation_fails_the_default_error_should_be_set
```
-### ✅ FluentValidation.Tests.PropertyChainTests
+### ✅ FluentValidation.Tests.PropertyChainTests
```
✅ AddIndexer_throws_when_nothing_added
✅ Calling_ToString_should_construct_string_representation_of_chain
@@ -743,7 +743,7 @@
✅ Should_ignore_blanks
✅ Should_not_be_subchain
```
-### ✅ FluentValidation.Tests.RegularExpressionValidatorTests
+### ✅ FluentValidation.Tests.RegularExpressionValidatorTests
```
✅ Can_access_expression_in_message
✅ Can_access_expression_in_message_lambda
@@ -761,7 +761,7 @@
✅ When_the_text_matches_the_regular_expression_then_the_validator_should_pass
✅ When_validation_fails_the_default_error_should_be_set
```
-### ✅ FluentValidation.Tests.RuleBuilderTests
+### ✅ FluentValidation.Tests.RuleBuilderTests
```
✅ Adding_a_validator_should_return_builder
✅ Adding_a_validator_should_store_validator
@@ -793,7 +793,7 @@
✅ Should_throw_when_inverse_predicate_is_null
✅ Should_throw_when_predicate_is_null
```
-### ✅ FluentValidation.Tests.RuleDependencyTests
+### ✅ FluentValidation.Tests.RuleDependencyTests
```
✅ Async_inside_dependent_rules
✅ Async_inside_dependent_rules_when_parent_rule_not_async
@@ -810,7 +810,7 @@
✅ TestAsyncWithDependentRules_SyncEntry
✅ Treats_root_level_RuleFor_call_as_dependent_rule_if_user_forgets_to_use_DependentRulesBuilder
```
-### ✅ FluentValidation.Tests.RulesetTests
+### ✅ FluentValidation.Tests.RulesetTests
```
✅ Applies_multiple_rulesets_to_rule
✅ Combines_rulesets_and_explicit_properties
@@ -834,7 +834,7 @@
✅ Trims_spaces
✅ WithMessage_works_inside_rulesets
```
-### ✅ FluentValidation.Tests.ScalePrecisionValidatorTests
+### ✅ FluentValidation.Tests.ScalePrecisionValidatorTests
```
✅ Scale_precision_should_be_valid
✅ Scale_precision_should_be_valid_when_ignoring_trailing_zeroes
@@ -843,7 +843,7 @@
✅ Scale_precision_should_not_be_valid_when_ignoring_trailing_zeroes
✅ Scale_precision_should_not_be_valid_when_they_are_equal
```
-### ✅ FluentValidation.Tests.SharedConditionTests
+### ✅ FluentValidation.Tests.SharedConditionTests
```
✅ Async_condition_can_be_used_inside_ruleset
✅ Condition_can_be_used_inside_ruleset
@@ -888,11 +888,11 @@
✅ When_condition_only_executed_once
✅ WhenAsync_condition_only_executed_once
```
-### ✅ FluentValidation.Tests.StandalonePropertyValidationTester
+### ✅ FluentValidation.Tests.StandalonePropertyValidationTester
```
✅ Should_validate_property_value_without_instance
```
-### ✅ FluentValidation.Tests.StringEnumValidatorTests
+### ✅ FluentValidation.Tests.StringEnumValidatorTests
```
✅ IsValidTests_CaseInsensitive_CaseCorrect
✅ IsValidTests_CaseInsensitive_CaseIncorrect
@@ -905,20 +905,20 @@
✅ 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
+### ✅ FluentValidation.Tests.TrackingCollectionTests
```
✅ Add_AddsItem
✅ Should_not_raise_event_once_handler_detached
✅ When_Item_Added_Raises_ItemAdded
```
-### ✅ FluentValidation.Tests.TransformTests
+### ✅ FluentValidation.Tests.TransformTests
```
✅ Transforms_collection_element
✅ Transforms_collection_element_async
✅ Transforms_property_value
✅ Transforms_property_value_to_another_type
```
-### ✅ FluentValidation.Tests.UserSeverityTester
+### ✅ FluentValidation.Tests.UserSeverityTester
```
✅ Can_Provide_conditional_severity
✅ Can_Provide_severity_for_item_in_collection
@@ -928,14 +928,14 @@
✅ Stores_user_severity_against_validation_failure
✅ Throws_when_provider_is_null
```
-### ✅ FluentValidation.Tests.UserStateTester
+### ✅ 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
+### ✅ FluentValidation.Tests.ValidateAndThrowTester
```
✅ Does_not_throw_when_valid
✅ Does_not_throw_when_valid_and_a_ruleset
@@ -952,7 +952,7 @@
✅ ValidationException_provides_correct_message_when_appendDefaultMessage_false
✅ ValidationException_provides_correct_message_when_appendDefaultMessage_true
```
-### ✅ FluentValidation.Tests.ValidationResultTests
+### ✅ FluentValidation.Tests.ValidationResultTests
```
✅ Can_serialize_failure
✅ Can_serialize_result
@@ -963,7 +963,7 @@
✅ ToString_return_error_messages_with_given_separator
✅ ToString_return_error_messages_with_newline_as_separator
```
-### ✅ FluentValidation.Tests.ValidatorDescriptorTester
+### ✅ FluentValidation.Tests.ValidatorDescriptorTester
```
✅ Does_not_throw_when_rule_declared_without_property
✅ Gets_validators_for_property
@@ -971,7 +971,7 @@
✅ Returns_empty_collection_for_property_with_no_validators
✅ Should_retrieve_name_given_to_it_pass_property_as_string
```
-### ✅ FluentValidation.Tests.ValidatorSelectorTests
+### ✅ FluentValidation.Tests.ValidatorSelectorTests
```
✅ Can_use_property_with_include
✅ Does_not_validate_other_property
@@ -984,7 +984,7 @@
✅ Validates_nullable_property_with_overriden_name_when_selected
✅ Validates_property_using_expression
```
-### ✅ FluentValidation.Tests.ValidatorTesterTester
+### ✅ FluentValidation.Tests.ValidatorTesterTester
```
✅ Allows_only_one_failure_to_match
✅ Can_use_indexer_in_string_message
diff --git a/__tests__/__outputs__/jest-junit-eslint.md b/__tests__/__outputs__/jest-junit-eslint.md
index 32608c3..d3ad9b9 100644
--- a/__tests__/__outputs__/jest-junit-eslint.md
+++ b/__tests__/__outputs__/jest-junit-eslint.md
@@ -4,12 +4,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/jest-junit-eslint.xml|1 ✅|||0ms|
-## ✅ fixtures/jest-junit-eslint.xml
+## ✅ fixtures/jest-junit-eslint.xml
**1** tests were completed in **0ms** with **1** passed, **0** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[test.jsx](#r0s0)|1 ✅|||0ms|
-### ✅ test.jsx
+|[test.jsx](#user-content-r0s0)|1 ✅|||0ms|
+### ✅ test.jsx
```
test
✅ test.jsx
diff --git a/__tests__/__outputs__/jest-junit.md b/__tests__/__outputs__/jest-junit.md
index 7c577d3..ed5a174 100644
--- a/__tests__/__outputs__/jest-junit.md
+++ b/__tests__/__outputs__/jest-junit.md
@@ -2,13 +2,13 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/jest-junit.xml|1 ✅|4 ❌|1 ⚪|1s|
-## ❌ fixtures/jest-junit.xml
+## ❌ fixtures/jest-junit.xml
**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
+|[__tests__\main.test.js](#user-content-r0s0)|1 ✅|3 ❌||486ms|
+|[__tests__\second.test.js](#user-content-r0s1)||1 ❌|1 ⚪|82ms|
+### ❌ __tests__\main.test.js
```
Test 1
✅ Passing test
@@ -21,7 +21,7 @@ Test 2
❌ Exception in test
Error: Some error
```
-### ❌ __tests__\second.test.js
+### ❌ __tests__\second.test.js
```
❌ 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:
diff --git a/__tests__/__outputs__/jest-react-component-test-results.md b/__tests__/__outputs__/jest-react-component-test-results.md
index e9dda68..d71db4c 100644
--- a/__tests__/__outputs__/jest-react-component-test-results.md
+++ b/__tests__/__outputs__/jest-react-component-test-results.md
@@ -4,12 +4,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/jest/jest-react-component-test-results.xml|1 ✅|||1000ms|
-## ✅ fixtures/external/jest/jest-react-component-test-results.xml
+## ✅ fixtures/external/jest/jest-react-component-test-results.xml
**1** tests were completed in **1000ms** with **1** passed, **0** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[\](#r0s0)|1 ✅|||798ms|
-### ✅ \
+|[\](#user-content-r0s0)|1 ✅|||798ms|
+### ✅ \
```
✅ should render properly
```
diff --git a/__tests__/__outputs__/jest-test-results.md b/__tests__/__outputs__/jest-test-results.md
index 24b5309..5b154f8 100644
--- a/__tests__/__outputs__/jest-test-results.md
+++ b/__tests__/__outputs__/jest-test-results.md
@@ -2,7 +2,7 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/jest/jest-test-results.xml|4207 ✅|2 ❌|30 ⚪|166s|
-## ❌ fixtures/external/jest/jest-test-results.xml
+## ❌ fixtures/external/jest/jest-test-results.xml
**4239** tests were completed in **166s** with **4207** passed, **2** failed and **30** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
@@ -81,7 +81,7 @@
|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__/jestChangedFiles.test.ts](#user-content-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|
@@ -104,7 +104,7 @@
|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__/onlyChanged.test.ts](#user-content-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|
@@ -406,7 +406,7 @@
|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
+### ❌ e2e/__tests__/jestChangedFiles.test.ts
```
✅ gets hg SCM roots and dedupes them
✅ gets git SCM roots and dedupes them
@@ -420,7 +420,7 @@
✅ monitors only root paths for hg
✅ handles a bad revision for "changedSince", for hg
```
-### ❌ e2e/__tests__/onlyChanged.test.ts
+### ❌ e2e/__tests__/onlyChanged.test.ts
```
✅ run for "onlyChanged" and "changedSince"
✅ run only changed files
diff --git a/__tests__/__outputs__/junit-with-message.md b/__tests__/__outputs__/junit-with-message.md
index 948309a..988d8fc 100644
--- a/__tests__/__outputs__/junit-with-message.md
+++ b/__tests__/__outputs__/junit-with-message.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/junit-with-message.xml||1 ❌||1ms|
-## ❌ fixtures/junit-with-message.xml
+## ❌ fixtures/junit-with-message.xml
**1** tests were completed in **1ms** with **0** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[Test](#r0s0)||1 ❌||1ms|
-### ❌ Test
+|[Test](#user-content-r0s0)||1 ❌||1ms|
+### ❌ Test
```
Fails
❌ Test
diff --git a/__tests__/__outputs__/mocha-json.md b/__tests__/__outputs__/mocha-json.md
index 7474b54..50419e1 100644
--- a/__tests__/__outputs__/mocha-json.md
+++ b/__tests__/__outputs__/mocha-json.md
@@ -2,13 +2,13 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/mocha-json.json|1 ✅|4 ❌|1 ⚪|12ms|
-## ❌ fixtures/mocha-json.json
+## ❌ fixtures/mocha-json.json
**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
+|[test/main.test.js](#user-content-r0s0)|1 ✅|3 ❌||1ms|
+|[test/second.test.js](#user-content-r0s1)||1 ❌|1 ⚪|8ms|
+### ❌ test/main.test.js
```
Test 1
✅ Passing test
@@ -24,7 +24,7 @@ Test 2
❌ Exception in test
Some error
```
-### ❌ test/second.test.js
+### ❌ test/second.test.js
```
⚪ Skipped test
❌ Timeout test
diff --git a/__tests__/__outputs__/mocha-test-results.md b/__tests__/__outputs__/mocha-test-results.md
index 4fe3802..8831d7b 100644
--- a/__tests__/__outputs__/mocha-test-results.md
+++ b/__tests__/__outputs__/mocha-test-results.md
@@ -4,47 +4,47 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/mocha/mocha-test-results.json|833 ✅||6 ⚪|6s|
-## ✅ 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](#r0s0)|14 ✅|||8ms|
-|[test/node-unit/cli/config.spec.js](#r0s1)|10 ✅|||8ms|
-|[test/node-unit/cli/node-flags.spec.js](#r0s2)|105 ✅|||9ms|
-|[test/node-unit/cli/options.spec.js](#r0s3)|36 ✅|||250ms|
-|[test/node-unit/cli/run-helpers.spec.js](#r0s4)|9 ✅|||8ms|
-|[test/node-unit/cli/run.spec.js](#r0s5)|40 ✅|||4ms|
-|[test/node-unit/mocha.spec.js](#r0s6)|24 ✅|||33ms|
-|[test/node-unit/parallel-buffered-runner.spec.js](#r0s7)|19 ✅|||23ms|
-|[test/node-unit/reporters/parallel-buffered.spec.js](#r0s8)|6 ✅|||16ms|
-|[test/node-unit/serializer.spec.js](#r0s9)|40 ✅|||31ms|
-|[test/node-unit/stack-trace-filter.spec.js](#r0s10)|2 ✅||4 ⚪|1ms|
-|[test/node-unit/utils.spec.js](#r0s11)|5 ✅|||1ms|
-|[test/node-unit/worker.spec.js](#r0s12)|15 ✅|||92ms|
-|[test/unit/context.spec.js](#r0s13)|8 ✅|||5ms|
-|[test/unit/duration.spec.js](#r0s14)|3 ✅|||166ms|
-|[test/unit/errors.spec.js](#r0s15)|13 ✅|||5ms|
-|[test/unit/globals.spec.js](#r0s16)|4 ✅|||0ms|
-|[test/unit/grep.spec.js](#r0s17)|8 ✅|||2ms|
-|[test/unit/hook-async.spec.js](#r0s18)|3 ✅|||1ms|
-|[test/unit/hook-sync-nested.spec.js](#r0s19)|4 ✅|||1ms|
-|[test/unit/hook-sync.spec.js](#r0s20)|3 ✅|||0ms|
-|[test/unit/hook-timeout.spec.js](#r0s21)|1 ✅|||0ms|
-|[test/unit/hook.spec.js](#r0s22)|4 ✅|||0ms|
-|[test/unit/mocha.spec.js](#r0s23)|115 ✅||1 ⚪|128ms|
-|[test/unit/overspecified-async.spec.js](#r0s24)|1 ✅|||3ms|
-|[test/unit/parse-query.spec.js](#r0s25)|2 ✅|||1ms|
-|[test/unit/plugin-loader.spec.js](#r0s26)|41 ✅||1 ⚪|16ms|
-|[test/unit/required-tokens.spec.js](#r0s27)|1 ✅|||0ms|
-|[test/unit/root.spec.js](#r0s28)|1 ✅|||0ms|
-|[test/unit/runnable.spec.js](#r0s29)|55 ✅|||122ms|
-|[test/unit/runner.spec.js](#r0s30)|77 ✅|||43ms|
-|[test/unit/suite.spec.js](#r0s31)|57 ✅|||14ms|
-|[test/unit/test.spec.js](#r0s32)|15 ✅|||0ms|
-|[test/unit/throw.spec.js](#r0s33)|9 ✅|||9ms|
-|[test/unit/timeout.spec.js](#r0s34)|8 ✅|||109ms|
-|[test/unit/utils.spec.js](#r0s35)|75 ✅|||24ms|
-### ✅ test/node-unit/buffered-worker-pool.spec.js
+|[test/node-unit/buffered-worker-pool.spec.js](#user-content-r0s0)|14 ✅|||8ms|
+|[test/node-unit/cli/config.spec.js](#user-content-r0s1)|10 ✅|||8ms|
+|[test/node-unit/cli/node-flags.spec.js](#user-content-r0s2)|105 ✅|||9ms|
+|[test/node-unit/cli/options.spec.js](#user-content-r0s3)|36 ✅|||250ms|
+|[test/node-unit/cli/run-helpers.spec.js](#user-content-r0s4)|9 ✅|||8ms|
+|[test/node-unit/cli/run.spec.js](#user-content-r0s5)|40 ✅|||4ms|
+|[test/node-unit/mocha.spec.js](#user-content-r0s6)|24 ✅|||33ms|
+|[test/node-unit/parallel-buffered-runner.spec.js](#user-content-r0s7)|19 ✅|||23ms|
+|[test/node-unit/reporters/parallel-buffered.spec.js](#user-content-r0s8)|6 ✅|||16ms|
+|[test/node-unit/serializer.spec.js](#user-content-r0s9)|40 ✅|||31ms|
+|[test/node-unit/stack-trace-filter.spec.js](#user-content-r0s10)|2 ✅||4 ⚪|1ms|
+|[test/node-unit/utils.spec.js](#user-content-r0s11)|5 ✅|||1ms|
+|[test/node-unit/worker.spec.js](#user-content-r0s12)|15 ✅|||92ms|
+|[test/unit/context.spec.js](#user-content-r0s13)|8 ✅|||5ms|
+|[test/unit/duration.spec.js](#user-content-r0s14)|3 ✅|||166ms|
+|[test/unit/errors.spec.js](#user-content-r0s15)|13 ✅|||5ms|
+|[test/unit/globals.spec.js](#user-content-r0s16)|4 ✅|||0ms|
+|[test/unit/grep.spec.js](#user-content-r0s17)|8 ✅|||2ms|
+|[test/unit/hook-async.spec.js](#user-content-r0s18)|3 ✅|||1ms|
+|[test/unit/hook-sync-nested.spec.js](#user-content-r0s19)|4 ✅|||1ms|
+|[test/unit/hook-sync.spec.js](#user-content-r0s20)|3 ✅|||0ms|
+|[test/unit/hook-timeout.spec.js](#user-content-r0s21)|1 ✅|||0ms|
+|[test/unit/hook.spec.js](#user-content-r0s22)|4 ✅|||0ms|
+|[test/unit/mocha.spec.js](#user-content-r0s23)|115 ✅||1 ⚪|128ms|
+|[test/unit/overspecified-async.spec.js](#user-content-r0s24)|1 ✅|||3ms|
+|[test/unit/parse-query.spec.js](#user-content-r0s25)|2 ✅|||1ms|
+|[test/unit/plugin-loader.spec.js](#user-content-r0s26)|41 ✅||1 ⚪|16ms|
+|[test/unit/required-tokens.spec.js](#user-content-r0s27)|1 ✅|||0ms|
+|[test/unit/root.spec.js](#user-content-r0s28)|1 ✅|||0ms|
+|[test/unit/runnable.spec.js](#user-content-r0s29)|55 ✅|||122ms|
+|[test/unit/runner.spec.js](#user-content-r0s30)|77 ✅|||43ms|
+|[test/unit/suite.spec.js](#user-content-r0s31)|57 ✅|||14ms|
+|[test/unit/test.spec.js](#user-content-r0s32)|15 ✅|||0ms|
+|[test/unit/throw.spec.js](#user-content-r0s33)|9 ✅|||9ms|
+|[test/unit/timeout.spec.js](#user-content-r0s34)|8 ✅|||109ms|
+|[test/unit/utils.spec.js](#user-content-r0s35)|75 ✅|||24ms|
+### ✅ test/node-unit/buffered-worker-pool.spec.js
```
class BufferedWorkerPool constructor
✅ should apply defaults
@@ -73,7 +73,7 @@ class BufferedWorkerPool static method serializeOptions() when called multiple t
class BufferedWorkerPool static method serializeOptions() when passed no arguments
✅ should not throw
```
-### ✅ test/node-unit/cli/config.spec.js
+### ✅ test/node-unit/cli/config.spec.js
```
cli/config findConfig()
✅ should look for one of the config files using findup-sync
@@ -95,7 +95,7 @@ cli/config loadConfig() when parsing succeeds when supplied a filepath with ".ym
cli/config loadConfig() when supplied a filepath with unsupported extension
✅ should use the JSON parser
```
-### ✅ test/node-unit/cli/node-flags.spec.js
+### ✅ test/node-unit/cli/node-flags.spec.js
```
node-flags impliesNoTimeouts()
✅ should return true for inspect flags
@@ -209,7 +209,7 @@ node-flags unparseNodeFlags()
✅ should handle multiple v8 flags
✅ should handle single v8 flags
```
-### ✅ test/node-unit/cli/options.spec.js
+### ✅ test/node-unit/cli/options.spec.js
```
options loadOptions() "extension" handling when user does not supply "extension" option
✅ should retain the default
@@ -268,7 +268,7 @@ options loadOptions() when parameter provided rc file when path to config (`--co
✅ should not look for a config
✅ should throw to warn the user
```
-### ✅ test/node-unit/cli/run-helpers.spec.js
+### ✅ test/node-unit/cli/run-helpers.spec.js
```
helpers list() when given a comma-delimited string
✅ should return a flat array
@@ -287,7 +287,7 @@ helpers validateLegacyPlugin() when used with an "interfaces" key
helpers validateLegacyPlugin() when used with an unknown plugin type
✅ should fail
```
-### ✅ test/node-unit/cli/run.spec.js
+### ✅ test/node-unit/cli/run.spec.js
```
command run builder array type
✅ should include option extension
@@ -334,7 +334,7 @@ command run builder string type
✅ should include option timeout
✅ should include option ui
```
-### ✅ test/node-unit/mocha.spec.js
+### ✅ test/node-unit/mocha.spec.js
```
Mocha instance method addFile()
✅ should add the given file to the files array
@@ -378,7 +378,7 @@ Mocha instance method unloadFiles()
Mocha static method unloadFile()
✅ should unload a specific file from cache
```
-### ✅ test/node-unit/parallel-buffered-runner.spec.js
+### ✅ test/node-unit/parallel-buffered-runner.spec.js
```
parallel-buffered-runner ParallelBufferedRunner constructor
✅ should start in "IDLE" state
@@ -416,7 +416,7 @@ parallel-buffered-runner ParallelBufferedRunner instance method workerReporter()
parallel-buffered-runner ParallelBufferedRunner instance property _state
✅ should disallow an invalid state transition
```
-### ✅ test/node-unit/reporters/parallel-buffered.spec.js
+### ✅ test/node-unit/reporters/parallel-buffered.spec.js
```
ParallelBuffered constructor
✅ should listen for Runner events
@@ -429,7 +429,7 @@ ParallelBuffered instance method done
✅ should execute its callback with a SerializableWorkerResult
✅ should reset its `events` prop
```
-### ✅ test/node-unit/serializer.spec.js
+### ✅ test/node-unit/serializer.spec.js
```
serializer function deserialize when passed a non-object value
✅ should return the value
@@ -505,7 +505,7 @@ serializer SerializableWorkerResult static method isSerializedWorkerResult when
serializer SerializableWorkerResult static method isSerializedWorkerResult when passed an object without an appropriate `__type` prop
✅ should return `false`
```
-### ✅ test/node-unit/stack-trace-filter.spec.js
+### ✅ test/node-unit/stack-trace-filter.spec.js
```
stackTraceFilter() on browser
✅ does not strip out other bower_components
@@ -517,7 +517,7 @@ stackTraceFilter() on node on POSIX OS
stackTraceFilter() on node on Windows
✅ should work on Windows
```
-### ✅ test/node-unit/utils.spec.js
+### ✅ test/node-unit/utils.spec.js
```
utils function canonicalType()
✅ should return "asyncfunction" if the parameter is an async function
@@ -528,7 +528,7 @@ utils function type()
✅ should return "error" if the parameter is an Error
✅ should return "function" if the parameter is an async function
```
-### ✅ test/node-unit/worker.spec.js
+### ✅ test/node-unit/worker.spec.js
```
worker when run as main process
✅ should throw
@@ -557,7 +557,7 @@ worker when run as worker process function run() when the file at "filepath" is
worker when run as worker process function run() when the file at "filepath" is loadable when serialization succeeds
✅ should resolve with a SerializedWorkerResult
```
-### ✅ test/unit/context.spec.js
+### ✅ test/unit/context.spec.js
```
Context nested
✅ should work
@@ -574,7 +574,7 @@ methods slow()
methods timeout()
✅ should return the timeout
```
-### ✅ test/unit/duration.spec.js
+### ✅ test/unit/duration.spec.js
```
durations when fast
✅ should not highlight
@@ -583,7 +583,7 @@ durations when reasonable
durations when slow
✅ should highlight in red
```
-### ✅ test/unit/errors.spec.js
+### ✅ test/unit/errors.spec.js
```
Errors createForbiddenExclusivityError() when Mocha instance is not running in a worker process
✅ should output a message regarding --forbid-only
@@ -608,7 +608,7 @@ Errors warn()
✅ should ignore falsy messages
✅ should not cache messages
```
-### ✅ test/unit/globals.spec.js
+### ✅ test/unit/globals.spec.js
```
global leaks
✅ should cause tests to fail
@@ -616,7 +616,7 @@ global leaks
✅ should pass when prefixed "mocha-"
✅ should pass with wildcard
```
-### ✅ test/unit/grep.spec.js
+### ✅ test/unit/grep.spec.js
```
Mocha .grep()
✅ should add a RegExp to the mocha.options object
@@ -631,14 +631,14 @@ Mocha "grep" option
Mocha "invert" option
✅ should add a Boolean to the mocha.options object
```
-### ✅ test/unit/hook-async.spec.js
+### ✅ test/unit/hook-async.spec.js
```
async hooks
✅ one
✅ three
✅ two
```
-### ✅ test/unit/hook-sync-nested.spec.js
+### ✅ test/unit/hook-sync-nested.spec.js
```
serial nested
✅ bar
@@ -647,19 +647,19 @@ serial nested hooks
✅ one
✅ two
```
-### ✅ test/unit/hook-sync.spec.js
+### ✅ test/unit/hook-sync.spec.js
```
serial hooks
✅ one
✅ three
✅ two
```
-### ✅ test/unit/hook-timeout.spec.js
+### ✅ test/unit/hook-timeout.spec.js
```
hook timeout
✅ should work
```
-### ✅ test/unit/hook.spec.js
+### ✅ test/unit/hook.spec.js
```
Hook error
✅ should get the hook._error when called without arguments
@@ -668,7 +668,7 @@ Hook reset
✅ should call Runnable.reset
✅ should reset the error state
```
-### ✅ test/unit/mocha.spec.js
+### ✅ test/unit/mocha.spec.js
```
Mocha constructor
✅ should set _cleanReferencesAfterRun to true
@@ -868,18 +868,18 @@ Mocha instance method runGlobalTeardown() when fixture(s) are present
Mocha instance method unloadFile() when run in a browser
✅ should throw
```
-### ✅ test/unit/overspecified-async.spec.js
+### ✅ test/unit/overspecified-async.spec.js
```
overspecified asynchronous resolution method
✅ should fail when multiple methods are used
```
-### ✅ test/unit/parse-query.spec.js
+### ✅ test/unit/parse-query.spec.js
```
parseQuery()
✅ should get queryString and return key-value object
✅ should parse "+" as a space
```
-### ✅ test/unit/plugin-loader.spec.js
+### ✅ test/unit/plugin-loader.spec.js
```
plugin module class PluginLoader constructor when passed custom plugins
✅ should register the custom plugins
@@ -958,17 +958,17 @@ plugin module root hooks plugin 🎣 when impl is an array
plugin module root hooks plugin 🎣 when impl is an object of functions
⚪ should pass validation
```
-### ✅ test/unit/required-tokens.spec.js
+### ✅ test/unit/required-tokens.spec.js
```
using imported describe
✅ using imported it
```
-### ✅ test/unit/root.spec.js
+### ✅ test/unit/root.spec.js
```
root
✅ should be a valid suite
```
-### ✅ test/unit/runnable.spec.js
+### ✅ test/unit/runnable.spec.js
```
Runnable(title, fn) .run(fn) if async
✅ this.skip() should halt synchronous execution
@@ -1069,7 +1069,7 @@ Runnable(title, fn) when arity >= 1
✅ should be .async
✅ should not be .sync
```
-### ✅ test/unit/runner.spec.js
+### ✅ test/unit/runner.spec.js
```
Runner instance method _uncaught() when called with a non-Runner context
✅ should throw
@@ -1185,7 +1185,7 @@ Runner instance method uncaught() when provided an object argument when argument
Runner instance method workerReporter()
✅ should throw
```
-### ✅ test/unit/suite.spec.js
+### ✅ test/unit/suite.spec.js
```
Suite instance method addSuite()
✅ adds the suite to the suites collection
@@ -1278,7 +1278,7 @@ Test initialization
✅ should not throw if the title is a string
✅ should throw an error if the title isn't a string
```
-### ✅ test/unit/test.spec.js
+### ✅ test/unit/test.spec.js
```
Test .clone()
✅ should add/keep the retriedTest value
@@ -1300,7 +1300,7 @@ Test .reset()
✅ should call Runnable.reset
✅ should reset the run state
```
-### ✅ test/unit/throw.spec.js
+### ✅ test/unit/throw.spec.js
```
a test that throws non-extensible
✅ should not pass if throwing async and test is async
@@ -1315,7 +1315,7 @@ a test that throws undefined
✅ should not pass if throwing sync and test is async
✅ should not pass if throwing sync and test is sync
```
-### ✅ test/unit/timeout.spec.js
+### ✅ test/unit/timeout.spec.js
```
timeouts
✅ should allow overriding per-test
@@ -1333,7 +1333,7 @@ timeouts disabling using beforeEach
timeouts disabling using timeout(0)
✅ should suppress timeout(4)
```
-### ✅ test/unit/utils.spec.js
+### ✅ test/unit/utils.spec.js
```
lib/utils canonicalType()
✅ should recognize various types
diff --git a/__tests__/__outputs__/provider-test-results.md b/__tests__/__outputs__/provider-test-results.md
index 36abb6e..b2216ad 100644
--- a/__tests__/__outputs__/provider-test-results.md
+++ b/__tests__/__outputs__/provider-test-results.md
@@ -2,27 +2,27 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/flutter/provider-test-results.json|268 ✅|1 ❌||0ms|
-## ❌ fixtures/external/flutter/provider-test-results.json
+## ❌ fixtures/external/flutter/provider-test-results.json
**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](#user-content-r0s0)|24 ✅|||402ms|
+|[test/change_notifier_provider_test.dart](#user-content-r0s1)|10 ✅|||306ms|
+|[test/consumer_test.dart](#user-content-r0s2)|18 ✅|||340ms|
+|[test/context_test.dart](#user-content-r0s3)|31 ✅|||698ms|
+|[test/future_provider_test.dart](#user-content-r0s4)|10 ✅|||305ms|
+|[test/inherited_provider_test.dart](#user-content-r0s5)|81 ✅|||1s|
+|[test/listenable_provider_test.dart](#user-content-r0s6)|16 ✅|||353ms|
+|[test/listenable_proxy_provider_test.dart](#user-content-r0s7)|12 ✅|||373ms|
+|[test/multi_provider_test.dart](#user-content-r0s8)|3 ✅|||198ms|
+|[test/provider_test.dart](#user-content-r0s9)|11 ✅|||306ms|
+|[test/proxy_provider_test.dart](#user-content-r0s10)|16 ✅|||438ms|
+|[test/reassemble_test.dart](#user-content-r0s11)|3 ✅|||221ms|
+|[test/selector_test.dart](#user-content-r0s12)|17 ✅|||364ms|
+|[test/stateful_provider_test.dart](#user-content-r0s13)|4 ✅|||254ms|
+|[test/stream_provider_test.dart](#user-content-r0s14)|8 ✅|||282ms|
+|[test/value_listenable_provider_test.dart](#user-content-r0s15)|4 ✅|1 ❌||327ms|
+### ✅ test/builder_test.dart
```
ChangeNotifierProvider
✅ default
@@ -54,7 +54,7 @@ MultiProvider
✅ with ProxyProvider5
✅ with ProxyProvider6
```
-### ✅ test/change_notifier_provider_test.dart
+### ✅ test/change_notifier_provider_test.dart
```
✅ Use builder property, not child
ChangeNotifierProvider
@@ -68,7 +68,7 @@ ChangeNotifierProvider
✅ builder6
✅ builder0
```
-### ✅ test/consumer_test.dart
+### ✅ test/consumer_test.dart
```
consumer
✅ obtains value from Provider
@@ -95,7 +95,7 @@ consumer6
✅ crashed with no builder
✅ can be used inside MultiProvider
```
-### ✅ test/context_test.dart
+### ✅ test/context_test.dart
```
✅ watch in layoutbuilder
✅ select in layoutbuilder
@@ -130,7 +130,7 @@ BuildContext
✅ 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
@@ -144,7 +144,7 @@ BuildContext
FutureProvider()
✅ crashes if builder is null
```
-### ✅ test/inherited_provider_test.dart
+### ✅ test/inherited_provider_test.dart
```
✅ regression test #377
✅ rebuild on dependency flags update
@@ -233,7 +233,7 @@ DeferredInheritedProvider()
✅ dispose
✅ dispose no-op if never built
```
-### ✅ test/listenable_provider_test.dart
+### ✅ test/listenable_provider_test.dart
```
ListenableProvider
✅ works with MultiProvider
@@ -255,7 +255,7 @@ ListenableProvider stateful constructor
✅ 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
@@ -272,14 +272,14 @@ ListenableProxyProvider variants
✅ 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
```
-### ✅ test/provider_test.dart
+### ✅ test/provider_test.dart
```
✅ works with MultiProvider
Provider.of
@@ -295,7 +295,7 @@ Provider
✅ 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
@@ -316,13 +316,13 @@ ProxyProvider variants
✅ ProxyProvider5
✅ ProxyProvider6
```
-### ✅ test/reassemble_test.dart
+### ✅ test/reassemble_test.dart
```
✅ 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
@@ -342,14 +342,14 @@ ProxyProvider variants
✅ Selector5
✅ Selector6
```
-### ✅ test/stateful_provider_test.dart
+### ✅ test/stateful_provider_test.dart
```
✅ 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
@@ -361,7 +361,7 @@ StreamProvider()
✅ create and dispose stream with builder
✅ crashes if builder is null
```
-### ❌ test/value_listenable_provider_test.dart
+### ❌ test/value_listenable_provider_test.dart
```
valueListenableProvider
✅ rebuilds when value change
diff --git a/__tests__/__outputs__/pulsar-test-results-no-merge.md b/__tests__/__outputs__/pulsar-test-results-no-merge.md
index 99539b9..b1738a4 100644
--- a/__tests__/__outputs__/pulsar-test-results-no-merge.md
+++ b/__tests__/__outputs__/pulsar-test-results-no-merge.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml||1 ❌|1 ⚪|116ms|
-## ❌ fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml
+## ❌ fixtures/external/java/TEST-org.apache.pulsar.AddMissingPatchVersionTest.xml
**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
+|[org.apache.pulsar.AddMissingPatchVersionTest](#user-content-r0s0)||1 ❌|1 ⚪|116ms|
+### ❌ org.apache.pulsar.AddMissingPatchVersionTest
```
⚪ testVersionStrings
❌ testVersionStrings
diff --git a/__tests__/__outputs__/pulsar-test-results.md b/__tests__/__outputs__/pulsar-test-results.md
index b6d910c..a9a5290 100644
--- a/__tests__/__outputs__/pulsar-test-results.md
+++ b/__tests__/__outputs__/pulsar-test-results.md
@@ -2,193 +2,193 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/java/pulsar-test-report.xml|793 ✅|1 ❌|14 ⚪|2127s|
-## ❌ fixtures/external/java/pulsar-test-report.xml
+## ❌ fixtures/external/java/pulsar-test-report.xml
**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
+|[org.apache.pulsar.AddMissingPatchVersionTest](#user-content-r0s0)||1 ❌|1 ⚪|116ms|
+|[org.apache.pulsar.broker.admin.AdminApiOffloadTest](#user-content-r0s1)|7 ✅|||19s|
+|[org.apache.pulsar.broker.auth.AuthenticationServiceTest](#user-content-r0s2)|2 ✅|||185ms|
+|[org.apache.pulsar.broker.auth.AuthLogsTest](#user-content-r0s3)|2 ✅|||1s|
+|[org.apache.pulsar.broker.auth.AuthorizationTest](#user-content-r0s4)|1 ✅|||2s|
+|[org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test](#user-content-r0s5)|4 ✅|||2s|
+|[org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest](#user-content-r0s6)|2 ✅|||33s|
+|[org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests](#user-content-r0s7)|2 ✅|||32s|
+|[org.apache.pulsar.broker.namespace.NamespaceServiceTest](#user-content-r0s8)|10 ✅|||75s|
+|[org.apache.pulsar.broker.namespace.NamespaceUnloadingTest](#user-content-r0s9)|2 ✅|||14s|
+|[org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest](#user-content-r0s10)|1 ✅|||16s|
+|[org.apache.pulsar.broker.namespace.OwnershipCacheTest](#user-content-r0s11)|8 ✅|||16s|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlersTest](#user-content-r0s12)|6 ✅|||946ms|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest](#user-content-r0s13)|3 ✅|||7s|
+|[org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest](#user-content-r0s14)|1 ✅|||15ms|
+|[org.apache.pulsar.broker.PulsarServiceTest](#user-content-r0s15)|2 ✅|||96ms|
+|[org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest](#user-content-r0s16)|3 ✅|||14s|
+|[org.apache.pulsar.broker.service.ReplicatorTest](#user-content-r0s17)|22 ✅|||40s|
+|[org.apache.pulsar.broker.service.TopicOwnerTest](#user-content-r0s18)|8 ✅|||114s|
+|[org.apache.pulsar.broker.SLAMonitoringTest](#user-content-r0s19)|4 ✅|||9s|
+|[org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest](#user-content-r0s20)|2 ✅|||49ms|
+|[org.apache.pulsar.broker.stats.ConsumerStatsTest](#user-content-r0s21)|3 ✅|||21s|
+|[org.apache.pulsar.broker.stats.ManagedCursorMetricsTest](#user-content-r0s22)|1 ✅|||281ms|
+|[org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest](#user-content-r0s23)|1 ✅|||285ms|
+|[org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest](#user-content-r0s24)|1 ✅|||40ms|
+|[org.apache.pulsar.broker.stats.PrometheusMetricsTest](#user-content-r0s25)|15 ✅|||83s|
+|[org.apache.pulsar.broker.stats.SubscriptionStatsTest](#user-content-r0s26)|2 ✅|||2s|
+|[org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest](#user-content-r0s27)|1 ✅|||1s|
+|[org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest](#user-content-r0s28)|3 ✅|||28ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest](#user-content-r0s29)|4 ✅|||93ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest](#user-content-r0s30)|7 ✅|||81ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest](#user-content-r0s31)|1 ✅|||14ms|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest](#user-content-r0s32)|2 ✅|||38s|
+|[org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest](#user-content-r0s33)|2 ✅||1 ⚪|49s|
+|[org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest](#user-content-r0s34)|3 ✅|||95ms|
+|[org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest](#user-content-r0s35)|1 ✅|||1s|
+|[org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest](#user-content-r0s36)|2 ✅||1 ⚪|57s|
+|[org.apache.pulsar.broker.transaction.TransactionConsumeTest](#user-content-r0s37)|2 ✅|||30s|
+|[org.apache.pulsar.broker.web.RestExceptionTest](#user-content-r0s38)|3 ✅|||37ms|
+|[org.apache.pulsar.broker.web.WebServiceTest](#user-content-r0s39)|9 ✅|||27s|
+|[org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest](#user-content-r0s40)|4 ✅|||8s|
+|[org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest](#user-content-r0s41)|4 ✅|||30ms|
+|[org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest](#user-content-r0s42)|4 ✅|||14s|
+|[org.apache.pulsar.client.impl.BatchMessageIndexAckTest](#user-content-r0s43)|5 ✅|||44s|
+|[org.apache.pulsar.client.impl.BrokerClientIntegrationTest](#user-content-r0s44)|15 ✅|||148s|
+|[org.apache.pulsar.client.impl.CompactedOutBatchMessageTest](#user-content-r0s45)|1 ✅|||1s|
+|[org.apache.pulsar.client.impl.ConsumerAckResponseTest](#user-content-r0s46)|1 ✅|||549ms|
+|[org.apache.pulsar.client.impl.ConsumerConfigurationTest](#user-content-r0s47)|4 ✅|||12s|
+|[org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate](#user-content-r0s48)|7 ✅|||4s|
+|[org.apache.pulsar.client.impl.ConsumerUnsubscribeTest](#user-content-r0s49)|1 ✅|||129ms|
+|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth](#user-content-r0s50)|3 ✅|||23s|
+|[org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth](#user-content-r0s51)|3 ✅|||8s|
+|[org.apache.pulsar.client.impl.KeyStoreTlsTest](#user-content-r0s52)|1 ✅|||183ms|
+|[org.apache.pulsar.client.impl.MessageChecksumTest](#user-content-r0s53)|3 ✅|||47s|
+|[org.apache.pulsar.client.impl.MessageChunkingTest](#user-content-r0s54)|8 ✅||1 ⚪|73s|
+|[org.apache.pulsar.client.impl.MessageParserTest](#user-content-r0s55)|2 ✅|||5s|
+|[org.apache.pulsar.client.impl.MultiTopicsReaderTest](#user-content-r0s56)|8 ✅|||35s|
+|[org.apache.pulsar.client.impl.NegativeAcksTest](#user-content-r0s57)|32 ✅|||11s|
+|[org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest](#user-content-r0s58)|11 ✅|||63s|
+|[org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest](#user-content-r0s59)|5 ✅|||34s|
+|[org.apache.pulsar.client.impl.PulsarMultiHostClientTest](#user-content-r0s60)|3 ✅|||15s|
+|[org.apache.pulsar.client.impl.RawMessageSerDeserTest](#user-content-r0s61)|1 ✅|||10ms|
+|[org.apache.pulsar.client.impl.SchemaDeleteTest](#user-content-r0s62)|1 ✅|||2s|
+|[org.apache.pulsar.client.impl.SequenceIdWithErrorTest](#user-content-r0s63)|3 ✅||2 ⚪|18s|
+|[org.apache.pulsar.client.impl.TopicDoesNotExistsTest](#user-content-r0s64)|2 ✅|||4s|
+|[org.apache.pulsar.client.impl.TopicFromMessageTest](#user-content-r0s65)|5 ✅|||14s|
+|[org.apache.pulsar.client.impl.TopicsConsumerImplTest](#user-content-r0s66)|17 ✅|||133s|
+|[org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest](#user-content-r0s67)|7 ✅|||44s|
+|[org.apache.pulsar.client.impl.ZeroQueueSizeTest](#user-content-r0s68)|14 ✅|||16s|
+|[org.apache.pulsar.common.api.raw.RawMessageImplTest](#user-content-r0s69)|1 ✅|||316ms|
+|[org.apache.pulsar.common.compression.CommandsTest](#user-content-r0s70)|1 ✅|||30ms|
+|[org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest](#user-content-r0s71)|6 ✅|||223ms|
+|[org.apache.pulsar.common.compression.CompressorCodecTest](#user-content-r0s72)|45 ✅|||737ms|
+|[org.apache.pulsar.common.compression.Crc32cChecksumTest](#user-content-r0s73)|6 ✅|||5s|
+|[org.apache.pulsar.common.lookup.data.LookupDataTest](#user-content-r0s74)|4 ✅|||2s|
+|[org.apache.pulsar.common.naming.MetadataTests](#user-content-r0s75)|2 ✅|||161ms|
+|[org.apache.pulsar.common.naming.NamespaceBundlesTest](#user-content-r0s76)|5 ✅|||99ms|
+|[org.apache.pulsar.common.naming.NamespaceBundleTest](#user-content-r0s77)|6 ✅|||64ms|
+|[org.apache.pulsar.common.naming.NamespaceNameTest](#user-content-r0s78)|2 ✅|||207ms|
+|[org.apache.pulsar.common.naming.ServiceConfigurationTest](#user-content-r0s79)|4 ✅|||48ms|
+|[org.apache.pulsar.common.naming.TopicNameTest](#user-content-r0s80)|4 ✅|||529ms|
+|[org.apache.pulsar.common.net.ServiceURITest](#user-content-r0s81)|21 ✅|||237ms|
+|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest](#user-content-r0s82)|1 ✅|||15ms|
+|[org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest](#user-content-r0s83)|1 ✅|||19ms|
+|[org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest](#user-content-r0s84)|6 ✅|||64ms|
+|[org.apache.pulsar.common.policies.data.BacklogQuotaTest](#user-content-r0s85)|1 ✅|||12ms|
+|[org.apache.pulsar.common.policies.data.ClusterDataTest](#user-content-r0s86)|1 ✅|||9ms|
+|[org.apache.pulsar.common.policies.data.ConsumerStatsTest](#user-content-r0s87)|1 ✅|||8ms|
+|[org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest](#user-content-r0s88)|2 ✅|||948ms|
+|[org.apache.pulsar.common.policies.data.LocalPolicesTest](#user-content-r0s89)|1 ✅|||48ms|
+|[org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest](#user-content-r0s90)|1 ✅|||76ms|
+|[org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest](#user-content-r0s91)|1 ✅|||45ms|
+|[org.apache.pulsar.common.policies.data.OffloadPoliciesTest](#user-content-r0s92)|6 ✅|||216ms|
+|[org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest](#user-content-r0s93)|1 ✅|||12ms|
+|[org.apache.pulsar.common.policies.data.PersistencePoliciesTest](#user-content-r0s94)|1 ✅|||19ms|
+|[org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest](#user-content-r0s95)|1 ✅|||29ms|
+|[org.apache.pulsar.common.policies.data.PersistentTopicStatsTest](#user-content-r0s96)|2 ✅|||51ms|
+|[org.apache.pulsar.common.policies.data.PoliciesDataTest](#user-content-r0s97)|4 ✅|||1s|
+|[org.apache.pulsar.common.policies.data.PublisherStatsTest](#user-content-r0s98)|2 ✅|||37ms|
+|[org.apache.pulsar.common.policies.data.ReplicatorStatsTest](#user-content-r0s99)|2 ✅|||30ms|
+|[org.apache.pulsar.common.policies.data.ResourceQuotaTest](#user-content-r0s100)|2 ✅|||45ms|
+|[org.apache.pulsar.common.policies.data.RetentionPolicesTest](#user-content-r0s101)|1 ✅|||8ms|
+|[org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest](#user-content-r0s102)|1 ✅|||22ms|
+|[org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest](#user-content-r0s103)|1 ✅|||1ms|
+|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest](#user-content-r0s104)|7 ✅|||265ms|
+|[org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest](#user-content-r0s105)|7 ✅|||309ms|
+|[org.apache.pulsar.common.protocol.ByteBufPairTest](#user-content-r0s106)|2 ✅|||5s|
+|[org.apache.pulsar.common.protocol.CommandUtilsTests](#user-content-r0s107)|7 ✅|||3s|
+|[org.apache.pulsar.common.protocol.MarkersTest](#user-content-r0s108)|6 ✅|||3s|
+|[org.apache.pulsar.common.protocol.PulsarDecoderTest](#user-content-r0s109)|1 ✅|||4s|
+|[org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest](#user-content-r0s110)|1 ✅|||82ms|
+|[org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest](#user-content-r0s111)|2 ✅|||13ms|
+|[org.apache.pulsar.common.util.collections.ConcurrentBitSetRecyclableTest](#user-content-r0s112)|2 ✅|||63ms|
+|[org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest](#user-content-r0s113)|13 ✅|||28s|
+|[org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest](#user-content-r0s114)|15 ✅|||2s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest](#user-content-r0s115)|12 ✅|||9s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest](#user-content-r0s116)|11 ✅|||7s|
+|[org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest](#user-content-r0s117)|13 ✅|||1s|
+|[org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest](#user-content-r0s118)|9 ✅|||342ms|
+|[org.apache.pulsar.common.util.collections.FieldParserTest](#user-content-r0s119)|2 ✅|||64ms|
+|[org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest](#user-content-r0s120)|6 ✅|||350ms|
+|[org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest](#user-content-r0s121)|15 ✅|||3s|
+|[org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest](#user-content-r0s122)|3 ✅|||238ms|
+|[org.apache.pulsar.common.util.FieldParserTest](#user-content-r0s123)|1 ✅|||242ms|
+|[org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest](#user-content-r0s124)|6 ✅|||6s|
+|[org.apache.pulsar.common.util.netty.ChannelFuturesTest](#user-content-r0s125)|5 ✅|||2s|
+|[org.apache.pulsar.common.util.RateLimiterTest](#user-content-r0s126)|11 ✅|||7s|
+|[org.apache.pulsar.common.util.ReflectionsTest](#user-content-r0s127)|12 ✅|||172ms|
+|[org.apache.pulsar.common.util.RelativeTimeUtilTest](#user-content-r0s128)|1 ✅|||39ms|
+|[org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest](#user-content-r0s129)|1 ✅|||5s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest](#user-content-r0s130)|2 ✅|||28s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionPublishTest](#user-content-r0s131)|3 ✅|||42s|
+|[org.apache.pulsar.functions.worker.PulsarFunctionTlsTest](#user-content-r0s132)|1 ✅|||12s|
+|[org.apache.pulsar.io.PulsarFunctionTlsTest](#user-content-r0s133)|1 ✅|||30s|
+|[org.apache.pulsar.proxy.server.AdminProxyHandlerTest](#user-content-r0s134)|1 ✅|||474ms|
+|[org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest](#user-content-r0s135)|1 ✅|||2s|
+|[org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest](#user-content-r0s136)|1 ✅|||10ms|
+|[org.apache.pulsar.proxy.server.ProxyAdditionalServletTest](#user-content-r0s137)|1 ✅|||125ms|
+|[org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest](#user-content-r0s138)|1 ✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyAuthenticationTest](#user-content-r0s139)|1 ✅|||17s|
+|[org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest](#user-content-r0s140)|1 ✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest](#user-content-r0s141)|1 ✅|||511ms|
+|[org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest](#user-content-r0s142)|1 ✅|||32s|
+|[org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest](#user-content-r0s143)|10 ✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth](#user-content-r0s144)|3 ✅|||7s|
+|[org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth](#user-content-r0s145)|3 ✅|||7s|
+|[org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest](#user-content-r0s146)|1 ✅|||3s|
+|[org.apache.pulsar.proxy.server.ProxyParserTest](#user-content-r0s147)|5 ✅|||1s|
+|[org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest](#user-content-r0s148)|1 ✅|||10s|
+|[org.apache.pulsar.proxy.server.ProxyStatsTest](#user-content-r0s149)|3 ✅|||533ms|
+|[org.apache.pulsar.proxy.server.ProxyTest](#user-content-r0s150)|6 ✅|||3s|
+|[org.apache.pulsar.proxy.server.ProxyTlsTest](#user-content-r0s151)|2 ✅|||414ms|
+|[org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth](#user-content-r0s152)|1 ✅|||4ms|
+|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest](#user-content-r0s153)|1 ✅|||2s|
+|[org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest](#user-content-r0s154)|13 ✅|||33s|
+|[org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest](#user-content-r0s155)|1 ✅|||2s|
+|[org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest](#user-content-r0s156)|3 ✅|||8s|
+|[org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest](#user-content-r0s157)|2 ✅|||114ms|
+|[org.apache.pulsar.PulsarBrokerStarterTest](#user-content-r0s158)|9 ✅|||591ms|
+|[org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest](#user-content-r0s159)|23 ✅|||107s|
+|[org.apache.pulsar.schema.PartitionedTopicSchemaTest](#user-content-r0s160)|1 ✅|||29s|
+|[org.apache.pulsar.schema.SchemaTest](#user-content-r0s161)|3 ✅|||31s|
+|[org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest](#user-content-r0s162)|2 ✅|||41s|
+|[org.apache.pulsar.tests.EnumValuesDataProviderTest](#user-content-r0s163)|6 ✅|||23ms|
+|[org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest](#user-content-r0s164)|1 ✅||4 ⚪|36ms|
+|[org.apache.pulsar.tests.TestRetrySupportRetryTest](#user-content-r0s165)|1 ✅||4 ⚪|27ms|
+|[org.apache.pulsar.tests.TestRetrySupportSuccessTest](#user-content-r0s166)|3 ✅|||1ms|
+|[org.apache.pulsar.tests.ThreadDumpUtilTest](#user-content-r0s167)|2 ✅|||17ms|
+|[org.apache.pulsar.utils.SimpleTextOutputStreamTest](#user-content-r0s168)|4 ✅|||50ms|
+|[org.apache.pulsar.utils.StatsOutputStreamTest](#user-content-r0s169)|6 ✅|||59ms|
+|[org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest](#user-content-r0s170)|4 ✅|||29s|
+|[org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest](#user-content-r0s171)|1 ✅|||1s|
+|[org.apache.pulsar.websocket.proxy.ProxyConfigurationTest](#user-content-r0s172)|2 ✅|||9s|
+|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest](#user-content-r0s173)|1 ✅|||11s|
+|[org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest](#user-content-r0s174)|1 ✅|||7s|
+|[org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest](#user-content-r0s175)|4 ✅|||30s|
+### ❌ org.apache.pulsar.AddMissingPatchVersionTest
```
⚪ 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
@@ -198,38 +198,38 @@
✅ testOffloadPolicies
✅ testOffloadPoliciesApi
```
-### ✅ org.apache.pulsar.broker.auth.AuthenticationServiceTest
+### ✅ org.apache.pulsar.broker.auth.AuthenticationServiceTest
```
✅ testAuthentication
✅ testAuthenticationHttp
```
-### ✅ org.apache.pulsar.broker.auth.AuthLogsTest
+### ✅ org.apache.pulsar.broker.auth.AuthLogsTest
```
✅ httpEndpoint
✅ binaryEndpoint
```
-### ✅ org.apache.pulsar.broker.auth.AuthorizationTest
+### ✅ org.apache.pulsar.broker.auth.AuthorizationTest
```
✅ simple
```
-### ✅ org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test
+### ✅ org.apache.pulsar.broker.lookup.http.HttpTopicLookupv2Test
```
✅ crossColoLookup
✅ testNotEnoughLookupPermits
✅ testValidateReplicationSettingsOnNamespace
✅ testDataPojo
```
-### ✅ org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceCreateBundlesTest
```
✅ testCreateNamespaceWithDefaultBundles
✅ testSplitBundleUpdatesLocalPoliciesWithoutOverwriting
```
-### ✅ org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests
+### ✅ org.apache.pulsar.broker.namespace.NamespaceOwnershipListenerTests
```
✅ testGetAllPartitions
✅ testNamespaceBundleOwnershipListener
```
-### ✅ org.apache.pulsar.broker.namespace.NamespaceServiceTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceServiceTest
```
✅ testSplitMapWithRefreshedStatMap
✅ testRemoveOwnershipNamespaceBundle
@@ -242,16 +242,16 @@
✅ testCreateNamespaceWithDefaultNumberOfBundles
✅ testRemoveOwnershipAndSplitBundle
```
-### ✅ org.apache.pulsar.broker.namespace.NamespaceUnloadingTest
+### ✅ org.apache.pulsar.broker.namespace.NamespaceUnloadingTest
```
✅ testUnloadNotLoadedNamespace
✅ testUnloadPartiallyLoadedNamespace
```
-### ✅ org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest
+### ✅ org.apache.pulsar.broker.namespace.OwnerShipCacheForCurrentServerTest
```
✅ testOwnershipForCurrentServer
```
-### ✅ org.apache.pulsar.broker.namespace.OwnershipCacheTest
+### ✅ org.apache.pulsar.broker.namespace.OwnershipCacheTest
```
✅ testGetOwnedServiceUnits
✅ testRemoveOwnership
@@ -262,7 +262,7 @@
✅ testDisableOwnership
✅ testReestablishOwnership
```
-### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlersTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlersTest
```
✅ testStart
✅ testGetProtocol
@@ -271,28 +271,28 @@
✅ testNewChannelInitializersOverlapped
✅ testGetProtocolDataToAdvertise
```
-### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerUtilsTest
```
✅ testLoadProtocolHandler
✅ testLoadProtocolHandlerBlankHandlerClass
✅ testLoadProtocolHandlerWrongHandlerClass
```
-### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest
+### ✅ org.apache.pulsar.broker.protocol.ProtocolHandlerWithClassLoaderTest
```
✅ testWrapper
```
-### ✅ org.apache.pulsar.broker.PulsarServiceTest
+### ✅ org.apache.pulsar.broker.PulsarServiceTest
```
✅ testGetWorkerService
✅ testGetWorkerServiceException
```
-### ✅ org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest
+### ✅ org.apache.pulsar.broker.service.MessagePublishBufferThrottleTest
```
✅ testMessagePublishBufferThrottleEnable
✅ testBlockByPublishRateLimiting
✅ testMessagePublishBufferThrottleDisabled
```
-### ✅ org.apache.pulsar.broker.service.ReplicatorTest
+### ✅ org.apache.pulsar.broker.service.ReplicatorTest
```
✅ testResumptionAfterBacklogRelaxed
✅ testReplicationOverrides
@@ -317,7 +317,7 @@
✅ testFailures
✅ testReplicatorProducerClosing
```
-### ✅ org.apache.pulsar.broker.service.TopicOwnerTest
+### ✅ org.apache.pulsar.broker.service.TopicOwnerTest
```
✅ testReleaseOwnershipWithZookeeperDisconnectedBeforeOwnershipNodeDeleted
✅ testAcquireOwnershipWithZookeeperDisconnectedAfterOwnershipNodeCreated
@@ -328,37 +328,37 @@
✅ testReleaseOwnershipWithZookeeperDisconnectedAfterOwnershipNodeDeleted
✅ testReestablishOwnershipAfterInvalidateCache
```
-### ✅ org.apache.pulsar.broker.SLAMonitoringTest
+### ✅ org.apache.pulsar.broker.SLAMonitoringTest
```
✅ testOwnedNamespaces
✅ testOwnershipAfterSetup
✅ testUnloadIfBrokerCrashes
✅ testOwnershipViaAdminAfterSetup
```
-### ✅ org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest
+### ✅ org.apache.pulsar.broker.stats.BookieClientsStatsGeneratorTest
```
✅ testJvmDirectMemoryUsedMetric
✅ testBookieClientStatsGenerator
```
-### ✅ org.apache.pulsar.broker.stats.ConsumerStatsTest
+### ✅ org.apache.pulsar.broker.stats.ConsumerStatsTest
```
✅ testAckStatsOnPartitionedTopicForExclusiveSubscription
✅ testConsumerStatsOnZeroMaxUnackedMessagesPerConsumer
✅ testUpdateStatsForActiveConsumerAndSubscription
```
-### ✅ org.apache.pulsar.broker.stats.ManagedCursorMetricsTest
+### ✅ org.apache.pulsar.broker.stats.ManagedCursorMetricsTest
```
✅ testManagedCursorMetrics
```
-### ✅ org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest
+### ✅ org.apache.pulsar.broker.stats.ManagedLedgerMetricsTest
```
✅ testManagedLedgerMetrics
```
-### ✅ org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest
+### ✅ org.apache.pulsar.broker.stats.prometheus.AggregatedNamespaceStatsTest
```
✅ testSimpleAggregation
```
-### ✅ org.apache.pulsar.broker.stats.PrometheusMetricsTest
+### ✅ org.apache.pulsar.broker.stats.PrometheusMetricsTest
```
✅ testPerTopicStats
✅ testAuthMetrics
@@ -376,29 +376,29 @@
✅ testManagedLedgerCacheStats
✅ testManagedLedgerStats
```
-### ✅ org.apache.pulsar.broker.stats.SubscriptionStatsTest
+### ✅ org.apache.pulsar.broker.stats.SubscriptionStatsTest
```
✅ testConsumersAfterMarkDelete
✅ testNonContiguousDeletedMessagesRanges
```
-### ✅ org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest
+### ✅ org.apache.pulsar.broker.systopic.NamespaceEventsSystemTopicServiceTest
```
✅ testSendAndReceiveNamespaceEvents
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.InMemTransactionBufferReaderTest
```
✅ testCloseReleaseAllEntries
✅ testInvalidNumEntriesArgument
✅ testEndOfTransactionException
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferClientTest
```
✅ testAbortOnTopic
✅ testAbortOnSubscription
✅ testCommitOnTopic
✅ testCommitOnSubscription
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionBufferTest
```
✅ testOpenReaderOnNonExistentTxn
✅ testAbortCommittedTxn
@@ -408,49 +408,49 @@
✅ testCommitTxn
✅ testOpenReaderOnAnOpenTxn
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionEntryImplTest
```
✅ testCloseShouldReleaseBuffer
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionLowWaterMarkTest
```
✅ testTransactionBufferLowWaterMark
✅ testPendingAckLowWaterMark
```
-### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest
+### ✅ org.apache.pulsar.broker.transaction.buffer.TransactionStablePositionTest
```
✅ commitTxnTest
✅ abortTxnTest
⚪ commitTxnTest
```
-### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest
+### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionCoordinatorClientTest
```
✅ testClientStart
✅ testCommitAndAbort
✅ testNewTxn
```
-### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest
+### ✅ org.apache.pulsar.broker.transaction.coordinator.TransactionMetaStoreAssignmentTest
```
✅ testTransactionMetaStoreAssignAndFailover
```
-### ✅ org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest
+### ✅ org.apache.pulsar.broker.transaction.pendingack.PendingAckInMemoryDeleteTest
```
⚪ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
✅ txnAckTestNoBatchAndSharedSubMemoryDeleteTest
✅ txnAckTestBatchAndSharedSubMemoryDeleteTest
```
-### ✅ org.apache.pulsar.broker.transaction.TransactionConsumeTest
+### ✅ org.apache.pulsar.broker.transaction.TransactionConsumeTest
```
✅ noSortedTest
✅ sortedTest
```
-### ✅ org.apache.pulsar.broker.web.RestExceptionTest
+### ✅ org.apache.pulsar.broker.web.RestExceptionTest
```
✅ testRestException
✅ testWebApplicationException
✅ testOtherException
```
-### ✅ org.apache.pulsar.broker.web.WebServiceTest
+### ✅ org.apache.pulsar.broker.web.WebServiceTest
```
✅ testTlsAuthDisallowInsecure
✅ testBrokerReady
@@ -462,28 +462,28 @@
✅ testTlsDisabled
✅ testRateLimiting
```
-### ✅ org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest
+### ✅ org.apache.pulsar.client.impl.AdminApiKeyStoreTlsAuthTest
```
✅ testAuthorizedUserAsOriginalPrincipal
✅ testSuperUserCantListNamespaces
✅ testPersistentList
✅ testSuperUserCanListTenants
```
-### ✅ org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIdImplSerializationTest
```
✅ testSerializationEmpty
✅ testSerialization1
✅ testSerializationNull
✅ testSerialization2
```
-### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckDisableTest
```
✅ testBatchMessageIndexAckForExclusiveSubscription
✅ testBatchMessageIndexAckForSharedSubscription
✅ testBatchMessageIndexAckForExclusiveSubscription
✅ testBatchMessageIndexAckForSharedSubscription
```
-### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckTest
+### ✅ org.apache.pulsar.client.impl.BatchMessageIndexAckTest
```
✅ testBatchMessageIndexAckForSharedSubscription
✅ testBatchMessageIndexAckForSharedSubscription
@@ -491,7 +491,7 @@
✅ testBatchMessageIndexAckForExclusiveSubscription
✅ testBatchMessageIndexAckForExclusiveSubscription
```
-### ✅ org.apache.pulsar.client.impl.BrokerClientIntegrationTest
+### ✅ org.apache.pulsar.client.impl.BrokerClientIntegrationTest
```
✅ testDisconnectClientWithoutClosingConnection
✅ testResetCursor
@@ -509,22 +509,22 @@
✅ testMaxConcurrentTopicLoading
✅ testCloseConnectionOnInternalServerError
```
-### ✅ org.apache.pulsar.client.impl.CompactedOutBatchMessageTest
+### ✅ org.apache.pulsar.client.impl.CompactedOutBatchMessageTest
```
✅ testCompactedOutMessages
```
-### ✅ org.apache.pulsar.client.impl.ConsumerAckResponseTest
+### ✅ org.apache.pulsar.client.impl.ConsumerAckResponseTest
```
✅ testAckResponse
```
-### ✅ org.apache.pulsar.client.impl.ConsumerConfigurationTest
+### ✅ org.apache.pulsar.client.impl.ConsumerConfigurationTest
```
✅ testReadCompactNonPersistentExclusive
✅ testReadCompactPersistentExclusive
✅ testReadCompactPersistentFailover
✅ testReadCompactPersistentShared
```
-### ✅ org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate
+### ✅ org.apache.pulsar.client.impl.ConsumerDedupPermitsUpdate
```
✅ testConsumerDedup
✅ testConsumerDedup
@@ -534,33 +534,33 @@
✅ testConsumerDedup
✅ testConsumerDedup
```
-### ✅ org.apache.pulsar.client.impl.ConsumerUnsubscribeTest
+### ✅ org.apache.pulsar.client.impl.ConsumerUnsubscribeTest
```
✅ testConsumerUnsubscribeReference
```
-### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithAuth
```
✅ testTlsClientAuthOverHTTPProtocol
✅ testTlsClientAuthOverBinaryProtocol
✅ testTlsLargeSizeMessage
```
-### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsProducerConsumerTestWithoutAuth
```
✅ testTlsClientAuthOverHTTPProtocol
✅ testTlsClientAuthOverBinaryProtocol
✅ testTlsLargeSizeMessage
```
-### ✅ org.apache.pulsar.client.impl.KeyStoreTlsTest
+### ✅ org.apache.pulsar.client.impl.KeyStoreTlsTest
```
✅ testValidate
```
-### ✅ org.apache.pulsar.client.impl.MessageChecksumTest
+### ✅ org.apache.pulsar.client.impl.MessageChecksumTest
```
✅ testChecksumCompatibilityInMixedVersionBrokerCluster
✅ testTamperingMessageIsDetected
✅ testChecksumCompatibilityInMixedVersionBrokerCluster
```
-### ✅ org.apache.pulsar.client.impl.MessageChunkingTest
+### ✅ org.apache.pulsar.client.impl.MessageChunkingTest
```
✅ testPublishWithFailure
✅ testInvalidUseCaseForChunking
@@ -572,12 +572,12 @@
✅ testLargeMessage
⚪ testMaxPendingChunkMessages
```
-### ✅ org.apache.pulsar.client.impl.MessageParserTest
+### ✅ org.apache.pulsar.client.impl.MessageParserTest
```
✅ testWithoutBatches
✅ testWithBatches
```
-### ✅ org.apache.pulsar.client.impl.MultiTopicsReaderTest
+### ✅ org.apache.pulsar.client.impl.MultiTopicsReaderTest
```
✅ testReadMessageWithBatchingWithMessageInclusive
✅ testKeyHashRangeReader
@@ -588,7 +588,7 @@
✅ testReadMessageWithoutBatching
✅ testReaderWithTimeLong
```
-### ✅ org.apache.pulsar.client.impl.NegativeAcksTest
+### ✅ org.apache.pulsar.client.impl.NegativeAcksTest
```
✅ testNegativeAcks
✅ testNegativeAcks
@@ -623,7 +623,7 @@
✅ testNegativeAcks
✅ testNegativeAcks
```
-### ✅ org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest
+### ✅ org.apache.pulsar.client.impl.PatternTopicsConsumerImplTest
```
✅ testStartEmptyPatternConsumer
✅ testBinaryProtoToGetTopicsOfNamespaceAll
@@ -637,7 +637,7 @@
✅ testTopicsListMinus
✅ testAutoSubscribePatternConsumer
```
-### ✅ org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest
+### ✅ org.apache.pulsar.client.impl.PerMessageUnAcknowledgedRedeliveryTest
```
✅ testSharedAckedNormalTopic
✅ testUnAckedMessageTrackerSize
@@ -645,21 +645,21 @@
✅ testExclusiveAckedNormalTopic
✅ testFailoverAckedNormalTopic
```
-### ✅ org.apache.pulsar.client.impl.PulsarMultiHostClientTest
+### ✅ org.apache.pulsar.client.impl.PulsarMultiHostClientTest
```
✅ testMultiHostUrlRetrySuccess
✅ testGetPartitionedTopicDataTimeout
✅ testGetPartitionedTopicMetaData
```
-### ✅ org.apache.pulsar.client.impl.RawMessageSerDeserTest
+### ✅ org.apache.pulsar.client.impl.RawMessageSerDeserTest
```
✅ testSerializationAndDeserialization
```
-### ✅ org.apache.pulsar.client.impl.SchemaDeleteTest
+### ✅ org.apache.pulsar.client.impl.SchemaDeleteTest
```
✅ createTopicDeleteTopicCreateTopic
```
-### ✅ org.apache.pulsar.client.impl.SequenceIdWithErrorTest
+### ✅ org.apache.pulsar.client.impl.SequenceIdWithErrorTest
```
✅ testCheckSequenceId
✅ testDeleteTopicWithMissingData
@@ -667,12 +667,12 @@
⚪ testCrashBrokerWithoutCursorLedgerLeak
⚪ testSkipCorruptDataLedger
```
-### ✅ org.apache.pulsar.client.impl.TopicDoesNotExistsTest
+### ✅ org.apache.pulsar.client.impl.TopicDoesNotExistsTest
```
✅ testCreateConsumerOnNotExistsTopic
✅ testCreateProducerOnNotExistsTopic
```
-### ✅ org.apache.pulsar.client.impl.TopicFromMessageTest
+### ✅ org.apache.pulsar.client.impl.TopicFromMessageTest
```
✅ testSingleTopicConsumerNoBatchFullName
✅ testMultiTopicConsumerBatchShortName
@@ -680,7 +680,7 @@
✅ testMultiTopicConsumerNoBatchShortName
✅ testSingleTopicConsumerBatchShortName
```
-### ✅ org.apache.pulsar.client.impl.TopicsConsumerImplTest
+### ✅ org.apache.pulsar.client.impl.TopicsConsumerImplTest
```
✅ testTopicAutoUpdatePartitions
✅ testDifferentTopicsNameSubscribe
@@ -700,7 +700,7 @@
✅ testTopicNameValid
✅ testAsyncConsumer
```
-### ✅ org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest
+### ✅ org.apache.pulsar.client.impl.UnAcknowledgedMessagesTimeoutTest
```
✅ testCheckUnAcknowledgedMessageTimer
✅ testExclusiveSingleAckedNormalTopic
@@ -710,7 +710,7 @@
✅ testExclusiveCumulativeAckedNormalTopic
✅ testSingleMessageBatch
```
-### ✅ org.apache.pulsar.client.impl.ZeroQueueSizeTest
+### ✅ org.apache.pulsar.client.impl.ZeroQueueSizeTest
```
✅ zeroQueueSizeSharedSubscription
✅ testPauseAndResume
@@ -727,15 +727,15 @@
✅ testFailedZeroQueueSizeBatchMessage
✅ testPauseAndResumeWithUnloading
```
-### ✅ org.apache.pulsar.common.api.raw.RawMessageImplTest
+### ✅ org.apache.pulsar.common.api.raw.RawMessageImplTest
```
✅ testGetProperties
```
-### ✅ org.apache.pulsar.common.compression.CommandsTest
+### ✅ org.apache.pulsar.common.compression.CommandsTest
```
✅ testChecksumSendCommand
```
-### ✅ org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest
+### ✅ org.apache.pulsar.common.compression.CompressorCodecBackwardCompatTest
```
✅ testCompressDecompress
✅ testCompressDecompress
@@ -744,7 +744,7 @@
✅ testCompressDecompress
✅ testCompressDecompress
```
-### ✅ org.apache.pulsar.common.compression.CompressorCodecTest
+### ✅ org.apache.pulsar.common.compression.CompressorCodecTest
```
✅ testCompressDecompress
✅ testMultpileUsages
@@ -792,7 +792,7 @@
✅ testDecompressReadonlyByteBuf
✅ testMultpileUsages
```
-### ✅ org.apache.pulsar.common.compression.Crc32cChecksumTest
+### ✅ org.apache.pulsar.common.compression.Crc32cChecksumTest
```
✅ testCrc32cHardware
✅ testCrc32cDirectMemoryHardware
@@ -801,19 +801,19 @@
✅ testCrc32cIncremental
✅ testCrc32cIncrementalUsingProvider
```
-### ✅ org.apache.pulsar.common.lookup.data.LookupDataTest
+### ✅ org.apache.pulsar.common.lookup.data.LookupDataTest
```
✅ testLoadReportSerialization
✅ testUrlEncoder
✅ serializeToJsonTest
✅ withConstructor
```
-### ✅ org.apache.pulsar.common.naming.MetadataTests
+### ✅ org.apache.pulsar.common.naming.MetadataTests
```
✅ testInvalidMetadata
✅ testValidMetadata
```
-### ✅ org.apache.pulsar.common.naming.NamespaceBundlesTest
+### ✅ org.apache.pulsar.common.naming.NamespaceBundlesTest
```
✅ testConstructor
✅ testSplitBundleInTwo
@@ -821,7 +821,7 @@
✅ testFindBundle
✅ testSplitBundleByFixBoundary
```
-### ✅ org.apache.pulsar.common.naming.NamespaceBundleTest
+### ✅ org.apache.pulsar.common.naming.NamespaceBundleTest
```
✅ testIncludes
✅ testGetBundle
@@ -830,26 +830,26 @@
✅ testToString
✅ testEquals
```
-### ✅ org.apache.pulsar.common.naming.NamespaceNameTest
+### ✅ org.apache.pulsar.common.naming.NamespaceNameTest
```
✅ namespace
✅ testNewScheme
```
-### ✅ org.apache.pulsar.common.naming.ServiceConfigurationTest
+### ✅ 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
```
-### ✅ org.apache.pulsar.common.net.ServiceURITest
+### ✅ org.apache.pulsar.common.net.ServiceURITest
```
✅ testEmptyServiceUriString
✅ testMultipleHostsSemiColon
@@ -873,15 +873,15 @@
✅ testMultipleHostsWithoutPulsarPorts
✅ testIpv6Uri
```
-### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest
+### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyDataTest
```
✅ testAutoFailoverPolicyData
```
-### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest
+### ✅ org.apache.pulsar.common.policies.data.AutoFailoverPolicyTypeTest
```
✅ testAutoFailoverPolicyType
```
-### ✅ org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest
+### ✅ org.apache.pulsar.common.policies.data.AutoTopicCreationOverrideTest
```
✅ testInvalidTopicType
✅ testNumPartitionsTooLow
@@ -890,36 +890,36 @@
✅ testNumPartitionsOnNonPartitioned
✅ testValidOverridePartitioned
```
-### ✅ org.apache.pulsar.common.policies.data.BacklogQuotaTest
+### ✅ org.apache.pulsar.common.policies.data.BacklogQuotaTest
```
✅ testBacklogQuotaIdentity
```
-### ✅ org.apache.pulsar.common.policies.data.ClusterDataTest
+### ✅ org.apache.pulsar.common.policies.data.ClusterDataTest
```
✅ simple
```
-### ✅ org.apache.pulsar.common.policies.data.ConsumerStatsTest
+### ✅ org.apache.pulsar.common.policies.data.ConsumerStatsTest
```
✅ testConsumerStats
```
-### ✅ org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest
+### ✅ org.apache.pulsar.common.policies.data.EnsemblePlacementPolicyConfigTest
```
✅ testDecodeFailed
✅ testEncodeDecodeSuccessfully
```
-### ✅ org.apache.pulsar.common.policies.data.LocalPolicesTest
+### ✅ org.apache.pulsar.common.policies.data.LocalPolicesTest
```
✅ testLocalPolices
```
-### ✅ org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest
+### ✅ org.apache.pulsar.common.policies.data.NamespaceIsolationDataTest
```
✅ testNamespaceIsolationData
```
-### ✅ org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest
+### ✅ org.apache.pulsar.common.policies.data.NamespaceOwnershipStatusTest
```
✅ testSerialization
```
-### ✅ org.apache.pulsar.common.policies.data.OffloadPoliciesTest
+### ✅ org.apache.pulsar.common.policies.data.OffloadPoliciesTest
```
✅ testGcsConfiguration
✅ mergeTest
@@ -928,58 +928,58 @@
✅ testS3Configuration
✅ oldPoliciesCompatibleTest
```
-### ✅ org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PartitionedTopicStatsTest
```
✅ testPartitionedTopicStats
```
-### ✅ org.apache.pulsar.common.policies.data.PersistencePoliciesTest
+### ✅ org.apache.pulsar.common.policies.data.PersistencePoliciesTest
```
✅ testPersistencePolicies
```
-### ✅ org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PersistentOfflineTopicStatsTest
```
✅ testPersistentOfflineTopicStats
```
-### ✅ org.apache.pulsar.common.policies.data.PersistentTopicStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PersistentTopicStatsTest
```
✅ testPersistentTopicStatsAggregation
✅ testPersistentTopicStats
```
-### ✅ org.apache.pulsar.common.policies.data.PoliciesDataTest
+### ✅ org.apache.pulsar.common.policies.data.PoliciesDataTest
```
✅ propertyAdmin
✅ policies
✅ bundlesData
✅ bundlesPolicies
```
-### ✅ org.apache.pulsar.common.policies.data.PublisherStatsTest
+### ✅ org.apache.pulsar.common.policies.data.PublisherStatsTest
```
✅ testPublisherStats
✅ testPublisherStatsAggregation
```
-### ✅ org.apache.pulsar.common.policies.data.ReplicatorStatsTest
+### ✅ org.apache.pulsar.common.policies.data.ReplicatorStatsTest
```
✅ testReplicatorStatsAdd
✅ testReplicatorStatsNull
```
-### ✅ org.apache.pulsar.common.policies.data.ResourceQuotaTest
+### ✅ org.apache.pulsar.common.policies.data.ResourceQuotaTest
```
✅ testResourceQuotaDefault
✅ testResourceQuotaEqual
```
-### ✅ org.apache.pulsar.common.policies.data.RetentionPolicesTest
+### ✅ org.apache.pulsar.common.policies.data.RetentionPolicesTest
```
✅ testRetentionPolices
```
-### ✅ org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest
+### ✅ org.apache.pulsar.common.policies.impl.AutoFailoverPolicyFactoryTest
```
✅ testAutoFailoverPolicyFactory
```
-### ✅ org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest
+### ✅ org.apache.pulsar.common.policies.impl.MinAvailablePolicyTest
```
✅ testMinAvailablePolicty
```
-### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest
+### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPoliciesTest
```
✅ testBrokerAssignment
✅ testGetNamespaceIsolationPolicyByName
@@ -989,7 +989,7 @@
✅ testDefaultConstructor
✅ testGetNamespaceIsolationPolicyByNamespace
```
-### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest
+### ✅ org.apache.pulsar.common.policies.impl.NamespaceIsolationPolicyImplTest
```
✅ testFindBrokers
✅ testGetSecondaryBrokers
@@ -999,12 +999,12 @@
✅ testConstructor
✅ testIsPrimaryOrSecondaryBroker
```
-### ✅ org.apache.pulsar.common.protocol.ByteBufPairTest
+### ✅ org.apache.pulsar.common.protocol.ByteBufPairTest
```
✅ testEncoder
✅ testDoubleByteBuf
```
-### ✅ org.apache.pulsar.common.protocol.CommandUtilsTests
+### ✅ org.apache.pulsar.common.protocol.CommandUtilsTests
```
✅ testSkipBrokerEntryMetadata
✅ testPeekBrokerEntryMetadata
@@ -1014,7 +1014,7 @@
✅ testAddBrokerEntryMetadata
✅ testByteBufComposite
```
-### ✅ org.apache.pulsar.common.protocol.MarkersTest
+### ✅ org.apache.pulsar.common.protocol.MarkersTest
```
✅ testSnapshot
✅ testTxnAbortMarker
@@ -1023,25 +1023,25 @@
✅ testSnapshotRequest
✅ testSnapshotResponse
```
-### ✅ org.apache.pulsar.common.protocol.PulsarDecoderTest
+### ✅ org.apache.pulsar.common.protocol.PulsarDecoderTest
```
✅ testChannelRead
```
-### ✅ org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest
+### ✅ org.apache.pulsar.common.stats.JvmDefaultGCMetricsLoggerTest
```
✅ testInvokeJVMInternals
```
-### ✅ org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest
+### ✅ org.apache.pulsar.common.util.collections.BitSetRecyclableRecyclableTest
```
✅ 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
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentLongHashMapTest
```
✅ testRehashingWithDeletes
✅ concurrentInsertionsAndReads
@@ -1057,7 +1057,7 @@
✅ stressConcurrentInsertionsAndReads
✅ testNegativeUsedBucketCount
```
-### ✅ org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentLongPairSetTest
```
✅ concurrentInsertionsAndReads
✅ testEqualsObjects
@@ -1075,7 +1075,7 @@
✅ testConstructor
✅ concurrentInsertions
```
-### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashMapTest
```
✅ testRemove
✅ simpleInsertions
@@ -1090,7 +1090,7 @@
✅ concurrentInsertionsAndReads
✅ testConstructor
```
-### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenHashSetTest
```
✅ concurrentInsertions
✅ testRehashing
@@ -1104,7 +1104,7 @@
✅ testRehashingWithDeletes
✅ testRemove
```
-### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentOpenLongPairRangeSetTest
```
✅ testAddForDifferentKey
✅ testToString
@@ -1120,7 +1120,7 @@
✅ testDeleteWithAtMost
✅ testRangeContaining
```
-### ✅ org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest
+### ✅ org.apache.pulsar.common.util.collections.ConcurrentSortedLongPairSetTest
```
✅ concurrentInsertions
✅ testIfRemoval
@@ -1132,12 +1132,12 @@
✅ testIteration
✅ testToString
```
-### ✅ org.apache.pulsar.common.util.collections.FieldParserTest
+### ✅ org.apache.pulsar.common.util.collections.FieldParserTest
```
✅ testUpdateObject
✅ testConversion
```
-### ✅ org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest
+### ✅ org.apache.pulsar.common.util.collections.GrowableArrayBlockingQueueTest
```
✅ removeTest
✅ growArray
@@ -1146,7 +1146,7 @@
✅ pollTimeout2
✅ blockingTake
```
-### ✅ org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest
+### ✅ org.apache.pulsar.common.util.collections.GrowablePriorityLongPairQueueTest
```
✅ testItems
✅ testRemove
@@ -1164,17 +1164,17 @@
✅ testRemoval
✅ testIfRemoval
```
-### ✅ org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest
+### ✅ org.apache.pulsar.common.util.collections.TripleLongPriorityQueueTest
```
✅ testQueue
✅ testCheckForEmpty
✅ testCompareWithSamePrefix
```
-### ✅ org.apache.pulsar.common.util.FieldParserTest
+### ✅ org.apache.pulsar.common.util.FieldParserTest
```
✅ testMap
```
-### ✅ org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest
+### ✅ org.apache.pulsar.common.util.FileModifiedTimeUpdaterTest
```
✅ testFileNotModified
✅ testFileModified
@@ -1183,7 +1183,7 @@
✅ testFileModified
✅ testFileNotModified
```
-### ✅ org.apache.pulsar.common.util.netty.ChannelFuturesTest
+### ✅ org.apache.pulsar.common.util.netty.ChannelFuturesTest
```
✅ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedAfter
✅ toCompletableFuture_shouldCompleteSuccessfully_channelFutureCompletedAfter
@@ -1191,7 +1191,7 @@
✅ toCompletableFuture_shouldCompleteExceptionally_channelFutureCompletedBefore
✅ toCompletableFuture_shouldRequireNonNullArgument
```
-### ✅ org.apache.pulsar.common.util.RateLimiterTest
+### ✅ org.apache.pulsar.common.util.RateLimiterTest
```
✅ testMultipleTryAcquire
✅ testRateLimiterWithPermitUpdater
@@ -1205,7 +1205,7 @@
✅ testRateLimiterWithFunction
✅ testAcquireBlock
```
-### ✅ org.apache.pulsar.common.util.ReflectionsTest
+### ✅ org.apache.pulsar.common.util.ReflectionsTest
```
✅ testCreateInstanceNoNoArgConstructor
✅ testCreateInstanceConstructorThrowsException
@@ -1220,70 +1220,70 @@
✅ testLoadClass
✅ testClassInJarImplementsIface
```
-### ✅ org.apache.pulsar.common.util.RelativeTimeUtilTest
+### ✅ org.apache.pulsar.common.util.RelativeTimeUtilTest
```
✅ testParseRelativeTime
```
-### ✅ org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest
+### ✅ org.apache.pulsar.discovery.service.web.DiscoveryServiceWebTest
```
✅ testRedirectUrlWithServerStarted
```
-### ✅ org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionE2ESecurityTest
```
✅ testAuthorizationWithAnonymousUser
✅ testAuthorization
```
-### ✅ org.apache.pulsar.functions.worker.PulsarFunctionPublishTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionPublishTest
```
✅ testPulsarFunctionState
✅ testMultipleAddress
✅ testPulsarFunctionBKCleanup
```
-### ✅ org.apache.pulsar.functions.worker.PulsarFunctionTlsTest
+### ✅ org.apache.pulsar.functions.worker.PulsarFunctionTlsTest
```
✅ testFunctionsCreation
```
-### ✅ org.apache.pulsar.io.PulsarFunctionTlsTest
+### ✅ org.apache.pulsar.io.PulsarFunctionTlsTest
```
✅ testAuthorization
```
-### ✅ org.apache.pulsar.proxy.server.AdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.AdminProxyHandlerTest
```
✅ replayableProxyContentProviderTest
```
-### ✅ org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.AuthedAdminProxyHandlerTest
```
✅ testAuthenticatedProxyAsNonAdmin
```
-### ✅ org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest
+### ✅ org.apache.pulsar.proxy.server.FunctionWorkerRoutingTest
```
✅ testFunctionWorkerRedirect
```
-### ✅ org.apache.pulsar.proxy.server.ProxyAdditionalServletTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAdditionalServletTest
```
✅ test
```
-### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticatedProducerConsumerTest
```
✅ testTlsSyncProducerAndConsumer
```
-### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticationTest
+### ✅ org.apache.pulsar.proxy.server.ProxyAuthenticationTest
```
✅ testAuthentication
```
-### ✅ org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest
+### ✅ org.apache.pulsar.proxy.server.ProxyConnectionThrottlingTest
```
✅ testInboundConnection
```
-### ✅ org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest
+### ✅ org.apache.pulsar.proxy.server.ProxyEnableHAProxyProtocolTest
```
✅ testSimpleProduceAndConsume
```
-### ✅ org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest
+### ✅ org.apache.pulsar.proxy.server.ProxyForwardAuthDataTest
```
✅ testForwardAuthData
```
-### ✅ org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest
+### ✅ org.apache.pulsar.proxy.server.ProxyIsAHttpProxyTest
```
✅ testProxyToEndsInSlash
✅ testStreaming
@@ -1296,23 +1296,23 @@
✅ testSingleRedirect
✅ testRedirectNotSpecified
```
-### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithAuth
```
✅ testProducerFailed
✅ testPartitions
✅ testProducer
```
-### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyKeyStoreTlsTestWithoutAuth
```
✅ testPartitions
✅ testProducerFailed
✅ testProducer
```
-### ✅ org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest
+### ✅ org.apache.pulsar.proxy.server.ProxyLookupThrottlingTest
```
✅ testLookup
```
-### ✅ org.apache.pulsar.proxy.server.ProxyParserTest
+### ✅ org.apache.pulsar.proxy.server.ProxyParserTest
```
✅ testRegexSubscription
✅ testProducerConsumer
@@ -1320,17 +1320,17 @@
✅ testPartitions
✅ testProtocolVersionAdvertisement
```
-### ✅ org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest
+### ✅ org.apache.pulsar.proxy.server.ProxyRolesEnforcementTest
```
✅ testIncorrectRoles
```
-### ✅ org.apache.pulsar.proxy.server.ProxyStatsTest
+### ✅ org.apache.pulsar.proxy.server.ProxyStatsTest
```
✅ testChangeLogLevel
✅ testConnectionsStats
✅ testTopicStats
```
-### ✅ org.apache.pulsar.proxy.server.ProxyTest
+### ✅ org.apache.pulsar.proxy.server.ProxyTest
```
✅ testPartitions
✅ testRegexSubscription
@@ -1339,20 +1339,20 @@
✅ testProducer
✅ testProducerConsumer
```
-### ✅ org.apache.pulsar.proxy.server.ProxyTlsTest
+### ✅ org.apache.pulsar.proxy.server.ProxyTlsTest
```
✅ testProducer
✅ testPartitions
```
-### ✅ org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth
+### ✅ org.apache.pulsar.proxy.server.ProxyTlsTestWithAuth
```
✅ testServiceStartup
```
-### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationNegTest
```
✅ testProxyAuthorization
```
-### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithAuthorizationTest
```
✅ tlsCiphersAndProtocols
✅ testTlsHostVerificationProxyToClient
@@ -1368,22 +1368,22 @@
✅ testTlsHostVerificationProxyToClient
✅ tlsCiphersAndProtocols
```
-### ✅ org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest
+### ✅ org.apache.pulsar.proxy.server.ProxyWithoutServiceDiscoveryTest
```
✅ testDiscoveryService
```
-### ✅ org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.SuperUserAuthedAdminProxyHandlerTest
```
✅ testAuthWithRandoCert
✅ testAuthenticatedProxyAsAdmin
✅ testAuthenticatedProxyAsNonAdmin
```
-### ✅ org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest
+### ✅ org.apache.pulsar.proxy.server.UnauthedAdminProxyHandlerTest
```
✅ testUnauthenticatedProxy
✅ testVipStatus
```
-### ✅ org.apache.pulsar.PulsarBrokerStarterTest
+### ✅ org.apache.pulsar.PulsarBrokerStarterTest
```
✅ testMainRunBookieNoConfig
✅ testLoadConfigWithException
@@ -1395,7 +1395,7 @@
✅ testMainEnableRunBookieThroughBrokerConfig
✅ testMainRunBookieAndAutoRecoveryNoConfig
```
-### ✅ org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest
+### ✅ org.apache.pulsar.schema.compatibility.SchemaCompatibilityCheckTest
```
✅ testConsumerCompatibilityCheckCanReadLastTest
✅ testConsumerWithNotCompatibilitySchema
@@ -1421,22 +1421,22 @@
✅ testConsumerCompatibilityCheckCanReadLastTest
✅ testIsAutoUpdateSchema
```
-### ✅ org.apache.pulsar.schema.PartitionedTopicSchemaTest
+### ✅ org.apache.pulsar.schema.PartitionedTopicSchemaTest
```
✅ test
```
-### ✅ org.apache.pulsar.schema.SchemaTest
+### ✅ org.apache.pulsar.schema.SchemaTest
```
✅ testIsUsingAvroSchemaParser
✅ testBytesSchemaDeserialize
✅ testMultiTopicSetSchemaProvider
```
-### ✅ org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest
+### ✅ org.apache.pulsar.stats.client.PulsarBrokerStatsClientTest
```
✅ testServiceException
✅ testTopicInternalStats
```
-### ✅ org.apache.pulsar.tests.EnumValuesDataProviderTest
+### ✅ org.apache.pulsar.tests.EnumValuesDataProviderTest
```
✅ shouldFailIfEnumParameterIsMissing
✅ testEnumValuesProvider
@@ -1445,7 +1445,7 @@
✅ shouldContainAllEnumValues
✅ testEnumValuesProvider
```
-### ✅ org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportBeforeMethodRetryTest
```
✅ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
@@ -1453,7 +1453,7 @@
⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
⚪ shouldNotDoAnythingWhenThereIsBeforeAndAfterMethod
```
-### ✅ org.apache.pulsar.tests.TestRetrySupportRetryTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportRetryTest
```
⚪ shouldCallSetupBeforeRetrying
✅ shouldCallSetupBeforeRetrying
@@ -1461,25 +1461,25 @@
⚪ shouldCallSetupBeforeRetrying
⚪ shouldCallSetupBeforeRetrying
```
-### ✅ org.apache.pulsar.tests.TestRetrySupportSuccessTest
+### ✅ org.apache.pulsar.tests.TestRetrySupportSuccessTest
```
✅ shouldCallSetupOnce1
✅ shouldCallSetupOnce3
✅ shouldCallSetupOnce2
```
-### ✅ org.apache.pulsar.tests.ThreadDumpUtilTest
+### ✅ org.apache.pulsar.tests.ThreadDumpUtilTest
```
✅ testHelp
✅ testThreadDump
```
-### ✅ org.apache.pulsar.utils.SimpleTextOutputStreamTest
+### ✅ org.apache.pulsar.utils.SimpleTextOutputStreamTest
```
✅ testBooleanFormat
✅ testDoubleFormat
✅ testLongFormat
✅ testString
```
-### ✅ org.apache.pulsar.utils.StatsOutputStreamTest
+### ✅ org.apache.pulsar.utils.StatsOutputStreamTest
```
✅ testLists
✅ testNamedObjects
@@ -1488,31 +1488,31 @@
✅ testPairs
✅ testObjects
```
-### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthenticationTest
```
✅ unauthenticatedSocketTest
✅ authenticatedSocketTest
✅ statsTest
✅ anonymousSocketTest
```
-### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyAuthorizationTest
```
✅ test
```
-### ✅ org.apache.pulsar.websocket.proxy.ProxyConfigurationTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyConfigurationTest
```
✅ configTest
✅ configTest
```
-### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeTlsTest
```
✅ socketTest
```
-### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest
+### ✅ org.apache.pulsar.websocket.proxy.ProxyPublishConsumeWithoutZKTest
```
✅ socketTest
```
-### ✅ org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest
+### ✅ org.apache.pulsar.websocket.proxy.v1.V1_ProxyAuthenticationTest
```
✅ anonymousSocketTest
✅ authenticatedSocketTest
diff --git a/__tests__/__outputs__/rspec-json.md b/__tests__/__outputs__/rspec-json.md
index 88336be..7444608 100644
--- a/__tests__/__outputs__/rspec-json.md
+++ b/__tests__/__outputs__/rspec-json.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/rspec-json.json|1 ✅|1 ❌|1 ⚪|0ms|
-## ❌ fixtures/rspec-json.json
+## ❌ fixtures/rspec-json.json
**3** tests were completed in **0ms** with **1** passed, **1** failed and **1** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[./spec/config/check_env_vars_spec.rb](#r0s0)|1 ✅|1 ❌|1 ⚪|0ms|
-### ❌ ./spec/config/check_env_vars_spec.rb
+|[./spec/config/check_env_vars_spec.rb](#user-content-r0s0)|1 ✅|1 ❌|1 ⚪|0ms|
+### ❌ ./spec/config/check_env_vars_spec.rb
```
CheckEnvVars#call when all env vars are defined behaves like success load
❌ CheckEnvVars#call when all env vars are defined behaves like success load fails in assertion
diff --git a/__tests__/__outputs__/silent-notes-test-results.md b/__tests__/__outputs__/silent-notes-test-results.md
index 9cd23f5..34f5bab 100644
--- a/__tests__/__outputs__/silent-notes-test-results.md
+++ b/__tests__/__outputs__/silent-notes-test-results.md
@@ -4,24 +4,24 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/external/SilentNotes.trx|67 ✅||12 ⚪|1s|
-## ✅ 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
+|[VanillaCloudStorageClientTest.CloudStorageCredentialsTest](#user-content-r0s0)|6 ✅|||30ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest](#user-content-r0s1)|2 ✅||3 ⚪|101ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest](#user-content-r0s2)|4 ✅||3 ⚪|166ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest](#user-content-r0s3)|2 ✅|||7ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest](#user-content-r0s4)|1 ✅||3 ⚪|40ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest](#user-content-r0s5)|1 ✅||3 ⚪|15ms|
+|[VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest](#user-content-r0s6)|5 ✅|||16ms|
+|[VanillaCloudStorageClientTest.CloudStorageTokenTest](#user-content-r0s7)|9 ✅|||0ms|
+|[VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest](#user-content-r0s8)|3 ✅|||3ms|
+|[VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest](#user-content-r0s9)|9 ✅|||12ms|
+|[VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest](#user-content-r0s10)|5 ✅|||13ms|
+|[VanillaCloudStorageClientTest.SecureStringExtensionsTest](#user-content-r0s11)|7 ✅|||0ms|
+|[VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest](#user-content-r0s12)|13 ✅|||43ms|
+### ✅ VanillaCloudStorageClientTest.CloudStorageCredentialsTest
```
✅ AreEqualWorksWithDifferentPassword
✅ AreEqualWorksWithSameContent
@@ -30,7 +30,7 @@
✅ ValidateAcceptsValidCredentials
✅ ValidateRejectsInvalidCredentials
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.DropboxCloudStorageClientTest
```
✅ FileLifecycleWorks
⚪ ReallyDoFetchToken
@@ -38,7 +38,7 @@
⚪ ReallyDoRefreshToken
✅ ThrowsAccessDeniedExceptionWithInvalidToken
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.FtpCloudStorageClientTest
```
✅ FileLifecycleWorks
✅ SanitizeCredentials_ChangesInvalidPrefix
@@ -48,26 +48,26 @@
⚪ ThrowsWithInvalidUrl
⚪ ThrowsWithInvalidUsername
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GmxCloudStorageClientTest
```
✅ ChoosesCorrectUrlForGmxComEmail
✅ ChoosesCorrectUrlForGmxNetEmail
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.GoogleCloudStorageClientTest
```
✅ FileLifecycleWorks
⚪ ReallyDoFetchToken
⚪ ReallyDoOpenAuthorizationPageInBrowser
⚪ ReallyDoRefreshToken
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.OnedriveCloudStorageClientTest
```
✅ FileLifecycleWorks
⚪ ReallyDoFetchToken
⚪ ReallyDoOpenAuthorizationPageInBrowser
⚪ ReallyDoRefreshToken
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageProviders.WebdavCloudStorageClientTest
```
✅ FileLifecycleWorks
✅ ParseGmxWebdavResponseCorrectly
@@ -75,7 +75,7 @@
✅ ThrowsWithInvalidPath
✅ ThrowsWithInvalidUsername
```
-### ✅ VanillaCloudStorageClientTest.CloudStorageTokenTest
+### ✅ VanillaCloudStorageClientTest.CloudStorageTokenTest
```
✅ AreEqualWorksWithNullDate
✅ AreEqualWorksWithSameContent
@@ -87,13 +87,13 @@
✅ SetExpiryDateBySecondsWorksWithNull
✅ SetExpiryDateBySecondsWorksWithVeryShortPeriod
```
-### ✅ VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest
+### ✅ VanillaCloudStorageClientTest.OAuth2.AuthorizationResponseErrorTest
```
✅ ParsesAllErrorCodesCorrectly
✅ ParsesNullErrorCodeCorrectly
✅ ParsesUnknownErrorCodeCorrectly
```
-### ✅ VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest
+### ✅ VanillaCloudStorageClientTest.OAuth2.OAuth2UtilsTest
```
✅ BuildAuthorizationRequestUrlEscapesParameters
✅ BuildAuthorizationRequestUrlLeavesOutOptionalParameters
@@ -105,7 +105,7 @@
✅ ParseRealWorldGoogleRejectResponse
✅ ParseRealWorldGoogleSuccessResponse
```
-### ✅ VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest
+### ✅ VanillaCloudStorageClientTest.OAuth2CloudStorageClientTest
```
✅ BuildOAuth2AuthorizationRequestUrlWorks
✅ FetchTokenCanInterpretGoogleResponse
@@ -113,7 +113,7 @@
✅ FetchTokenThrowsWithWrongState
✅ RefreshTokenCanInterpretGoogleResponse
```
-### ✅ VanillaCloudStorageClientTest.SecureStringExtensionsTest
+### ✅ VanillaCloudStorageClientTest.SecureStringExtensionsTest
```
✅ AreEqualsWorksCorrectly
✅ CorrectlyConvertsSecureStringToString
@@ -123,7 +123,7 @@
✅ CorrectlyConvertsUnicodeBytesToSecureString
✅ CorrectlyConvertsUtf8BytesToSecureString
```
-### ✅ VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest
+### ✅ VanillaCloudStorageClientTest.SerializeableCloudStorageCredentialsTest
```
✅ DecryptAfterDesrializationCanReadAllPropertiesBack
✅ DecryptAfterDesrializationRespectsNullProperties
diff --git a/__tests__/__outputs__/swift-xunit.md b/__tests__/__outputs__/swift-xunit.md
index b84a926..6f9ed46 100644
--- a/__tests__/__outputs__/swift-xunit.md
+++ b/__tests__/__outputs__/swift-xunit.md
@@ -2,12 +2,12 @@
|Report|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
|fixtures/swift-xunit.xml|2 ✅|1 ❌||220ms|
-## ❌ fixtures/swift-xunit.xml
+## ❌ fixtures/swift-xunit.xml
**3** tests were completed in **220ms** with **2** passed, **1** failed and **0** skipped.
|Test suite|Passed|Failed|Skipped|Time|
|:---|---:|---:|---:|---:|
-|[TestResults](#r0s0)|2 ✅|1 ❌||220ms|
-### ❌ TestResults
+|[TestResults](#user-content-r0s0)|2 ✅|1 ❌||220ms|
+### ❌ TestResults
```
AcmeLibTests.AcmeLibTests
✅ test_always_pass
diff --git a/dist/index.js b/dist/index.js
index 8dbf93d..b0f6516 100644
--- a/dist/index.js
+++ b/dist/index.js
@@ -1931,7 +1931,7 @@ function getSuitesReport(tr, runIndex, options) {
const sections = [];
const suites = options.listSuites === 'failed' ? tr.failedSuites : tr.suites;
if (options.listSuites !== 'none') {
- const trSlug = makeRunSlug(runIndex);
+ const trSlug = makeRunSlug(runIndex, options);
const nameLink = `${tr.path}`;
const icon = getResultIcon(tr.result);
sections.push(`## ${icon}\xa0${nameLink}`);
@@ -1945,7 +1945,7 @@ function getSuitesReport(tr, runIndex, options) {
const tsTime = (0, markdown_utils_1.formatTime)(s.time);
const tsName = s.name;
const skipLink = options.listTests === 'none' || (options.listTests === 'failed' && s.result !== 'failed');
- const tsAddr = options.baseUrl + makeSuiteSlug(runIndex, suiteIndex).link;
+ const tsAddr = options.baseUrl + makeSuiteSlug(runIndex, suiteIndex, options).link;
const tsNameLink = skipLink ? tsName : (0, markdown_utils_1.link)(tsName, tsAddr);
const passed = s.passed > 0 ? `${s.passed} ${markdown_utils_1.Icon.success}` : '';
const failed = s.failed > 0 ? `${s.failed} ${markdown_utils_1.Icon.fail}` : '';
@@ -1973,7 +1973,7 @@ function getTestsReport(ts, runIndex, suiteIndex, options) {
}
const sections = [];
const tsName = ts.name;
- const tsSlug = makeSuiteSlug(runIndex, suiteIndex);
+ const tsSlug = makeSuiteSlug(runIndex, suiteIndex, options);
const tsNameLink = `${tsName}`;
const icon = getResultIcon(ts.result);
sections.push(`### ${icon}\xa0${tsNameLink}`);
@@ -1999,13 +1999,13 @@ function getTestsReport(ts, runIndex, suiteIndex, options) {
sections.push('```');
return sections;
}
-function makeRunSlug(runIndex) {
+function makeRunSlug(runIndex, options) {
// use prefix to avoid slug conflicts after escaping the paths
- return (0, slugger_1.slug)(`r${runIndex}`);
+ return (0, slugger_1.slug)(`r${runIndex}`, options);
}
-function makeSuiteSlug(runIndex, suiteIndex) {
+function makeSuiteSlug(runIndex, suiteIndex, options) {
// use prefix to avoid slug conflicts after escaping the paths
- return (0, slugger_1.slug)(`r${runIndex}s${suiteIndex}`);
+ return (0, slugger_1.slug)(`r${runIndex}s${suiteIndex}`, options);
}
function getResultIcon(result) {
switch (result) {
@@ -2544,17 +2544,15 @@ function getBasePath(path, trackedFiles) {
Object.defineProperty(exports, "__esModule", ({ value: true }));
exports.slug = slug;
-// Returns HTML element id and href link usable as manual anchor links
-// This is needed because Github in check run summary doesn't automatically
-// create links out of headings as it normally does for other markdown content
-function slug(name) {
+function slug(name, options) {
const slugId = name
.trim()
.replace(/_/g, '')
.replace(/[./\\]/g, '-')
.replace(/[^\w-]/g, '');
const id = `user-content-${slugId}`;
- const link = `#${slugId}`;
+ // When using the Action Summary for display, links must include the "user-content-" prefix.
+ const link = options.useActionsSummary ? `#${id}` : `#${slugId}`;
return { id, link };
}
diff --git a/src/report/get-report.ts b/src/report/get-report.ts
index 99bf270..9253f8f 100644
--- a/src/report/get-report.ts
+++ b/src/report/get-report.ts
@@ -185,7 +185,7 @@ function getSuitesReport(tr: TestRunResult, runIndex: number, options: ReportOpt
const suites = options.listSuites === 'failed' ? tr.failedSuites : tr.suites
if (options.listSuites !== 'none') {
- const trSlug = makeRunSlug(runIndex)
+ const trSlug = makeRunSlug(runIndex, options)
const nameLink = `${tr.path}`
const icon = getResultIcon(tr.result)
sections.push(`## ${icon}\xa0${nameLink}`)
@@ -205,7 +205,7 @@ function getSuitesReport(tr: TestRunResult, runIndex: number, options: ReportOpt
const tsTime = formatTime(s.time)
const tsName = s.name
const skipLink = options.listTests === 'none' || (options.listTests === 'failed' && s.result !== 'failed')
- const tsAddr = options.baseUrl + makeSuiteSlug(runIndex, suiteIndex).link
+ const tsAddr = options.baseUrl + makeSuiteSlug(runIndex, suiteIndex, options).link
const tsNameLink = skipLink ? tsName : link(tsName, tsAddr)
const passed = s.passed > 0 ? `${s.passed} ${Icon.success}` : ''
const failed = s.failed > 0 ? `${s.failed} ${Icon.fail}` : ''
@@ -240,7 +240,7 @@ function getTestsReport(ts: TestSuiteResult, runIndex: number, suiteIndex: numbe
const sections: string[] = []
const tsName = ts.name
- const tsSlug = makeSuiteSlug(runIndex, suiteIndex)
+ const tsSlug = makeSuiteSlug(runIndex, suiteIndex, options)
const tsNameLink = `${tsName}`
const icon = getResultIcon(ts.result)
sections.push(`### ${icon}\xa0${tsNameLink}`)
@@ -269,14 +269,14 @@ function getTestsReport(ts: TestSuiteResult, runIndex: number, suiteIndex: numbe
return sections
}
-function makeRunSlug(runIndex: number): {id: string; link: string} {
+function makeRunSlug(runIndex: number, options: ReportOptions): {id: string; link: string} {
// use prefix to avoid slug conflicts after escaping the paths
- return slug(`r${runIndex}`)
+ return slug(`r${runIndex}`, options)
}
-function makeSuiteSlug(runIndex: number, suiteIndex: number): {id: string; link: string} {
+function makeSuiteSlug(runIndex: number, suiteIndex: number, options: ReportOptions): {id: string; link: string} {
// use prefix to avoid slug conflicts after escaping the paths
- return slug(`r${runIndex}s${suiteIndex}`)
+ return slug(`r${runIndex}s${suiteIndex}`, options)
}
function getResultIcon(result: TestExecutionResult): string {
diff --git a/src/utils/slugger.ts b/src/utils/slugger.ts
index e7d4fe0..1f3c956 100644
--- a/src/utils/slugger.ts
+++ b/src/utils/slugger.ts
@@ -1,7 +1,9 @@
// Returns HTML element id and href link usable as manual anchor links
// This is needed because Github in check run summary doesn't automatically
// create links out of headings as it normally does for other markdown content
-export function slug(name: string): {id: string; link: string} {
+import {ReportOptions} from '../report/get-report'
+
+export function slug(name: string, options: ReportOptions): {id: string; link: string} {
const slugId = name
.trim()
.replace(/_/g, '')
@@ -9,6 +11,7 @@ export function slug(name: string): {id: string; link: string} {
.replace(/[^\w-]/g, '')
const id = `user-content-${slugId}`
- const link = `#${slugId}`
+ // When using the Action Summary for display, links must include the "user-content-" prefix.
+ const link = options.useActionsSummary ? `#${id}` : `#${slugId}`
return {id, link}
}