diff --git a/src/Cake.Core.Tests/Unit/Diagnostics/CakeBuildLogTests.cs b/src/Cake.Core.Tests/Unit/Diagnostics/CakeBuildLogTests.cs index 90704ded20..e783430e90 100644 --- a/src/Cake.Core.Tests/Unit/Diagnostics/CakeBuildLogTests.cs +++ b/src/Cake.Core.Tests/Unit/Diagnostics/CakeBuildLogTests.cs @@ -98,7 +98,7 @@ public void Should_Not_Colorize_A_Log_Message_Containg_A_Single_Token() // Then Assert.Single(console.Messages); - Assert.Equal("Hello World", console.Messages[0]); + Assert.Equal("\u001b[37;1mHello World\u001b[0m", console.Messages[0]); } [Theory] diff --git a/src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs b/src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs index 1383f6448f..45ec72e259 100644 --- a/src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs +++ b/src/Cake.Core/Diagnostics/Console/AnsiConsoleRenderer.cs @@ -68,37 +68,25 @@ public AnsiConsoleRenderer(IConsole console) public void Render(LogLevel level, string format, params object[] args) { var palette = _palette[level]; - var tokens = FormatParser.Parse(format); - - var colorize = !"{0}".Equals(format, StringComparison.Ordinal); + var (tokens, tokenArgs) = "{0}".Equals(format, StringComparison.Ordinal) + ? ([ + new LiteralToken(string.Format(format, args)) + ], + []) + : (FormatParser.Parse(format), args); foreach (var token in tokens) { - if (colorize) - { - var colorEscapeCode = GetColorEscapeCode(token, palette); - var content = token.Render(args); + var colorEscapeCode = GetColorEscapeCode(token, palette); + var content = token.Render(tokenArgs); - if (level > LogLevel.Error) - { - _console.Write("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}"); - } - else - { - _console.WriteError("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}"); - } + if (level > LogLevel.Error) + { + _console.Write("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}"); } else { - // Render without colorization. - if (level > LogLevel.Error) - { - _console.Write("{0}", token.Render(args)); - } - else - { - _console.WriteError("{0}", token.Render(args)); - } + _console.WriteError("{0}", $"{colorEscapeCode}{content}{ResetEscapeCode}"); } }