Skip to content

Run license validation off the Mediator construction path - #1174

Merged
jbogard merged 1 commit into
mainfrom
fix/license-validation-deadlock
Jul 1, 2026
Merged

Run license validation off the Mediator construction path#1174
jbogard merged 1 commit into
mainfrom
fix/license-validation-deadlock

Run license validation off the Mediator construction path

5c1045d
Select commit
Loading
Failed to load commit list.
Sign in for the full log view
GitHub Actions / Test Results (Windows) succeeded Jul 1, 2026 in 1s

424 passed, 0 failed and 8 skipped

Tests passed successfully

Report Passed Failed Skipped Time
test/MediatR.DependencyInjectionTests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_33_59_net10.0.trx 66✅ 3s
test/MediatR.Tests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_33_59_net10.0.trx 179✅ 4⚪ 14s
test/MediatR.Tests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_34_01_net462.trx 179✅ 4⚪ 28s

✅ test/MediatR.DependencyInjectionTests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_33_59_net10.0.trx

66 tests were completed in 3s with 66 passed, 0 failed and 0 skipped.

Test suite Passed Failed Skipped Time
MediatR.DependencyInjectionTests.AutoFacDependencyInjectionTests 11✅ 511ms
MediatR.DependencyInjectionTests.DryIocDependencyInjectionTests 11✅ 480ms
MediatR.DependencyInjectionTests.LamarDependencyInjectionTests 11✅ 609ms
MediatR.DependencyInjectionTests.LightInjectDependencyInjectionTests 11✅ 212ms
MediatR.DependencyInjectionTests.MicrosoftDependencyInjectionTests 11✅ 62ms
MediatR.DependencyInjectionTests.StashBoxDependencyInjectionTests 11✅ 555ms

✅ MediatR.DependencyInjectionTests.AutoFacDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ MediatR.DependencyInjectionTests.DryIocDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ MediatR.DependencyInjectionTests.LamarDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ MediatR.DependencyInjectionTests.LightInjectDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ MediatR.DependencyInjectionTests.MicrosoftDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ MediatR.DependencyInjectionTests.StashBoxDependencyInjectionTests

✅ Should_Resolve_Internal_RequestHandler
✅ Should_Resolve_Internal_Stream_Request_Handlers
✅ Should_Resolve_Internal_Void_RequestHandler
✅ Should_Resolve_Mediator
✅ Should_Resolve_Private_RequestHandler
✅ Should_Resolve_Private_Stream_Request_Handlers
✅ Should_Resolve_Private_Void_RequestHandler
✅ Should_Resolve_Public_Private_Internal_Notification_Handlers
✅ Should_Resolve_Public_RequestHandler
✅ Should_Resolve_Public_Stream_Request_Handlers
✅ Should_Resolve_Public_Void_RequestHandler

✅ test/MediatR.Tests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_33_59_net10.0.trx

183 tests were completed in 14s with 179 passed, 0 failed and 4 skipped.

Test suite Passed Failed Skipped Time
MediatR.Extensions.Microsoft.DependencyInjection.Tests.AssemblyResolutionTests 11✅ 121ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.CustomMediatorTests 4✅ 26ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.DerivingRequestsTests 2✅ 83ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.DuplicateAssemblyResolutionTests 1✅ 89ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.Issue1118Tests 3✅ 95ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.NotificationPublisherTests 4✅ 328ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineMultiCallToConstructorTests 1✅ 48ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineTests 21✅ 377ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.StreamPipelineTests 2✅ 390ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeEvaluatorTests 3✅ 226ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeResolutionTests 10✅ 204ms
MediatR.Tests.CreateStreamTests 5✅ 265ms
MediatR.Tests.ExceptionTests 14✅ 815ms
MediatR.Tests.GenericRequestHandlerTests 17✅ 10s
MediatR.Tests.GenericTypeConstraintsTests 2✅ 354ms
MediatR.Tests.Licensing.LicenseAccessorTests 5✅ 3ms
MediatR.Tests.Licensing.LicenseValidationBackgroundTests 1✅ 23ms
MediatR.Tests.Licensing.LicenseValidatorTests 8✅ 2⚪ 89ms
MediatR.Tests.NotificationHandlerTests 1✅ 4ms
MediatR.Tests.NotificationPublisherTests 1✅ 1s
MediatR.Tests.Pipeline.RequestExceptionActionTests 2✅ 77ms
MediatR.Tests.Pipeline.RequestExceptionHandlerTests 4✅ 422ms
MediatR.Tests.Pipeline.RequestPostProcessorTests 1✅ 27ms
MediatR.Tests.Pipeline.RequestPreProcessorTests 1✅ 146ms
MediatR.Tests.Pipeline.Streams.StreamPipelineBehaviorTests 1✅ 349ms
MediatR.Tests.PipelineTests 5✅ 1⚪ 101ms
MediatR.Tests.PublishTests 6✅ 575ms
MediatR.Tests.SendTests 14✅ 1s
MediatR.Tests.SendVoidInterfaceTests 1✅ 233ms
MediatR.Tests.ServiceFactoryTests 3✅ 7ms
MediatR.Tests.StreamPipelineTests 3✅ 1⚪ 300ms
MediatR.Tests.UnitTests 22✅ 10ms

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.AssemblyResolutionTests

✅ ShouldNotThrowWhenAssemblyThrowsReflectionTypeLoadException
✅ ShouldRequireAtLeastOneAssembly
✅ ShouldResolveGenericPingRequestHandler
✅ ShouldResolveGenericReturnTypeRequestHandler
✅ ShouldResolveGenericVoidRequestHandler
✅ ShouldResolveInternalHandler
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolveRequestHandler
✅ ShouldResolveStreamHandlers
✅ ShouldResolveVoidGenericPingRequestHandler

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.CustomMediatorTests

✅ Can_Call_AddMediatr_multiple_times
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolveRequestHandler

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.DerivingRequestsTests

✅ ShouldReturnDerivedPingPong
✅ ShouldReturnPingPong

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.DuplicateAssemblyResolutionTests

✅ ShouldResolveNotificationHandlersOnlyOnce

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.Issue1118Tests

✅ Publishing_BaseEvent_Should_Call_BaseEventHandler_Once
✅ Publishing_DerivedEvent_Should_Call_BaseEventHandler_ExactlyOnce
✅ Publishing_DerivedEvent_Should_Call_DerivedEventHandler_Once

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.NotificationPublisherTests

✅ ShouldResolveDefaultPublisher
✅ ShouldSubstitutePublisherInstance
✅ ShouldSubstitutePublisherServiceType
✅ ShouldSubstitutePublisherServiceTypeWithWhenAll

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineMultiCallToConstructorTests

✅ Should_not_call_constructor_multiple_times_when_using_a_pipeline

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineTests

✅ Should_apply_open_behavior_with_nested_generic_response_type
✅ Should_auto_register_processors_when_configured_including_all_concrete_types
✅ Should_handle_constrained_generics
✅ Should_handle_exceptions_from_behaviors
✅ Should_handle_inferred_behavior_registration
✅ Should_handle_inferred_post_processor_registration
✅ Should_handle_inferred_pre_processor_registration
✅ Should_handle_inferred_stream_behavior_registration
✅ Should_handle_open_behavior_registration
✅ Should_handle_open_behaviors_registration_from_a_single_type
✅ Should_pick_up_base_exception_behaviors
✅ Should_pick_up_exception_actions
✅ Should_pick_up_specific_exception_behaviors
✅ Should_register_correctly
✅ Should_register_open_behaviors_correctly
✅ Should_register_pre_and_post_processors
✅ Should_throw_when_adding_non_open_behavior
✅ Should_throw_when_adding_non_open_stream_behavior
✅ Should_throw_when_adding_random_generic_type_as_open_behavior
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.StreamPipelineTests

✅ Should_register_and_wrap_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeEvaluatorTests

✅ ShouldNotRegisterUnNeededBehaviors
✅ ShouldOnlyResolveIncludedRequestHandlers
✅ ShouldResolveMediator

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeResolutionTests

✅ ShouldHandleKeyedServices
✅ ShouldNotThrowWithMissingEnumerables
✅ ShouldResolveFirstDuplicateHandler
✅ ShouldResolveIgnoreSecondDuplicateHandler
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolvePublisher
✅ ShouldResolveRequestHandler
✅ ShouldResolveSender
✅ ShouldResolveVoidRequestHandler

✅ MediatR.Tests.CreateStreamTests

✅ Should_raise_execption_on_null_request
✅ Should_raise_execption_on_null_request_via_dynamic_dispatch
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_via_dynamic_dispatch

✅ MediatR.Tests.ExceptionTests

✅ Should_not_throw_for_async_publish
✅ Should_not_throw_for_publish
✅ Should_throw_argument_exception_for_publish_when_request_is_not_notification
✅ Should_throw_argument_exception_for_publish_when_request_is_null
✅ Should_throw_argument_exception_for_publish_when_request_is_null_object
✅ Should_throw_argument_exception_for_send_when_request_is_null
✅ Should_throw_argument_exception_for_void_send_when_request_is_null
✅ Should_throw_exception_for_generic_send_when_exception_occurs
✅ Should_throw_exception_for_non_generic_send_when_exception_occurs
✅ Should_throw_exception_for_non_request_send
✅ Should_throw_for_async_send
✅ Should_throw_for_async_void_send
✅ Should_throw_for_send
✅ Should_throw_for_void_send

✅ MediatR.Tests.GenericRequestHandlerTests

✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldNotRegisterGenericHandlersWhenOptingOut
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldThrowExceptionWhenGenericHandlerRegistrationsExceedsMaximum
✅ ShouldThrowExceptionWhenGenericTypeParametersExceedsMaximum
✅ ShouldThrowExceptionWhenTimeoutOccurs
✅ ShouldThrowExceptionWhenTypesClosingExceedsMaximum

✅ MediatR.Tests.GenericTypeConstraintsTests

✅ Should_Resolve_Response_Return_Request
✅ Should_Resolve_Void_Return_Request

✅ MediatR.Tests.Licensing.LicenseAccessorTests

✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "   ")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "\t")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: null)
✅ Should_return_unconfigured_license_when_static_key_is_blank

✅ MediatR.Tests.Licensing.LicenseValidationBackgroundTests

✅ License_validation_runs_off_the_construction_thread

✅ MediatR.Tests.Licensing.LicenseValidatorTests

✅ Should_allow_perpetual_license_when_build_date_before_expiration
✅ Should_fall_back_to_expiration_error_when_perpetual_and_build_date_is_null
✅ Should_handle_missing_perpetual_claim
✅ Should_reject_perpetual_license_when_build_date_after_expiration
✅ Should_return_invalid_when_expired
✅ Should_return_invalid_when_no_claims
✅ Should_return_invalid_when_not_correct_type
⚪ Should_return_valid_for_actual_valid_license
⚪ Should_return_valid_for_actual_valid_license_via_static_property
✅ Should_return_valid_when_community

✅ MediatR.Tests.NotificationHandlerTests

✅ Should_call_abstract_handle_method

✅ MediatR.Tests.NotificationPublisherTests

✅ Should_handle_sequentially_by_default

✅ MediatR.Tests.Pipeline.RequestExceptionActionTests

✅ Should_run_all_exception_actions_that_match_base_type
✅ Should_run_matching_exception_actions_only_once

✅ MediatR.Tests.Pipeline.RequestExceptionHandlerTests

✅ Should_run_exception_handler_and_allow_for_exception_not_to_throw
✅ Should_run_exception_handler_and_allow_for_exception_to_be_still_thrown
✅ Should_run_exception_handler_and_unwrap_expections_thrown_in_the_handler
✅ Should_run_matching_exception_handlers_only_once

✅ MediatR.Tests.Pipeline.RequestPostProcessorTests

✅ Should_run_postprocessors

✅ MediatR.Tests.Pipeline.RequestPreProcessorTests

✅ Should_run_preprocessors

✅ MediatR.Tests.Pipeline.Streams.StreamPipelineBehaviorTests

✅ Should_run_pipeline_behavior

✅ MediatR.Tests.PipelineTests

⚪ Should_handle_concrete_and_open_generics
✅ Should_handle_constrained_generics
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_void_generics_with_behavior
✅ Should_wrap_void_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Tests.PublishTests

✅ Should_override_with_sequential_firing
✅ Should_override_with_sequential_firing_through_injection
✅ Should_resolve_handlers_given_interface
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_when_object_is_passed

✅ MediatR.Tests.SendTests

✅ Should_raise_execption_on_null_request
✅ Should_resolve_closed_handler_if_defined
✅ Should_resolve_generic_handler
✅ Should_resolve_generic_void_handler
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_given_interface
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_via_dynamic_dispatch
✅ Should_resolve_main_void_handler
✅ Should_resolve_main_void_handler_via_dynamic_dispatch
✅ Should_resolve_multiple_type_parameter_generic_handler
✅ Should_resolve_open_handler_if_not_defined
✅ TimeoutBehavior_NonVoid_Should_Cancel_Long_Running_Task_And_Throw_Exception
✅ TimeoutBehavior_Void_Should_Cancel_Long_Running_Task_And_Throw_Exception

✅ MediatR.Tests.SendVoidInterfaceTests

✅ Should_resolve_main_void_handler

✅ MediatR.Tests.ServiceFactoryTests

✅ Should_not_throw_with_manual_registration
✅ Should_throw_given_no_handler
✅ Should_throw_when_missing_required_configuration

✅ MediatR.Tests.StreamPipelineTests

⚪ Should_handle_concrete_and_open_generics
✅ Should_handle_constrained_generics
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Tests.UnitTests

✅ Should_be_equal_to_each_other
✅ Should_be_equal(value: "", isEqual: False)
✅ Should_be_equal(value: "()", isEqual: False)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: https://www.google.com/, isEqual: False)
✅ Should_be_equal(value: null, isEqual: False)
✅ Should_be_equal(value: Object { }, isEqual: False)
✅ Should_be_equitable
✅ Should_compareto_as_zero
✅ Should_compareto_value_as_zero(value: "")
✅ Should_compareto_value_as_zero(value: "()")
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: https://www.google.com/)
✅ Should_compareto_value_as_zero(value: null)
✅ Should_compareto_value_as_zero(value: Object { })
✅ Should_tostring

✅ test/MediatR.Tests/TestResults/runneradmin_runnervmo3n6x_2026-07-01_16_34_01_net462.trx

183 tests were completed in 28s with 179 passed, 0 failed and 4 skipped.

Test suite Passed Failed Skipped Time
MediatR.Extensions.Microsoft.DependencyInjection.Tests.AssemblyResolutionTests 11✅ 191ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.CustomMediatorTests 4✅ 47ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.DerivingRequestsTests 2✅ 44ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.DuplicateAssemblyResolutionTests 1✅ 571ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.Issue1118Tests 3✅ 225ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.NotificationPublisherTests 4✅ 379ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineMultiCallToConstructorTests 1✅ 63ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineTests 21✅ 657ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.StreamPipelineTests 2✅ 769ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeEvaluatorTests 3✅ 563ms
MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeResolutionTests 10✅ 140ms
MediatR.Tests.CreateStreamTests 5✅ 586ms
MediatR.Tests.ExceptionTests 14✅ 2s
MediatR.Tests.GenericRequestHandlerTests 17✅ 22s
MediatR.Tests.GenericTypeConstraintsTests 2✅ 53ms
MediatR.Tests.Licensing.LicenseAccessorTests 5✅ 237ms
MediatR.Tests.Licensing.LicenseValidationBackgroundTests 1✅ 156ms
MediatR.Tests.Licensing.LicenseValidatorTests 8✅ 2⚪ 170ms
MediatR.Tests.NotificationHandlerTests 1✅ 3ms
MediatR.Tests.NotificationPublisherTests 1✅ 1s
MediatR.Tests.Pipeline.RequestExceptionActionTests 2✅ 70ms
MediatR.Tests.Pipeline.RequestExceptionHandlerTests 4✅ 2s
MediatR.Tests.Pipeline.RequestPostProcessorTests 1✅ 38ms
MediatR.Tests.Pipeline.RequestPreProcessorTests 1✅ 19ms
MediatR.Tests.Pipeline.Streams.StreamPipelineBehaviorTests 1✅ 667ms
MediatR.Tests.PipelineTests 5✅ 1⚪ 130ms
MediatR.Tests.PublishTests 6✅ 101ms
MediatR.Tests.SendTests 14✅ 2s
MediatR.Tests.SendVoidInterfaceTests 1✅ 72ms
MediatR.Tests.ServiceFactoryTests 3✅ 8ms
MediatR.Tests.StreamPipelineTests 3✅ 1⚪ 134ms
MediatR.Tests.UnitTests 22✅ 113ms

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.AssemblyResolutionTests

✅ ShouldNotThrowWhenAssemblyThrowsReflectionTypeLoadException
✅ ShouldRequireAtLeastOneAssembly
✅ ShouldResolveGenericPingRequestHandler
✅ ShouldResolveGenericReturnTypeRequestHandler
✅ ShouldResolveGenericVoidRequestHandler
✅ ShouldResolveInternalHandler
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolveRequestHandler
✅ ShouldResolveStreamHandlers
✅ ShouldResolveVoidGenericPingRequestHandler

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.CustomMediatorTests

✅ Can_Call_AddMediatr_multiple_times
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolveRequestHandler

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.DerivingRequestsTests

✅ ShouldReturnDerivedPingPong
✅ ShouldReturnPingPong

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.DuplicateAssemblyResolutionTests

✅ ShouldResolveNotificationHandlersOnlyOnce

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.Issue1118Tests

✅ Publishing_BaseEvent_Should_Call_BaseEventHandler_Once
✅ Publishing_DerivedEvent_Should_Call_BaseEventHandler_ExactlyOnce
✅ Publishing_DerivedEvent_Should_Call_DerivedEventHandler_Once

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.NotificationPublisherTests

✅ ShouldResolveDefaultPublisher
✅ ShouldSubstitutePublisherInstance
✅ ShouldSubstitutePublisherServiceType
✅ ShouldSubstitutePublisherServiceTypeWithWhenAll

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineMultiCallToConstructorTests

✅ Should_not_call_constructor_multiple_times_when_using_a_pipeline

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.PipelineTests

✅ Should_apply_open_behavior_with_nested_generic_response_type
✅ Should_auto_register_processors_when_configured_including_all_concrete_types
✅ Should_handle_constrained_generics
✅ Should_handle_exceptions_from_behaviors
✅ Should_handle_inferred_behavior_registration
✅ Should_handle_inferred_post_processor_registration
✅ Should_handle_inferred_pre_processor_registration
✅ Should_handle_inferred_stream_behavior_registration
✅ Should_handle_open_behavior_registration
✅ Should_handle_open_behaviors_registration_from_a_single_type
✅ Should_pick_up_base_exception_behaviors
✅ Should_pick_up_exception_actions
✅ Should_pick_up_specific_exception_behaviors
✅ Should_register_correctly
✅ Should_register_open_behaviors_correctly
✅ Should_register_pre_and_post_processors
✅ Should_throw_when_adding_non_open_behavior
✅ Should_throw_when_adding_non_open_stream_behavior
✅ Should_throw_when_adding_random_generic_type_as_open_behavior
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.StreamPipelineTests

✅ Should_register_and_wrap_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeEvaluatorTests

✅ ShouldNotRegisterUnNeededBehaviors
✅ ShouldOnlyResolveIncludedRequestHandlers
✅ ShouldResolveMediator

✅ MediatR.Extensions.Microsoft.DependencyInjection.Tests.TypeResolutionTests

✅ ShouldHandleKeyedServices
✅ ShouldNotThrowWithMissingEnumerables
✅ ShouldResolveFirstDuplicateHandler
✅ ShouldResolveIgnoreSecondDuplicateHandler
✅ ShouldResolveMediator
✅ ShouldResolveNotificationHandlers
✅ ShouldResolvePublisher
✅ ShouldResolveRequestHandler
✅ ShouldResolveSender
✅ ShouldResolveVoidRequestHandler

✅ MediatR.Tests.CreateStreamTests

✅ Should_raise_execption_on_null_request
✅ Should_raise_execption_on_null_request_via_dynamic_dispatch
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_via_dynamic_dispatch

✅ MediatR.Tests.ExceptionTests

✅ Should_not_throw_for_async_publish
✅ Should_not_throw_for_publish
✅ Should_throw_argument_exception_for_publish_when_request_is_not_notification
✅ Should_throw_argument_exception_for_publish_when_request_is_null
✅ Should_throw_argument_exception_for_publish_when_request_is_null_object
✅ Should_throw_argument_exception_for_send_when_request_is_null
✅ Should_throw_argument_exception_for_void_send_when_request_is_null
✅ Should_throw_exception_for_generic_send_when_exception_occurs
✅ Should_throw_exception_for_non_generic_send_when_exception_occurs
✅ Should_throw_exception_for_non_request_send
✅ Should_throw_for_async_send
✅ Should_throw_for_async_void_send
✅ Should_throw_for_send
✅ Should_throw_for_void_send

✅ MediatR.Tests.GenericRequestHandlerTests

✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldNotRegisterDuplicateHandlers(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldNotRegisterGenericHandlersWhenOptingOut
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldRegisterTheCorrectAmountOfHandlers(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 1, numberOfInterfaces: 1, numberOfTypeParameters: 1)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 10, numberOfInterfaces: 4, numberOfTypeParameters: 4)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 50, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldResolveAllCombinationsOfGenericHandler(numberOfClasses: 9, numberOfInterfaces: 3, numberOfTypeParameters: 3)
✅ ShouldThrowExceptionWhenGenericHandlerRegistrationsExceedsMaximum
✅ ShouldThrowExceptionWhenGenericTypeParametersExceedsMaximum
✅ ShouldThrowExceptionWhenTimeoutOccurs
✅ ShouldThrowExceptionWhenTypesClosingExceedsMaximum

✅ MediatR.Tests.GenericTypeConstraintsTests

✅ Should_Resolve_Response_Return_Request
✅ Should_Resolve_Void_Return_Request

✅ MediatR.Tests.Licensing.LicenseAccessorTests

✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "   ")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: "\t")
✅ Should_return_unconfigured_license_for_missing_or_blank_key(key: null)
✅ Should_return_unconfigured_license_when_static_key_is_blank

✅ MediatR.Tests.Licensing.LicenseValidationBackgroundTests

✅ License_validation_runs_off_the_construction_thread

✅ MediatR.Tests.Licensing.LicenseValidatorTests

✅ Should_allow_perpetual_license_when_build_date_before_expiration
✅ Should_fall_back_to_expiration_error_when_perpetual_and_build_date_is_null
✅ Should_handle_missing_perpetual_claim
✅ Should_reject_perpetual_license_when_build_date_after_expiration
✅ Should_return_invalid_when_expired
✅ Should_return_invalid_when_no_claims
✅ Should_return_invalid_when_not_correct_type
⚪ Should_return_valid_for_actual_valid_license
⚪ Should_return_valid_for_actual_valid_license_via_static_property
✅ Should_return_valid_when_community

✅ MediatR.Tests.NotificationHandlerTests

✅ Should_call_abstract_handle_method

✅ MediatR.Tests.NotificationPublisherTests

✅ Should_handle_sequentially_by_default

✅ MediatR.Tests.Pipeline.RequestExceptionActionTests

✅ Should_run_all_exception_actions_that_match_base_type
✅ Should_run_matching_exception_actions_only_once

✅ MediatR.Tests.Pipeline.RequestExceptionHandlerTests

✅ Should_run_exception_handler_and_allow_for_exception_not_to_throw
✅ Should_run_exception_handler_and_allow_for_exception_to_be_still_thrown
✅ Should_run_exception_handler_and_unwrap_expections_thrown_in_the_handler
✅ Should_run_matching_exception_handlers_only_once

✅ MediatR.Tests.Pipeline.RequestPostProcessorTests

✅ Should_run_postprocessors

✅ MediatR.Tests.Pipeline.RequestPreProcessorTests

✅ Should_run_preprocessors

✅ MediatR.Tests.Pipeline.Streams.StreamPipelineBehaviorTests

✅ Should_run_pipeline_behavior

✅ MediatR.Tests.PipelineTests

⚪ Should_handle_concrete_and_open_generics
✅ Should_handle_constrained_generics
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_void_generics_with_behavior
✅ Should_wrap_void_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Tests.PublishTests

✅ Should_override_with_sequential_firing
✅ Should_override_with_sequential_firing_through_injection
✅ Should_resolve_handlers_given_interface
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_when_object_is_passed

✅ MediatR.Tests.SendTests

✅ Should_raise_execption_on_null_request
✅ Should_resolve_closed_handler_if_defined
✅ Should_resolve_generic_handler
✅ Should_resolve_generic_void_handler
✅ Should_resolve_main_handler
✅ Should_resolve_main_handler_by_given_interface
✅ Should_resolve_main_handler_by_specific_interface
✅ Should_resolve_main_handler_via_dynamic_dispatch
✅ Should_resolve_main_void_handler
✅ Should_resolve_main_void_handler_via_dynamic_dispatch
✅ Should_resolve_multiple_type_parameter_generic_handler
✅ Should_resolve_open_handler_if_not_defined
✅ TimeoutBehavior_NonVoid_Should_Cancel_Long_Running_Task_And_Throw_Exception
✅ TimeoutBehavior_Void_Should_Cancel_Long_Running_Task_And_Throw_Exception

✅ MediatR.Tests.SendVoidInterfaceTests

✅ Should_resolve_main_void_handler

✅ MediatR.Tests.ServiceFactoryTests

✅ Should_not_throw_with_manual_registration
✅ Should_throw_given_no_handler
✅ Should_throw_when_missing_required_configuration

✅ MediatR.Tests.StreamPipelineTests

⚪ Should_handle_concrete_and_open_generics
✅ Should_handle_constrained_generics
✅ Should_wrap_generics_with_behavior
✅ Should_wrap_with_behavior

✅ MediatR.Tests.UnitTests

✅ Should_be_equal_to_each_other
✅ Should_be_equal(value: "", isEqual: False)
✅ Should_be_equal(value: "()", isEqual: False)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: (), isEqual: True)
✅ Should_be_equal(value: https://www.google.com/, isEqual: False)
✅ Should_be_equal(value: null, isEqual: False)
✅ Should_be_equal(value: Object { }, isEqual: False)
✅ Should_be_equitable
✅ Should_compareto_as_zero
✅ Should_compareto_value_as_zero(value: "")
✅ Should_compareto_value_as_zero(value: "()")
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: ())
✅ Should_compareto_value_as_zero(value: https://www.google.com/)
✅ Should_compareto_value_as_zero(value: null)
✅ Should_compareto_value_as_zero(value: Object { })
✅ Should_tostring