From d1c4139bfd1673d9fd6b780dcba992fb3af8181e Mon Sep 17 00:00:00 2001 From: Stijn Moreels <9039753+stijnmoreels@users.noreply.github.com> Date: Wed, 29 Jan 2025 08:49:17 +0100 Subject: [PATCH] fix: deprecate logger core package (#264) --- .../Arcus.Testing.Logging.Core.csproj | 4 ++-- .../CustomLoggerProvider.cs | 3 +++ .../InMemoryLogSink.cs | 6 +++-- .../InMemoryLogger.cs | 3 +++ .../InMemoryLoggerT.cs | 6 ++++- src/Arcus.Testing.Logging.Core/LogEntry.cs | 3 +++ .../Arcus.Testing.Logging.MSTest.csproj | 2 ++ .../Extensions/ILoggerBuilderExtensions.cs | 23 ++++++++++++++++--- .../LoggerSinkConfigurationExtensions.cs | 2 ++ .../MSTestLogEventSink.cs | 2 ++ .../Arcus.Testing.Logging.NUnit.csproj | 3 ++- .../Extensions/ILoggerBuilderExtensions.cs | 23 +++++++++++++++++-- .../Arcus.Testing.Logging.Xunit.csproj | 3 ++- .../Extensions/ILoggerBuilderExtensions.cs | 23 ++++++++++++++++--- 14 files changed, 91 insertions(+), 15 deletions(-) diff --git a/src/Arcus.Testing.Logging.Core/Arcus.Testing.Logging.Core.csproj b/src/Arcus.Testing.Logging.Core/Arcus.Testing.Logging.Core.csproj index 60dd75d4..5ef60aea 100644 --- a/src/Arcus.Testing.Logging.Core/Arcus.Testing.Logging.Core.csproj +++ b/src/Arcus.Testing.Logging.Core/Arcus.Testing.Logging.Core.csproj @@ -7,10 +7,10 @@ Arcus Provides logging capabilities during Arcus testing Copyright (c) Arcus - false + true false true - $(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904 + $(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904;CS6018 diff --git a/src/Arcus.Testing.Logging.Core/CustomLoggerProvider.cs b/src/Arcus.Testing.Logging.Core/CustomLoggerProvider.cs index 552f7093..f33f1ca1 100644 --- a/src/Arcus.Testing.Logging.Core/CustomLoggerProvider.cs +++ b/src/Arcus.Testing.Logging.Core/CustomLoggerProvider.cs @@ -6,6 +6,9 @@ namespace Arcus.Testing /// /// Custom that creates a custom provider. /// +#pragma warning disable S1133 + [Obsolete("Will be removed in v2.0, use the specific logging packages (Xunit, NUnit, MSTest) instead")] +#pragma warning restore public class CustomLoggerProvider : ILoggerProvider { private readonly ILogger _logger; diff --git a/src/Arcus.Testing.Logging.Core/InMemoryLogSink.cs b/src/Arcus.Testing.Logging.Core/InMemoryLogSink.cs index ace94766..e4053b6b 100644 --- a/src/Arcus.Testing.Logging.Core/InMemoryLogSink.cs +++ b/src/Arcus.Testing.Logging.Core/InMemoryLogSink.cs @@ -10,11 +10,13 @@ namespace Arcus.Testing /// /// Represents a logging sink that collects the emitted log events in-memory. /// +#pragma warning disable S1133 [Obsolete("Arcus.Testing.Logging.Core will stop supporting Serilog by default, please implement Serilog sinks yourself as this sink will be removed in v2.0")] +#pragma warning restore public class InMemoryLogSink : ILogEventSink { private readonly ConcurrentQueue _logEmits = new ConcurrentQueue(); - + /// /// Gets the current log emits available on the sink. /// @@ -24,7 +26,7 @@ public class InMemoryLogSink : ILogEventSink /// Gets the current messages of the log emits available on the sink. /// public IEnumerable CurrentLogMessages => CurrentLogEmits.Select(emit => emit.RenderMessage()); - + /// /// Emit the provided log event to the sink. /// diff --git a/src/Arcus.Testing.Logging.Core/InMemoryLogger.cs b/src/Arcus.Testing.Logging.Core/InMemoryLogger.cs index 706abc1f..3749c1da 100644 --- a/src/Arcus.Testing.Logging.Core/InMemoryLogger.cs +++ b/src/Arcus.Testing.Logging.Core/InMemoryLogger.cs @@ -9,6 +9,9 @@ namespace Arcus.Testing /// /// Spy (stub) implementation to track the logged messages in-memory. /// +#pragma warning disable S1133 + [Obsolete("Will be removed in v2.0, use the specific logging packages (Xunit, NUnit, MSTest) instead")] +#pragma warning restore public class InMemoryLogger : ILogger { private readonly ConcurrentQueue _entries = new ConcurrentQueue(); diff --git a/src/Arcus.Testing.Logging.Core/InMemoryLoggerT.cs b/src/Arcus.Testing.Logging.Core/InMemoryLoggerT.cs index 2feb70b0..c9914111 100644 --- a/src/Arcus.Testing.Logging.Core/InMemoryLoggerT.cs +++ b/src/Arcus.Testing.Logging.Core/InMemoryLoggerT.cs @@ -1,4 +1,5 @@ -using Microsoft.Extensions.Logging; +using System; +using Microsoft.Extensions.Logging; namespace Arcus.Testing { @@ -6,6 +7,9 @@ namespace Arcus.Testing /// Spy (stub) implementation to track the logged messages in-memory. /// /// The type who's name is used for the logger category name. +#pragma warning disable S1133 + [Obsolete("Will be removed in v2.0, use the specific logging packages (Xunit, NUnit, MSTest) instead")] +#pragma warning restore public class InMemoryLogger : InMemoryLogger, ILogger { } diff --git a/src/Arcus.Testing.Logging.Core/LogEntry.cs b/src/Arcus.Testing.Logging.Core/LogEntry.cs index ac3eda59..b8e557aa 100644 --- a/src/Arcus.Testing.Logging.Core/LogEntry.cs +++ b/src/Arcus.Testing.Logging.Core/LogEntry.cs @@ -6,6 +6,9 @@ namespace Arcus.Testing /// /// Represents a logged message by a instance. /// +#pragma warning disable S1133 + [Obsolete("Will be removed in v2.0, use the specific logging packages (Xunit, NUnit, MSTest) instead")] +#pragma warning restore public class LogEntry { /// diff --git a/src/Arcus.Testing.Logging.MSTest/Arcus.Testing.Logging.MSTest.csproj b/src/Arcus.Testing.Logging.MSTest/Arcus.Testing.Logging.MSTest.csproj index df1ca790..685341e4 100644 --- a/src/Arcus.Testing.Logging.MSTest/Arcus.Testing.Logging.MSTest.csproj +++ b/src/Arcus.Testing.Logging.MSTest/Arcus.Testing.Logging.MSTest.csproj @@ -32,7 +32,9 @@ + + diff --git a/src/Arcus.Testing.Logging.MSTest/Extensions/ILoggerBuilderExtensions.cs b/src/Arcus.Testing.Logging.MSTest/Extensions/ILoggerBuilderExtensions.cs index ba3399c6..15713ddd 100644 --- a/src/Arcus.Testing.Logging.MSTest/Extensions/ILoggerBuilderExtensions.cs +++ b/src/Arcus.Testing.Logging.MSTest/Extensions/ILoggerBuilderExtensions.cs @@ -22,10 +22,27 @@ public static ILoggingBuilder AddMSTestLogging(this ILoggingBuilder builder, Tes ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(testContext); - var logger = new MSTestLogger(testContext); - var provider = new CustomLoggerProvider(logger); - + var provider = new MSTestLoggerProvider(testContext); return builder.AddProvider(provider); } + + private sealed class MSTestLoggerProvider : ILoggerProvider + { + private readonly ILogger _logger; + + public MSTestLoggerProvider(TestContext context) + { + _logger = new MSTestLogger(context); + } + + public ILogger CreateLogger(string categoryName) + { + return _logger; + } + + public void Dispose() + { + } + } } } diff --git a/src/Arcus.Testing.Logging.MSTest/Extensions/LoggerSinkConfigurationExtensions.cs b/src/Arcus.Testing.Logging.MSTest/Extensions/LoggerSinkConfigurationExtensions.cs index 41f99c71..78a5b648 100644 --- a/src/Arcus.Testing.Logging.MSTest/Extensions/LoggerSinkConfigurationExtensions.cs +++ b/src/Arcus.Testing.Logging.MSTest/Extensions/LoggerSinkConfigurationExtensions.cs @@ -16,7 +16,9 @@ public static class LoggerSinkConfigurationExtensions /// The Serilog sink configuration where the NUnit test logging will be added. /// The MSTest test writer to write custom test output. /// Thrown when the or is null. +#pragma warning disable S1133 [Obsolete("Arcus.Testing.Logging.MSTest will stop supporting Serilog by default, please implement Serilog sinks yourself as this extension will be removed in v2.0")] +#pragma warning restore public static LoggerConfiguration MSTestLogging(this LoggerSinkConfiguration config, TestContext testContext) { if (config is null) diff --git a/src/Arcus.Testing.Logging.MSTest/MSTestLogEventSink.cs b/src/Arcus.Testing.Logging.MSTest/MSTestLogEventSink.cs index 237e981b..d330f132 100644 --- a/src/Arcus.Testing.Logging.MSTest/MSTestLogEventSink.cs +++ b/src/Arcus.Testing.Logging.MSTest/MSTestLogEventSink.cs @@ -8,7 +8,9 @@ namespace Arcus.Testing /// /// representation of an instance. /// +#pragma warning disable S1133 [Obsolete("Arcus.Testing.Logging.MSTest will stop supporting Serilog by default, please implement Serilog sinks yourself as this sink will be removed in v2.0")] +#pragma warning restore public class MSTestLogEventSink : ILogEventSink { private readonly TestContext _context; diff --git a/src/Arcus.Testing.Logging.NUnit/Arcus.Testing.Logging.NUnit.csproj b/src/Arcus.Testing.Logging.NUnit/Arcus.Testing.Logging.NUnit.csproj index 4eab2db0..f752f41c 100644 --- a/src/Arcus.Testing.Logging.NUnit/Arcus.Testing.Logging.NUnit.csproj +++ b/src/Arcus.Testing.Logging.NUnit/Arcus.Testing.Logging.NUnit.csproj @@ -28,7 +28,8 @@ + - + diff --git a/src/Arcus.Testing.Logging.NUnit/Extensions/ILoggerBuilderExtensions.cs b/src/Arcus.Testing.Logging.NUnit/Extensions/ILoggerBuilderExtensions.cs index fad24066..068b91e1 100644 --- a/src/Arcus.Testing.Logging.NUnit/Extensions/ILoggerBuilderExtensions.cs +++ b/src/Arcus.Testing.Logging.NUnit/Extensions/ILoggerBuilderExtensions.cs @@ -23,7 +23,7 @@ public static ILoggingBuilder AddNUnitTestLogging(this ILoggingBuilder builder, ArgumentNullException.ThrowIfNull(outputWriter); var logger = new NUnitTestLogger(outputWriter); - var provider = new CustomLoggerProvider(logger); + var provider = new NUnitLoggerProvider(logger); return builder.AddProvider(provider); } @@ -41,9 +41,28 @@ public static ILoggingBuilder AddNUnitTestLogging(this ILoggingBuilder builder, ArgumentNullException.ThrowIfNull(outputWriter); var logger = new NUnitTestLogger(outputWriter, errorWriter); - var provider = new CustomLoggerProvider(logger); + var provider = new NUnitLoggerProvider(logger); return builder.AddProvider(provider); } + + private sealed class NUnitLoggerProvider : ILoggerProvider + { + private readonly NUnitTestLogger _logger; + + public NUnitLoggerProvider(NUnitTestLogger logger) + { + _logger = logger; + } + + public ILogger CreateLogger(string categoryName) + { + return _logger; + } + + public void Dispose() + { + } + } } } diff --git a/src/Arcus.Testing.Logging.Xunit/Arcus.Testing.Logging.Xunit.csproj b/src/Arcus.Testing.Logging.Xunit/Arcus.Testing.Logging.Xunit.csproj index 0cb62779..73c3fbbb 100644 --- a/src/Arcus.Testing.Logging.Xunit/Arcus.Testing.Logging.Xunit.csproj +++ b/src/Arcus.Testing.Logging.Xunit/Arcus.Testing.Logging.Xunit.csproj @@ -32,7 +32,8 @@ + - + diff --git a/src/Arcus.Testing.Logging.Xunit/Extensions/ILoggerBuilderExtensions.cs b/src/Arcus.Testing.Logging.Xunit/Extensions/ILoggerBuilderExtensions.cs index d1af75dc..390c984c 100644 --- a/src/Arcus.Testing.Logging.Xunit/Extensions/ILoggerBuilderExtensions.cs +++ b/src/Arcus.Testing.Logging.Xunit/Extensions/ILoggerBuilderExtensions.cs @@ -22,10 +22,27 @@ public static ILoggingBuilder AddXunitTestLogging(this ILoggingBuilder builder, ArgumentNullException.ThrowIfNull(builder); ArgumentNullException.ThrowIfNull(outputWriter); - var logger = new XunitTestLogger(outputWriter); - var provider = new CustomLoggerProvider(logger); - + var provider = new XunitLoggerProvider(outputWriter); return builder.AddProvider(provider); } + + private sealed class XunitLoggerProvider : ILoggerProvider + { + private readonly ILogger _logger; + + public XunitLoggerProvider(ITestOutputHelper outputWriter) + { + _logger = new XunitTestLogger(outputWriter); + } + + public ILogger CreateLogger(string categoryName) + { + return _logger; + } + + public void Dispose() + { + } + } } }