From 1a09edcce021d628bccc94837f7f6c0653923ba9 Mon Sep 17 00:00:00 2001 From: Glen Date: Sat, 28 Mar 2026 15:58:58 +0200 Subject: [PATCH] Fix various analyzer errors --- .../PagingHelperIntegrationTests.cs | 6 ++-- .../DefaultGraphQLHttpClient.cs | 25 +++++++--------- .../GraphQLHttpClientExtensions.cs | 1 - .../src/Transport.Http/GraphQLHttpRequest.cs | 1 - .../src/Transport.Http/GraphQLHttpResponse.cs | 1 - .../src/Diagnostics/ActivityEnricher.cs | 1 - .../FusionActivityEnricher.cs | 1 - ...colateFusionServiceCollectionExtensions.cs | 1 - .../Execution/JsonVariableCoercion.cs | 1 - .../CancellationTests.cs | 1 - .../Http/DefaultGraphQLHttpClientTests.cs | 5 ++-- .../Inspectors/AbstractHandlerInspector.cs | 1 - .../AbstractMessagingHandlerInspector.cs | 1 - .../Inspectors/HandlerInspector.cs | 1 - .../Inspectors/ISyntaxInspector.cs | 1 - .../Inspectors/MessageTypeInspector.cs | 1 - .../Inspectors/MessagingHandlerInspector.cs | 1 - .../MultipleHandlerInterfaceInspector.cs | 1 - .../NotificationHandlerInspector.cs | 1 - .../src/Mocha.Analyzers/KnownTypeSymbols.cs | 1 - .../src/Mocha.Analyzers/MediatorGenerator.cs | 1 - .../Utils/ImmutableEquatableArray.cs | 2 +- .../src/Mocha.Mediator.Abstractions/Unit.cs | 2 +- .../MediatorHostBuilderExtensions.cs | 1 - .../MediatorServiceCollectionExtensions.cs | 6 ++-- .../Pipeline/PipelineBuilder.cs | 1 - .../src/Mocha/Builder/MessageBusBuilder.cs | 19 ++++++++---- .../MessagingTestHelper.cs | 1 - .../test/Mocha.Analyzers.Tests/TestHelper.cs | 5 ++-- .../Mocha.Mediator.Tests/AddHandlerTests.cs | 2 +- .../ContextPoolingTests.cs | 4 +-- .../MiddlewareFactoryContextTests.cs | 30 +++++++++++-------- .../MiddlewarePipelineTests.cs | 16 +++++----- .../NamedMediatorTests.cs | 12 ++++---- .../NotificationStrategyTests.cs | 22 +++++++------- 35 files changed, 81 insertions(+), 96 deletions(-) diff --git a/src/GreenDonut/test/GreenDonut.Data.EntityFramework.Tests/PagingHelperIntegrationTests.cs b/src/GreenDonut/test/GreenDonut.Data.EntityFramework.Tests/PagingHelperIntegrationTests.cs index fa1c58811d9..5b468c4e6d3 100644 --- a/src/GreenDonut/test/GreenDonut.Data.EntityFramework.Tests/PagingHelperIntegrationTests.cs +++ b/src/GreenDonut/test/GreenDonut.Data.EntityFramework.Tests/PagingHelperIntegrationTests.cs @@ -257,7 +257,7 @@ public async Task BatchPaging_First_5() { First = page.Value.CreateStartCursor(), Last = page.Value.CreateEndCursor(), - Items = page.Value.Items + page.Value.Items }, name: page.Key.ToString()); } @@ -299,7 +299,7 @@ public async Task BatchPaging_Last_5() { First = page.Value.CreateStartCursor(), Last = page.Value.CreateEndCursor(), - Items = page.Value.Items + page.Value.Items }, name: page.Key.ToString()); } @@ -341,7 +341,7 @@ public async Task BatchPaging_With_Relative_Cursor() { First = page.Value.CreateCursor(page.Value.Entries[0], 0), Last = page.Value.CreateCursor(page.Value.Entries[^1], 0), - Items = page.Value.Items + page.Value.Items }, name: page.Key.ToString()); } diff --git a/src/HotChocolate/AspNetCore/src/Transport.Http/DefaultGraphQLHttpClient.cs b/src/HotChocolate/AspNetCore/src/Transport.Http/DefaultGraphQLHttpClient.cs index a52f23dad45..3025ebe6de0 100644 --- a/src/HotChocolate/AspNetCore/src/Transport.Http/DefaultGraphQLHttpClient.cs +++ b/src/HotChocolate/AspNetCore/src/Transport.Http/DefaultGraphQLHttpClient.cs @@ -3,24 +3,21 @@ using System.Diagnostics; using System.Net.Http.Headers; using System.Text; -using System.Text.Json; using HotChocolate.Buffers; using HotChocolate.Language; +using static System.Net.Http.HttpCompletionOption; + #if FUSION -using HotChocolate.Fusion.Transport; -using HotChocolate.Fusion.Transport.Http; using HotChocolate.Fusion.Transport.Serialization; using HotChocolate.Text.Json; using HotChocolate.Transport.Http; using HotChocolate.Types; -#else -using HotChocolate.Transport.Serialization; -#endif -using static System.Net.Http.HttpCompletionOption; -#if FUSION namespace HotChocolate.Fusion.Transport.Http; #else +using System.Text.Json; +using HotChocolate.Transport.Serialization; + namespace HotChocolate.Transport.Http; #endif @@ -179,10 +176,10 @@ private static HttpRequestMessage CreateRequestMessage( else { message.Headers.Accept.Clear(); - foreach (var contentType in request.Accept) - { - message.Headers.Accept.Add(contentType); - } + foreach (var contentType in request.Accept) + { + message.Headers.Accept.Add(contentType); + } } #else message.Headers.Accept.Clear(); @@ -353,8 +350,8 @@ private static IReadOnlyList CollectFileEntries(IRequestBody body) { return body switch { - OperationRequest { FileMap: { IsDefaultOrEmpty: false } fileMap } => [..fileMap], - OperationBatchRequest { FileMap: { IsDefaultOrEmpty: false } fileMap } => [..fileMap], + OperationRequest { FileMap: { IsDefaultOrEmpty: false } fileMap } => [.. fileMap], + OperationBatchRequest { FileMap: { IsDefaultOrEmpty: false } fileMap } => [.. fileMap], _ => [] }; } diff --git a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpClientExtensions.cs b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpClientExtensions.cs index d2beeeb5c3b..f23222c3a5c 100644 --- a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpClientExtensions.cs +++ b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpClientExtensions.cs @@ -1,6 +1,5 @@ #if FUSION using HotChocolate.Fusion.Execution; -using HotChocolate.Transport; #endif #if FUSION diff --git a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpRequest.cs b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpRequest.cs index cc0122433ff..eae5ad9a839 100644 --- a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpRequest.cs +++ b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpRequest.cs @@ -3,7 +3,6 @@ #if FUSION using HotChocolate.Fusion.Execution; using HotChocolate.Fusion.Execution.Clients; -using HotChocolate.Transport; using HotChocolate.Transport.Http; #endif diff --git a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpResponse.cs b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpResponse.cs index 45d262c5238..52d29e53b87 100644 --- a/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpResponse.cs +++ b/src/HotChocolate/AspNetCore/src/Transport.Http/GraphQLHttpResponse.cs @@ -4,7 +4,6 @@ using System.Net.Http.Headers; using System.IO.Pipelines; using HotChocolate.Buffers; -using HotChocolate.Transport; using HotChocolate.Fusion.Text.Json; #else using System.Net; diff --git a/src/HotChocolate/Diagnostics/src/Diagnostics/ActivityEnricher.cs b/src/HotChocolate/Diagnostics/src/Diagnostics/ActivityEnricher.cs index a541bbfa38b..09cf505baba 100644 --- a/src/HotChocolate/Diagnostics/src/Diagnostics/ActivityEnricher.cs +++ b/src/HotChocolate/Diagnostics/src/Diagnostics/ActivityEnricher.cs @@ -1,7 +1,6 @@ using System.Diagnostics; using GreenDonut; using HotChocolate.Execution; -using HotChocolate.Language; using HotChocolate.Resolvers; namespace HotChocolate.Diagnostics; diff --git a/src/HotChocolate/Fusion/src/Fusion.Diagnostics/FusionActivityEnricher.cs b/src/HotChocolate/Fusion/src/Fusion.Diagnostics/FusionActivityEnricher.cs index 8646c7c5f56..76a337792fc 100644 --- a/src/HotChocolate/Fusion/src/Fusion.Diagnostics/FusionActivityEnricher.cs +++ b/src/HotChocolate/Fusion/src/Fusion.Diagnostics/FusionActivityEnricher.cs @@ -3,7 +3,6 @@ using HotChocolate.Execution; using HotChocolate.Fusion.Execution; using HotChocolate.Fusion.Execution.Nodes; -using HotChocolate.Language; namespace HotChocolate.Fusion.Diagnostics; diff --git a/src/HotChocolate/Fusion/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs b/src/HotChocolate/Fusion/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs index ccc265c1c8f..213d2ca82ce 100644 --- a/src/HotChocolate/Fusion/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs +++ b/src/HotChocolate/Fusion/src/Fusion.Execution/DependencyInjection/HotChocolateFusionServiceCollectionExtensions.cs @@ -5,7 +5,6 @@ using HotChocolate.Fusion.Execution; using HotChocolate.Fusion.Execution.Clients; using HotChocolate.Language; -using HotChocolate.Types; using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.ObjectPool; using Microsoft.Extensions.Options; diff --git a/src/HotChocolate/Fusion/src/Fusion.Execution/Execution/JsonVariableCoercion.cs b/src/HotChocolate/Fusion/src/Fusion.Execution/Execution/JsonVariableCoercion.cs index 396d8b3680f..bd2b7e24ba7 100644 --- a/src/HotChocolate/Fusion/src/Fusion.Execution/Execution/JsonVariableCoercion.cs +++ b/src/HotChocolate/Fusion/src/Fusion.Execution/Execution/JsonVariableCoercion.cs @@ -6,7 +6,6 @@ using HotChocolate.Features; using HotChocolate.Fusion.Types; using HotChocolate.Language; -using HotChocolate.Fusion.Transport; using HotChocolate.Types; namespace HotChocolate.Fusion.Execution; diff --git a/src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/CancellationTests.cs b/src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/CancellationTests.cs index 1dc940cda7f..1203b3c25ba 100644 --- a/src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/CancellationTests.cs +++ b/src/HotChocolate/Fusion/test/Fusion.AspNetCore.Tests/CancellationTests.cs @@ -1,4 +1,3 @@ -using HotChocolate.Language; using HotChocolate.Resolvers; using HotChocolate.Transport.Http; using HotChocolate.Types; diff --git a/src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Transport/Http/DefaultGraphQLHttpClientTests.cs b/src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Transport/Http/DefaultGraphQLHttpClientTests.cs index 47c1133907d..47c2ba95a17 100644 --- a/src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Transport/Http/DefaultGraphQLHttpClientTests.cs +++ b/src/HotChocolate/Fusion/test/Fusion.Execution.Tests/Transport/Http/DefaultGraphQLHttpClientTests.cs @@ -1,4 +1,3 @@ -using System.Collections.Immutable; using System.Text; using System.Text.Json; using HotChocolate.Buffers; @@ -272,7 +271,7 @@ public async Task ReadAsResultStream_Single_Application_Json_Lines_Response() null, null, null, - ImmutableArray.Create(VariableValues.Empty), + [VariableValues.Empty], JsonSegment.Empty); var request = new GraphQLHttpRequest(operationRequest, new Uri("http://localhost:5000/graphql")); @@ -318,7 +317,7 @@ public async Task ReadAsResultStream_Multi_Application_Json_Lines_Response() null, null, null, - ImmutableArray.Create(VariableValues.Empty, VariableValues.Empty), + [VariableValues.Empty, VariableValues.Empty], JsonSegment.Empty); var request = new GraphQLHttpRequest(operationRequest, new Uri("http://localhost:5000/graphql")); diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractHandlerInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractHandlerInspector.cs index 2f26a630ad0..1a57b09c83f 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractHandlerInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractHandlerInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractMessagingHandlerInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractMessagingHandlerInspector.cs index 1c9a07b9d17..1953e534425 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractMessagingHandlerInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/AbstractMessagingHandlerInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/HandlerInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/HandlerInspector.cs index 9e6d933551b..39d055af115 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/HandlerInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/HandlerInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/ISyntaxInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/ISyntaxInspector.cs index 575c481b6dc..af0a458f8e3 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/ISyntaxInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/ISyntaxInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/MessageTypeInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/MessageTypeInspector.cs index b2ec4e3e74f..fb37dee4188 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/MessageTypeInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/MessageTypeInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingHandlerInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingHandlerInspector.cs index 5b35483207a..e0f6ceed5e9 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingHandlerInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/MessagingHandlerInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/MultipleHandlerInterfaceInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/MultipleHandlerInterfaceInspector.cs index 02dbf9eda34..f8b3e1f2051 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/MultipleHandlerInterfaceInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/MultipleHandlerInterfaceInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/Inspectors/NotificationHandlerInspector.cs b/src/Mocha/src/Mocha.Analyzers/Inspectors/NotificationHandlerInspector.cs index c6ae8e1060d..91e1a1f48ce 100644 --- a/src/Mocha/src/Mocha.Analyzers/Inspectors/NotificationHandlerInspector.cs +++ b/src/Mocha/src/Mocha.Analyzers/Inspectors/NotificationHandlerInspector.cs @@ -1,5 +1,4 @@ using System.Collections.Immutable; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; diff --git a/src/Mocha/src/Mocha.Analyzers/KnownTypeSymbols.cs b/src/Mocha/src/Mocha.Analyzers/KnownTypeSymbols.cs index 3ae0ed1e954..b42a2b84fa9 100644 --- a/src/Mocha/src/Mocha.Analyzers/KnownTypeSymbols.cs +++ b/src/Mocha/src/Mocha.Analyzers/KnownTypeSymbols.cs @@ -1,5 +1,4 @@ using System.Runtime.CompilerServices; -using System.Threading; using Microsoft.CodeAnalysis; namespace Mocha.Analyzers; diff --git a/src/Mocha/src/Mocha.Analyzers/MediatorGenerator.cs b/src/Mocha/src/Mocha.Analyzers/MediatorGenerator.cs index 85d11bdfe62..51735b99681 100644 --- a/src/Mocha/src/Mocha.Analyzers/MediatorGenerator.cs +++ b/src/Mocha/src/Mocha.Analyzers/MediatorGenerator.cs @@ -1,6 +1,5 @@ using System.Collections.Immutable; using System.Text; -using System.Threading; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Text; diff --git a/src/Mocha/src/Mocha.Analyzers/Utils/ImmutableEquatableArray.cs b/src/Mocha/src/Mocha.Analyzers/Utils/ImmutableEquatableArray.cs index bf9f239c632..8a51984b22d 100644 --- a/src/Mocha/src/Mocha.Analyzers/Utils/ImmutableEquatableArray.cs +++ b/src/Mocha/src/Mocha.Analyzers/Utils/ImmutableEquatableArray.cs @@ -18,7 +18,7 @@ public sealed class ImmutableEquatableArray : IEquatable /// Gets an empty . /// - public static ImmutableEquatableArray Empty { get; } = new(ImmutableArray.Create()); + public static ImmutableEquatableArray Empty { get; } = new([]); private readonly ImmutableArray _values; diff --git a/src/Mocha/src/Mocha.Mediator.Abstractions/Unit.cs b/src/Mocha/src/Mocha.Mediator.Abstractions/Unit.cs index 4d2b9be78d3..7d458030fd4 100644 --- a/src/Mocha/src/Mocha.Mediator.Abstractions/Unit.cs +++ b/src/Mocha/src/Mocha.Mediator.Abstractions/Unit.cs @@ -1,7 +1,7 @@ namespace Mocha.Mediator; /// -/// Represents a void type since is not a valid generic type argument. +/// Represents a void type since is not a valid generic type argument. /// /// /// Use as the response type for commands that do not return a meaningful value. diff --git a/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorHostBuilderExtensions.cs b/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorHostBuilderExtensions.cs index 2441d397f6c..46037ccd531 100644 --- a/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorHostBuilderExtensions.cs +++ b/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorHostBuilderExtensions.cs @@ -1,5 +1,4 @@ using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.DependencyInjection.Extensions; namespace Mocha.Mediator; diff --git a/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorServiceCollectionExtensions.cs b/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorServiceCollectionExtensions.cs index cb68b9d58a2..7d280cebc09 100644 --- a/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorServiceCollectionExtensions.cs +++ b/src/Mocha/src/Mocha.Mediator/DependencyInjection/MediatorServiceCollectionExtensions.cs @@ -28,7 +28,7 @@ public static IMediatorHostBuilder AddMediator(this IServiceCollection services, if (name.Length == 0) { - services.TryAddSingleton(sp => BuildRuntime(sp, name)); + services.TryAddSingleton(sp => BuildRuntime(sp, name)); services.TryAddScoped(); services.TryAddScoped(sp => sp.GetRequiredService()); @@ -37,9 +37,9 @@ public static IMediatorHostBuilder AddMediator(this IServiceCollection services, } else { - services.TryAddKeyedSingleton(name, (sp, _) => BuildRuntime(sp, name)); + services.TryAddKeyedSingleton(name, (sp, _) => BuildRuntime(sp, name)); - services.TryAddKeyedScoped(name, + services.TryAddKeyedScoped(name, static (sp, key) => new Mediator( sp.GetRequiredKeyedService(key), sp)); diff --git a/src/Mocha/src/Mocha.Mediator/Pipeline/PipelineBuilder.cs b/src/Mocha/src/Mocha.Mediator/Pipeline/PipelineBuilder.cs index e49a8a859e2..7dd300c2f57 100644 --- a/src/Mocha/src/Mocha.Mediator/Pipeline/PipelineBuilder.cs +++ b/src/Mocha/src/Mocha.Mediator/Pipeline/PipelineBuilder.cs @@ -1,7 +1,6 @@ using System.ComponentModel; using System.Runtime.CompilerServices; using Microsoft.Extensions.DependencyInjection; -using Mocha.Features; namespace Mocha.Mediator; diff --git a/src/Mocha/src/Mocha/Builder/MessageBusBuilder.cs b/src/Mocha/src/Mocha/Builder/MessageBusBuilder.cs index 3ff96bcc89a..a39b382e896 100644 --- a/src/Mocha/src/Mocha/Builder/MessageBusBuilder.cs +++ b/src/Mocha/src/Mocha/Builder/MessageBusBuilder.cs @@ -83,7 +83,9 @@ public IMessageBusBuilder AddHandler(Action? conf inner(d); configure(d); } +#pragma warning disable format : configure; +#pragma warning restore format } return this; @@ -143,7 +145,9 @@ public IMessageBusBuilder AddHandler(Action? conf _consumerRegistrations.Add(new ConsumerRegistration { - HandlerType = handlerType, Configure = configure, Factory = factory + HandlerType = handlerType, + Configure = configure, + Factory = factory }); return this; @@ -164,7 +168,9 @@ public IMessageBusBuilder AddHandlerConfiguration(MessagingHandlerConfiguration _consumerRegistrations.Add(new ConsumerRegistration { - HandlerType = handlerType, Configure = null, Factory = configuration.Factory + HandlerType = handlerType, + Configure = null, + Factory = configuration.Factory }); return this; @@ -361,10 +367,11 @@ public MessagingRuntime Build(IServiceProvider applicationServices) var responseManager = applicationServices.GetRequiredService(); // Materialize consumers from registrations - var consumerList = new List(); - - // Infrastructure consumer - consumerList.Add(new ReplyConsumer(responseManager)); + var consumerList = new List + { + // Infrastructure consumer + new ReplyConsumer(responseManager) + }; // Handler consumers from registrations foreach (var reg in _consumerRegistrations) diff --git a/src/Mocha/test/Mocha.Analyzers.Tests/MessagingTestHelper.cs b/src/Mocha/test/Mocha.Analyzers.Tests/MessagingTestHelper.cs index 38b2637b438..abd53262e86 100644 --- a/src/Mocha/test/Mocha.Analyzers.Tests/MessagingTestHelper.cs +++ b/src/Mocha/test/Mocha.Analyzers.Tests/MessagingTestHelper.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis.CSharp; using CookieCrumble; using Microsoft.Extensions.DependencyInjection; -using Mocha.Analyzers; namespace Mocha.Analyzers.Tests; diff --git a/src/Mocha/test/Mocha.Analyzers.Tests/TestHelper.cs b/src/Mocha/test/Mocha.Analyzers.Tests/TestHelper.cs index 999872d802d..a35b897b670 100644 --- a/src/Mocha/test/Mocha.Analyzers.Tests/TestHelper.cs +++ b/src/Mocha/test/Mocha.Analyzers.Tests/TestHelper.cs @@ -8,7 +8,6 @@ using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using CookieCrumble; -using Mocha.Analyzers; namespace Mocha.Analyzers.Tests; @@ -31,13 +30,13 @@ public static Snapshot GetGeneratedSourceSnapshot( .. Net100.References.All, #endif // Mocha.Mediator - MetadataReference.CreateFromFile(typeof(Mocha.Mediator.IMediator).Assembly.Location), + MetadataReference.CreateFromFile(typeof(Mediator.IMediator).Assembly.Location), // Microsoft.Extensions.DependencyInjection.Abstractions MetadataReference.CreateFromFile(typeof(Microsoft.Extensions.DependencyInjection.IServiceCollection).Assembly.Location), // System.Runtime.CompilerServices.Unsafe - MetadataReference.CreateFromFile(typeof(System.Runtime.CompilerServices.Unsafe).Assembly.Location), + MetadataReference.CreateFromFile(typeof(Unsafe).Assembly.Location), // System.Runtime from the actual runtime (needed for predefined type resolution // so that assembly-level attribute constructor arguments can be bound) diff --git a/src/Mocha/test/Mocha.Mediator.Tests/AddHandlerTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/AddHandlerTests.cs index 3af32349b2f..893fc2e1489 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/AddHandlerTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/AddHandlerTests.cs @@ -102,7 +102,7 @@ public void AddHandler_Should_Throw_When_TypeIsNotHandler() // Act & Assert - validation is deferred to Build() time, which happens // when MediatorRuntime is first resolved (triggered by IMediator resolution). Assert.Throws( - () => sp.GetRequiredService()); + sp.GetRequiredService); } [Fact] diff --git a/src/Mocha/test/Mocha.Mediator.Tests/ContextPoolingTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/ContextPoolingTests.cs index b525908b9be..c63c54fa8d5 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/ContextPoolingTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/ContextPoolingTests.cs @@ -83,7 +83,7 @@ public async Task SendAsync_Should_IsolateContextPerThread_When_DispatchedConcur // Synchronize all threads to maximize contention barrier.SignalAndWait(); - var result = await mediator.SendAsync( + var result = await mediator.SendAsync( new PoolTestCommandWithResponse($"thread-{index}")); capturedMessages[index] = result; }, TaskCreationOptions.LongRunning).Unwrap(); @@ -133,7 +133,7 @@ public async Task SendAsync_Should_PopulateContextFields_When_PipelineExecutes() var command = new ContextCaptureCommand("payload"); // Act - await mediator.SendAsync(command, cts.Token); + await mediator.SendAsync(command, cts.Token); // Assert: the capturing middleware recorded the correct context fields. Assert.Same(scope.ServiceProvider, ContextCapture.CapturedServices); diff --git a/src/Mocha/test/Mocha.Mediator.Tests/MiddlewareFactoryContextTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/MiddlewareFactoryContextTests.cs index 22903842d54..88dabd21cf2 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/MiddlewareFactoryContextTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/MiddlewareFactoryContextTests.cs @@ -16,7 +16,7 @@ public async Task FactoryContext_Should_ExposeCorrectTypes_When_CommandWithRespo registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.Equal(typeof(PipelineTestCommand), capturedMessageType); @@ -28,7 +28,7 @@ public async Task FactoryContext_Should_HaveNullResponseType_When_VoidCommand() { // Arrange Type? capturedMessageType = null; - Type? capturedResponseType = typeof(object); // sentinel to verify it's set to null + var capturedResponseType = typeof(object); // sentinel to verify it's set to null var mediator = BuildMediator( CaptureTypesMiddleware(t => capturedMessageType = t, t => capturedResponseType = t), @@ -66,7 +66,7 @@ public async Task FactoryContext_Should_HaveNullResponseType_When_Notification() { // Arrange Type? capturedMessageType = null; - Type? capturedResponseType = typeof(object); + var capturedResponseType = typeof(object); var mediator = BuildMediator( CaptureTypesMiddleware(t => capturedMessageType = t, t => capturedResponseType = t), @@ -108,7 +108,7 @@ public async Task IsCommandWithResponse_Should_ReturnTrue_When_CommandWithRespon registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.True(result); @@ -129,7 +129,7 @@ public async Task IsQuery_Should_ReturnTrue_When_Query_And_ReturnFalse_When_Comm // Act await mediator1.QueryAsync(new CtxTestQuery()); - await mediator2.SendAsync(new PipelineTestCommand("test")); + await mediator2.SendAsync(new PipelineTestCommand("test")); // Assert Assert.True(queryResult); @@ -198,7 +198,7 @@ public async Task IsNotification_Should_ReturnFalse_When_Command() registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.False(result); @@ -215,7 +215,7 @@ public async Task IsMessageAssignableTo_Should_ReturnTrue_When_MatchingGenericTy registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.True(result); @@ -232,7 +232,7 @@ public async Task IsMessageAssignableTo_Should_ReturnFalse_When_NonMatchingGener registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.False(result); @@ -249,7 +249,7 @@ public async Task IsMessageAssignableTo_Should_ReturnTrue_When_MatchingType() registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.True(result); @@ -266,7 +266,7 @@ public async Task IsResponseAssignableTo_Should_ReturnTrue_When_MatchingType() registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.True(result); @@ -283,7 +283,7 @@ public async Task IsResponseAssignableTo_Should_ReturnFalse_When_NonMatchingType registerCommand: true); // Act - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.False(result); @@ -340,7 +340,9 @@ public async Task Use_Should_SkipMiddleware_When_MessageTypeDoesNotMatch() (factoryCtx, next) => { if (!factoryCtx.IsCommand() || factoryCtx.IsCommandWithResponse()) + { return next; // Opt out at compile time + } return ctx => { @@ -361,7 +363,7 @@ public async Task Use_Should_SkipMiddleware_When_MessageTypeDoesNotMatch() var mediator = scope.ServiceProvider.GetRequiredService(); // Act - send command with response (should NOT trigger middleware) - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.False(middlewareExecuted); @@ -390,7 +392,9 @@ public async Task Use_Should_SkipMiddleware_When_ResponseTypeDoesNotMatch() (factoryCtx, next) => { if (!factoryCtx.IsResponseAssignableTo()) + { return next; + } return ctx => { @@ -411,7 +415,7 @@ public async Task Use_Should_SkipMiddleware_When_ResponseTypeDoesNotMatch() var mediator = scope.ServiceProvider.GetRequiredService(); // Act - send command with string response (should NOT trigger) - await mediator.SendAsync(new PipelineTestCommand("test")); + await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.False(middlewareExecuted); diff --git a/src/Mocha/test/Mocha.Mediator.Tests/MiddlewarePipelineTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/MiddlewarePipelineTests.cs index 23cc1d9c452..e04e82e45d2 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/MiddlewarePipelineTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/MiddlewarePipelineTests.cs @@ -99,7 +99,7 @@ static async ValueTask Awaited(ValueTask t, List l) var mediator = scope.ServiceProvider.GetRequiredService(); // Act - var result = await mediator.SendAsync(new PipelineTestCommand("order-test")); + var result = await mediator.SendAsync(new PipelineTestCommand("order-test")); // Assert Assert.Equal("handled:order-test", result); @@ -141,7 +141,7 @@ public async Task SendAsync_Should_ExposeContextProperties_When_MiddlewareReadsC var command = new PipelineTestCommand("context-check"); // Act - await mediator.SendAsync(command, cts.Token); + await mediator.SendAsync(command, cts.Token); // Assert Assert.Same(command, capturedMessage); @@ -185,7 +185,7 @@ static async ValueTask Awaited(ValueTask t, IMediatorContext c) var mediator = scope.ServiceProvider.GetRequiredService(); // Act - var result = await mediator.SendAsync(new PipelineTestCommand("test")); + var result = await mediator.SendAsync(new PipelineTestCommand("test")); // Assert Assert.Equal("handled:test-modified", result); @@ -225,7 +225,7 @@ public async Task SendAsync_Should_PropagateExceptionThroughMiddleware_When_Hand // Act & Assert await Assert.ThrowsAsync( - () => mediator.SendAsync(new PipelineTestCommand("boom")).AsTask()); + () => mediator.SendAsync(new PipelineTestCommand("boom")).AsTask()); Assert.True(middlewareSawException); } @@ -239,7 +239,7 @@ public async Task SendAsync_Should_PropagateExceptionAndSkipHandler_When_Middlew var services = new ServiceCollection(); var builder = services.AddMediator(); - services.AddScoped( + services.AddScoped( _ => new PipelineTrackingHandler(() => handlerInvoked = true)); builder.Use(new MediatorMiddlewareConfiguration( @@ -255,7 +255,7 @@ public async Task SendAsync_Should_PropagateExceptionAndSkipHandler_When_Middlew // Act & Assert var ex = await Assert.ThrowsAsync( - () => mediator.SendAsync(new PipelineTestCommand("never-handled")).AsTask()); + () => mediator.SendAsync(new PipelineTestCommand("never-handled")).AsTask()); Assert.Equal("middleware failure", ex.Message); Assert.False(handlerInvoked); @@ -270,7 +270,7 @@ public async Task SendAsync_Should_ReturnShortCircuitResult_When_MiddlewareSkips var services = new ServiceCollection(); var builder = services.AddMediator(); - services.AddScoped( + services.AddScoped( _ => new PipelineTrackingHandler(() => handlerInvoked = true)); builder.Use(new MediatorMiddlewareConfiguration( @@ -288,7 +288,7 @@ public async Task SendAsync_Should_ReturnShortCircuitResult_When_MiddlewareSkips var mediator = scope.ServiceProvider.GetRequiredService(); // Act - var result = await mediator.SendAsync(new PipelineTestCommand("ignored")); + var result = await mediator.SendAsync(new PipelineTestCommand("ignored")); // Assert Assert.Equal("short-circuited", result); diff --git a/src/Mocha/test/Mocha.Mediator.Tests/NamedMediatorTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/NamedMediatorTests.cs index 2de0f56bad1..f3c67ede47b 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/NamedMediatorTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/NamedMediatorTests.cs @@ -36,7 +36,7 @@ public async Task GetKeyedService_Should_ResolveNamedMediator() var billingMediator = scope.ServiceProvider.GetRequiredKeyedService("billing"); // Act - var result = await billingMediator.SendAsync(new BillingCommand("invoice-123")); + var result = await billingMediator.SendAsync(new BillingCommand("invoice-123")); // Assert Assert.Equal("billed:invoice-123", result); @@ -51,8 +51,8 @@ public async Task GetService_Should_ResolveCorrectMediator_When_DefaultAndNamedC var billingMediator = scope.ServiceProvider.GetRequiredKeyedService("billing"); // Act - var defaultResult = await defaultMediator.SendAsync(new DefaultCommand("hello")); - var billingResult = await billingMediator.SendAsync(new BillingCommand("pay-456")); + var defaultResult = await defaultMediator.SendAsync(new DefaultCommand("hello")); + var billingResult = await billingMediator.SendAsync(new BillingCommand("pay-456")); // Assert Assert.Equal("default:hello", defaultResult); @@ -68,8 +68,8 @@ public async Task SendAsync_Should_DispatchIndependently_When_MultipleNamedMedia var shippingMediator = scope.ServiceProvider.GetRequiredKeyedService("shipping"); // Act - var billingResult = await billingMediator.SendAsync(new BillingCommand("b-1")); - var shippingResult = await shippingMediator.SendAsync(new ShippingCommand("s-1")); + var billingResult = await billingMediator.SendAsync(new BillingCommand("b-1")); + var shippingResult = await shippingMediator.SendAsync(new ShippingCommand("s-1")); // Assert Assert.Equal("billed:b-1", billingResult); @@ -99,7 +99,7 @@ public void SendAsync_Should_ThrowInvalidOperationException_When_MessageNotRegis // Act & Assert Assert.Throws( - () => billingMediator.SendAsync(new DefaultCommand("wrong")).AsTask().GetAwaiter().GetResult()); + () => billingMediator.SendAsync(new DefaultCommand("wrong")).AsTask().GetAwaiter().GetResult()); } public void Dispose() diff --git a/src/Mocha/test/Mocha.Mediator.Tests/NotificationStrategyTests.cs b/src/Mocha/test/Mocha.Mediator.Tests/NotificationStrategyTests.cs index d9e422f9c49..bbd0f582004 100644 --- a/src/Mocha/test/Mocha.Mediator.Tests/NotificationStrategyTests.cs +++ b/src/Mocha/test/Mocha.Mediator.Tests/NotificationStrategyTests.cs @@ -14,11 +14,11 @@ public async Task PublishAsync_Should_InvokeHandlersSequentially_When_UsingForea var services = new ServiceCollection(); var builder = services.AddMediator(); - services.AddScoped( + services.AddScoped( _ => new SequentialHandler1(log)); - services.AddScoped( + services.AddScoped( _ => new SequentialHandler2(log)); - services.AddScoped( + services.AddScoped( _ => new SequentialHandler3(log)); builder.ConfigureMediator(b => @@ -50,11 +50,11 @@ public async Task PublishAsync_Should_StopExecution_When_ForeachAwaitHandlerThro var services = new ServiceCollection(); var builder = services.AddMediator(); - services.AddScoped( + services.AddScoped( _ => new SequentialHandler1(log)); - services.AddScoped( + services.AddScoped( _ => new StrategyThrowingHandler()); - services.AddScoped( + services.AddScoped( _ => new SequentialHandler3(log)); builder.ConfigureMediator(b => @@ -88,11 +88,11 @@ public async Task PublishAsync_Should_InvokeAllHandlers_When_UsingTaskWhenAll() builder.ConfigureOptions(o => o.NotificationPublishMode = NotificationPublishMode.Concurrent); - services.AddScoped( + services.AddScoped( _ => new ConcurrentHandler1(bag)); - services.AddScoped( + services.AddScoped( _ => new ConcurrentHandler2(bag)); - services.AddScoped( + services.AddScoped( _ => new ConcurrentHandler3(bag)); builder.ConfigureMediator(b => @@ -128,9 +128,9 @@ public async Task PublishAsync_Should_PropagateException_When_TaskWhenAllHandler builder.ConfigureOptions(o => o.NotificationPublishMode = NotificationPublishMode.Concurrent); - services.AddScoped( + services.AddScoped( _ => new ConcurrentHandler1(bag)); - services.AddScoped( + services.AddScoped( _ => new StrategyThrowingHandler()); builder.ConfigureMediator(b =>