From d458a510648e0120b1fb30e962f1343a2d3cfc53 Mon Sep 17 00:00:00 2001 From: Stephen Halter Date: Tue, 16 Jan 2018 14:55:27 -0800 Subject: [PATCH] Fix typo + tests --- .../WebHostBuilderKestrelExtensions.cs | 3 ++- .../WebHostBuilderKestrelExtensionsTests.cs | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 4 deletions(-) diff --git a/src/Kestrel/WebHostBuilderKestrelExtensions.cs b/src/Kestrel/WebHostBuilderKestrelExtensions.cs index 5662a807d..70b1a34d7 100644 --- a/src/Kestrel/WebHostBuilderKestrelExtensions.cs +++ b/src/Kestrel/WebHostBuilderKestrelExtensions.cs @@ -8,6 +8,7 @@ using Microsoft.AspNetCore.Server.Kestrel.Transport.Abstractions.Internal; using Microsoft.AspNetCore.Server.Kestrel.Transport.Libuv; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Options; namespace Microsoft.AspNetCore.Hosting @@ -28,7 +29,7 @@ public static IWebHostBuilder UseKestrel(this IWebHostBuilder hostBuilder) return hostBuilder.ConfigureServices(services => { // Don't override an already-configured transport - services.AddSingleton(); + services.TryAddSingleton(); services.AddTransient, KestrelServerOptionsSetup>(); services.AddSingleton(); diff --git a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs index 86b79a699..3c10c1c0f 100644 --- a/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs +++ b/test/Kestrel.Tests/WebHostBuilderKestrelExtensionsTests.cs @@ -61,7 +61,7 @@ public void LibuvIsTheDefaultTransport() } [Fact] - public void LibuvTransportCanBeManuallySelected() + public void LibuvTransportCanBeManuallySelectedIndependentOfOrder() { var hostBuilder = new WebHostBuilder() .UseKestrel() @@ -69,11 +69,17 @@ public void LibuvTransportCanBeManuallySelected() .Configure(app => { }); Assert.IsType(hostBuilder.Build().Services.GetService()); - } + var hostBuilderReversed = new WebHostBuilder() + .UseLibuv() + .UseKestrel() + .Configure(app => { }); + + Assert.IsType(hostBuilderReversed.Build().Services.GetService()); + } [Fact] - public void SocketsTransportCanBeManuallySelected() + public void SocketsTransportCanBeManuallySelectedIndependentOfOrder() { var hostBuilder = new WebHostBuilder() .UseKestrel() @@ -81,6 +87,13 @@ public void SocketsTransportCanBeManuallySelected() .Configure(app => { }); Assert.IsType(hostBuilder.Build().Services.GetService()); + + var hostBuilderReversed = new WebHostBuilder() + .UseSockets() + .UseKestrel() + .Configure(app => { }); + + Assert.IsType(hostBuilderReversed.Build().Services.GetService()); } } }