This is an automated email from the ASF dual-hosted git repository. freeandnil pushed a commit to branch Feature/shorten-console-output-for-unit-tests in repository https://gitbox.apache.org/repos/asf/logging-log4net.git
commit c839b8ef218d98d1f21d83d21a2493d53795b2cb Author: Jan Friedrich <[email protected]> AuthorDate: Mon Aug 25 16:45:47 2025 +0200 shorten console output for unit tests --- src/changelog/3.2.1/267-shorten-test-output.xml | 10 +++++++++ src/log4net.Tests/Util/LogLogTest.cs | 27 +++++++++++++++++++++---- src/log4net/Util/LogLog.cs | 21 ++++++++++++++++++- 3 files changed, 53 insertions(+), 5 deletions(-) diff --git a/src/changelog/3.2.1/267-shorten-test-output.xml b/src/changelog/3.2.1/267-shorten-test-output.xml new file mode 100644 index 00000000..549b7b1a --- /dev/null +++ b/src/changelog/3.2.1/267-shorten-test-output.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="https://logging.apache.org/xml/ns" + xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd" + type="fixed"> + <issue id="267" link="https://github.com/apache/logging-log4net/pull/267"/> + <description format="asciidoc"> + shorten console output for unit tests (by @FreeAndNil in https://github.com/apache/logging-log4net/pull/267[#267]) + </description> +</entry> \ No newline at end of file diff --git a/src/log4net.Tests/Util/LogLogTest.cs b/src/log4net.Tests/Util/LogLogTest.cs index 3cde0e3b..94acb385 100644 --- a/src/log4net.Tests/Util/LogLogTest.cs +++ b/src/log4net.Tests/Util/LogLogTest.cs @@ -32,6 +32,9 @@ namespace log4net.Tests.Util; [TestFixture] public class LogLogTest { + /// <summary> + /// Tests the <see cref="TraceListener"/> functionality + /// </summary> [Test] public void TraceListenerCounterTest() { @@ -46,6 +49,9 @@ public void TraceListenerCounterTest() Assert.That(listTraceListener.Count, Is.EqualTo(2)); } + /// <summary> + /// Tests the <see cref="LogLog.EmitInternalMessages"/> property + /// </summary> [Test] public void EmitInternalMessages() { @@ -71,6 +77,9 @@ public void EmitInternalMessages() } } + /// <summary> + /// Tests the <see cref="LogLog.LogReceivedAdapter"/> class. + /// </summary> [Test] public void LogReceivedAdapter() { @@ -90,10 +99,13 @@ public void LogReceivedAdapter() [Test] public void LogReceivedAdapterThreading() { - for (int i = 0; i < 1000; i++) + LogLog.ExecuteWithoutEmittingInternalMessages(() => { - LogReceivedAdapterThreadingCore(i); - } + for (int i = 0; i < 1000; i++) + { + LogReceivedAdapterThreadingCore(i); + } + }); } [System.Diagnostics.CodeAnalysis.SuppressMessage("Security", "CA5394:Do not use insecure randomness", @@ -119,13 +131,20 @@ private void LogReceivedAdapterThreadingCore(int seed) } } +/// <summary> +/// Mock for <see cref="TraceListener"/> that counts the number of calls to <see cref="Write(string?)"/> +/// </summary> internal sealed class TraceListenerCounter : TraceListener { + /// <inheritdoc/> public override void Write(string? message) => Count++; + /// <inheritdoc/> public override void WriteLine(string? message) => Write(message); + /// <inheritdoc/> public void Reset() => Count = 0; + /// <inheritdoc/> public int Count { get; private set; } -} +} \ No newline at end of file diff --git a/src/log4net/Util/LogLog.cs b/src/log4net/Util/LogLog.cs index f5f3c607..121bb4b3 100644 --- a/src/log4net/Util/LogLog.cs +++ b/src/log4net/Util/LogLog.cs @@ -223,10 +223,29 @@ static LogLog() public static bool QuietMode { get; set; } /// <summary> - /// + /// Configures whether internal messages are emitted to Console.Out and Console.Error. /// </summary> public static bool EmitInternalMessages { get; set; } = true; + /// <summary> + /// Execute the callback with internal messages suppressed + /// </summary> + /// <param name="callback">Callback</param> + public static void ExecuteWithoutEmittingInternalMessages(Action callback) + { + callback.EnsureNotNull(); + bool oldEmitInternalMessages = EmitInternalMessages; + EmitInternalMessages = false; + try + { + callback(); + } + finally + { + EmitInternalMessages = oldEmitInternalMessages; + } + } + /// <summary> /// Raises the LogReceived event when an internal messages is received. /// </summary>
