diff --git a/MicrosoftExtensions.sln b/MicrosoftExtensions.sln index 93aa99b..cabf0a2 100644 --- a/MicrosoftExtensions.sln +++ b/MicrosoftExtensions.sln @@ -1,9 +1,12 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 15 -VisualStudioVersion = 15.0.26906.1 +VisualStudioVersion = 15.0.27130.2027 MinimumVisualStudioVersion = 10.0.40219.1 Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{2D805782-756E-4C98-B22E-F502BEE95318}" + ProjectSection(SolutionItems) = preProject + src\Directory.Build.props = src\Directory.Build.props + EndProjectSection EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{31A4DDB1-952E-4EED-96EF-29C669279A86}" ProjectSection(SolutionItems) = preProject diff --git a/MicrosoftExtensions.sln.DotSettings b/MicrosoftExtensions.sln.DotSettings index 37f2aed..0dacdc4 100644 --- a/MicrosoftExtensions.sln.DotSettings +++ b/MicrosoftExtensions.sln.DotSettings @@ -45,8 +45,12 @@ ALWAYS_ADD ALWAYS_ADD 1 + NEVER + NEVER False + NEVER False + NEVER True False True @@ -531,9 +535,14 @@ <Policy Inspect="True" Prefix="" Suffix="" Style="aaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> <Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /> + True True + True + True + True True True + True True True <data><AttributeFilter ClassMask="App.Metrics.Core.Internal.AppMetricsExcludeFromCodeCoverage" IsEnabled="True" /><AttributeFilter ClassMask="App.Metrics.Core.Internal.AppMetricsExcludeFromCodeCoverageAttribute" IsEnabled="True" /></data> diff --git a/build/dependencies.props b/build/dependencies.props index 26474b6..5bc1b76 100644 --- a/build/dependencies.props +++ b/build/dependencies.props @@ -2,19 +2,20 @@ 2.0.0-* 2.0.0-* - 2.0.0-* + 2.0.1 + 2.0.0 4.4.0-* - 2.0.0-* + 2.0.4 4.2.6 4.4.0 - 4.7.49 + 4.8.1 10.0.2 2.0.0-* 2.0.0-* - 15.3.0-* - 2.3.0-beta2-* - 4.19.2 - 4.19.0 + 15.5.0 + 2.3.1 + 5.0.0 + 5.0.0 1.0.0 diff --git a/sandbox/HealthMicrosoftExtensionsSandbox/HealthMicrosoftExtensionsSandbox.csproj b/sandbox/HealthMicrosoftExtensionsSandbox/HealthMicrosoftExtensionsSandbox.csproj index 01548f3..2f0e2f6 100644 --- a/sandbox/HealthMicrosoftExtensionsSandbox/HealthMicrosoftExtensionsSandbox.csproj +++ b/sandbox/HealthMicrosoftExtensionsSandbox/HealthMicrosoftExtensionsSandbox.csproj @@ -14,9 +14,9 @@ - - - + + + diff --git a/sandbox/MetricsMicrosoftExtensionsSandbox/MetricsMicrosoftExtensionsSandbox.csproj b/sandbox/MetricsMicrosoftExtensionsSandbox/MetricsMicrosoftExtensionsSandbox.csproj index 7e0e89a..53091af 100644 --- a/sandbox/MetricsMicrosoftExtensionsSandbox/MetricsMicrosoftExtensionsSandbox.csproj +++ b/sandbox/MetricsMicrosoftExtensionsSandbox/MetricsMicrosoftExtensionsSandbox.csproj @@ -14,9 +14,9 @@ - - - + + + diff --git a/src/App.Metrics.Extensions.Configuration/App.Metrics.Extensions.Configuration.csproj b/src/App.Metrics.Extensions.Configuration/App.Metrics.Extensions.Configuration.csproj index 4b28892..753e7af 100644 --- a/src/App.Metrics.Extensions.Configuration/App.Metrics.Extensions.Configuration.csproj +++ b/src/App.Metrics.Extensions.Configuration/App.Metrics.Extensions.Configuration.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/App.Metrics.Extensions.DependencyInjection/App.Metrics.Extensions.DependencyInjection.csproj b/src/App.Metrics.Extensions.DependencyInjection/App.Metrics.Extensions.DependencyInjection.csproj index a438c98..e89765b 100644 --- a/src/App.Metrics.Extensions.DependencyInjection/App.Metrics.Extensions.DependencyInjection.csproj +++ b/src/App.Metrics.Extensions.DependencyInjection/App.Metrics.Extensions.DependencyInjection.csproj @@ -10,7 +10,7 @@ - + diff --git a/src/App.Metrics.Health.Extensions.Configuration/App.Metrics.Health.Extensions.Configuration.csproj b/src/App.Metrics.Health.Extensions.Configuration/App.Metrics.Health.Extensions.Configuration.csproj index bcf9dfb..983976c 100644 --- a/src/App.Metrics.Health.Extensions.Configuration/App.Metrics.Health.Extensions.Configuration.csproj +++ b/src/App.Metrics.Health.Extensions.Configuration/App.Metrics.Health.Extensions.Configuration.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/App.Metrics.Health.Extensions.DependencyInjection/App.Metrics.Health.Extensions.DependencyInjection.csproj b/src/App.Metrics.Health.Extensions.DependencyInjection/App.Metrics.Health.Extensions.DependencyInjection.csproj index d3535b7..ceabd99 100644 --- a/src/App.Metrics.Health.Extensions.DependencyInjection/App.Metrics.Health.Extensions.DependencyInjection.csproj +++ b/src/App.Metrics.Health.Extensions.DependencyInjection/App.Metrics.Health.Extensions.DependencyInjection.csproj @@ -11,7 +11,7 @@ - + diff --git a/src/App.Metrics.Health.Extensions.DependencyInjection/Internal/DefaultHealthCheckTypeProvider.cs b/src/App.Metrics.Health.Extensions.DependencyInjection/Internal/DefaultHealthCheckTypeProvider.cs index eebc032..5012101 100644 --- a/src/App.Metrics.Health.Extensions.DependencyInjection/Internal/DefaultHealthCheckTypeProvider.cs +++ b/src/App.Metrics.Health.Extensions.DependencyInjection/Internal/DefaultHealthCheckTypeProvider.cs @@ -70,8 +70,7 @@ public IEnumerable HealthCheckTypes return false; } - if (!typeInfo.Name.EndsWith(HealthCheckTypeName, StringComparison.OrdinalIgnoreCase) && - !DerivesFromHealthCheck(typeInfo, candidateAssemblies)) + if (!DerivesFromHealthCheck(typeInfo, candidateAssemblies)) { return false; } diff --git a/src/Directory.Build.props b/src/Directory.Build.props index ad660fa..1a172c2 100644 --- a/src/Directory.Build.props +++ b/src/Directory.Build.props @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/test/Health.Extensions.Configuration.Facts/Health.Extensions.Configuration.Facts.csproj b/test/Health.Extensions.Configuration.Facts/Health.Extensions.Configuration.Facts.csproj index f3a8dd8..00b94c0 100644 --- a/test/Health.Extensions.Configuration.Facts/Health.Extensions.Configuration.Facts.csproj +++ b/test/Health.Extensions.Configuration.Facts/Health.Extensions.Configuration.Facts.csproj @@ -23,7 +23,7 @@ - + diff --git a/test/Health.Extensions.DependencyInjection.Facts/ServiceCollectionHealthBuilderExtensionsTests.cs b/test/Health.Extensions.DependencyInjection.Facts/ServiceCollectionHealthBuilderExtensionsTests.cs index 811f78a..22f4951 100644 --- a/test/Health.Extensions.DependencyInjection.Facts/ServiceCollectionHealthBuilderExtensionsTests.cs +++ b/test/Health.Extensions.DependencyInjection.Facts/ServiceCollectionHealthBuilderExtensionsTests.cs @@ -80,6 +80,24 @@ public void Should_scan_assembly_and_add_health_checks_and_ignore_obsolete_check health.Checks.Skip(1).First().Name.Should().Be("Referenced Health Check"); } + [Fact] + public void Should_only_register_class_deriving_health_check() + { + // Arrange + var services = new ServiceCollection(); + services.AddSingleton(); + + // Act + var unused = new HealthBuilder() + .HealthChecks.RegisterFromAssembly(services, _fixture.DependencyContext) + .BuildAndAddTo(services); + var provider = services.BuildServiceProvider(); + var health = provider.GetRequiredService(); + + // Assert + health.Checks.FirstOrDefault(h => h.Name == nameof(DontRegisterHealthCheck)).Should().BeNull(); + } + [Fact] public void Should_append_resolved_health_checks_to_those_explicitly_registered() { diff --git a/test/Health.Extensions.DependencyInjection.Facts/TestHelpers/DontRegisterHealthCheck.cs b/test/Health.Extensions.DependencyInjection.Facts/TestHelpers/DontRegisterHealthCheck.cs new file mode 100644 index 0000000..d8f1447 --- /dev/null +++ b/test/Health.Extensions.DependencyInjection.Facts/TestHelpers/DontRegisterHealthCheck.cs @@ -0,0 +1,29 @@ +// +// Copyright (c) Allan Hardy. All rights reserved. +// + +using System; +using System.Threading; +using System.Threading.Tasks; +using App.Metrics.Health; + +namespace Health.Extensions.DependencyInjection.Facts.TestHelpers +{ + public class DontRegisterHealthCheck + { + public ValueTask CheckAsync(CancellationToken cancellationToken = default) + { + if (DateTime.UtcNow.Second <= 20) + { + return new ValueTask(HealthCheckResult.Degraded()); + } + + if (DateTime.UtcNow.Second >= 40) + { + return new ValueTask(HealthCheckResult.Unhealthy()); + } + + return new ValueTask(HealthCheckResult.Healthy()); + } + } +} diff --git a/test/Metrics.Extensions.Configuration.Facts/Metrics.Extensions.Configuration.Facts.csproj b/test/Metrics.Extensions.Configuration.Facts/Metrics.Extensions.Configuration.Facts.csproj index 8a38efd..fc29308 100644 --- a/test/Metrics.Extensions.Configuration.Facts/Metrics.Extensions.Configuration.Facts.csproj +++ b/test/Metrics.Extensions.Configuration.Facts/Metrics.Extensions.Configuration.Facts.csproj @@ -24,7 +24,7 @@ - +