diff --git a/Src/CSharpier.Cli/ConsoleLogger.cs b/Src/CSharpier.Cli/ConsoleLogger.cs index 476b2f902..6872efe75 100644 --- a/Src/CSharpier.Cli/ConsoleLogger.cs +++ b/Src/CSharpier.Cli/ConsoleLogger.cs @@ -24,26 +24,12 @@ Func formatter void Write(string value) { - if (logLevel >= LogLevel.Error) - { - console.WriteError(value); - } - else - { - console.Write(value); - } + console.WriteError(value); } void WriteLine(string? value = null) { - if (logLevel >= LogLevel.Error) - { - console.WriteErrorLine(value); - } - else - { - console.WriteLine(value); - } + console.WriteErrorLine(value); } if (!this.IsEnabled(logLevel)) diff --git a/Src/CSharpier.Tests/CommandLineFormatterTests.cs b/Src/CSharpier.Tests/CommandLineFormatterTests.cs index 7e743832f..40dc79334 100644 --- a/Src/CSharpier.Tests/CommandLineFormatterTests.cs +++ b/Src/CSharpier.Tests/CommandLineFormatterTests.cs @@ -38,8 +38,9 @@ public async Task Format_Writes_Failed_To_Compile_As_Warning() var result = await Format(context, compilationErrorsAsWarnings: true); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.First() + .ErrorOutputLines.First() .Replace('\\', '/') .Should() .Be("Warning ./Invalid.cs - Failed to compile so was not formatted."); @@ -105,8 +106,9 @@ public async Task Format_Writes_Unsupported() var result = await Format(context, directoryOrFilePaths: "Unsupported.js"); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.First() + .ErrorOutputLines.First() .Replace('\\', '/') .Should() .Be("Warning ./Unsupported.js - Is an unsupported file type."); @@ -134,7 +136,8 @@ public async Task Format_Does_Not_Write_Unsupported_When_Formatting_Directory() var result = await Format(context); - result.OutputLines.First().Should().StartWith("Formatted 0 files"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 0 files"); } [Test] @@ -166,7 +169,8 @@ public static void Run() ); var result = await Format(context); - result.OutputLines.First().Should().StartWith("Formatted 1 files"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 1 files"); context .GetFileContent(unformattedFilePath) @@ -197,7 +201,8 @@ public async Task Formats_Overrides_File() ); var result = await Format(context); - result.OutputLines.First().Should().StartWith("Formatted 1 files"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 1 files"); context.GetFileContent(unformattedFilePath).Should().Be(FormattedClassContent); } @@ -228,7 +233,8 @@ public async Task Works_With_MSBuild_Version_Checking(string version, bool shoul if (shouldPass) { result.ExitCode.Should().Be(0); - result.ErrorOutputLines.Should().BeEmpty(); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.Should().NotContain("Test.csproj uses version"); } else { @@ -260,8 +266,9 @@ public async Task Works_With_MSBuild_Version_Checking_When_No_Version_Specified( var result = await Format(context); result.ExitCode.Should().Be(0); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.First() + .ErrorOutputLines.First() .Should() .EndWith($"Test.csproj uses an unknown version of CSharpier.MsBuild"); } @@ -305,11 +312,13 @@ bool shouldPass if (shouldPass) { result.ExitCode.Should().Be(0); - result.ErrorOutputLines.Should().BeEmpty(); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.Should().NotContain("Test.csproj uses version"); } else { result.ExitCode.Should().Be(1); + result.OutputLines.Should().BeEmpty(); result .ErrorOutputLines.First() .Should() @@ -337,7 +346,7 @@ public async Task Works_With_MSBuild_Version_Checking_When_No_Version_Included() var result = await Format(context); result.ExitCode.Should().Be(0); - result.ErrorOutputLines.Should().BeEmpty(); + result.OutputLines.Should().BeEmpty(); } [Test] @@ -442,7 +451,8 @@ public async Task Format_Skips_Generated_Files(string fileName) var result = await Format(context); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -459,7 +469,8 @@ public async Task Format_Formats_Generated_Files_When_Include_Generated(string f var result = await Format(context, includeGenerated: true); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); } [Test] @@ -521,7 +532,8 @@ public async Task File_In_Ignore_Skips_Formatting(string fileName, string ignore var result = await Format(context); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -543,7 +555,8 @@ string baseDirectory directoryOrFilePaths: Path.Combine(GetRootPath(), baseDirectory) ); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -561,7 +574,8 @@ public async Task Multiple_Files_Should_Use_Root_Ignore() directoryOrFilePaths: [unformattedFilePath1, unformattedFilePath2] ); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -584,7 +598,8 @@ public async Task Multiple_Files_Should_Use_Multiple_Ignores() directoryOrFilePaths: [unformattedFilePath1, unformattedFilePath2] ); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -597,7 +612,8 @@ public async Task Ignore_Should_Deal_With_Period() var result = await Format(context, directoryOrFilePaths: "Directory.WithPeriod"); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -611,7 +627,8 @@ public async Task Ignore_Should_Deal_With_Inconsistent_Slashes() var result = await Format(context, directoryOrFilePaths: unformattedFilePath1); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -632,8 +649,9 @@ bool isIgnored var result = await Format(context); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.FirstOrDefault() + .ErrorOutputLines.FirstOrDefault() .Should() .StartWith(isIgnored ? "Formatted 0 files in " : "Formatted 1 files in "); } @@ -656,8 +674,9 @@ bool isIgnored var result = await Format(context); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.FirstOrDefault() + .ErrorOutputLines.FirstOrDefault() .Should() .StartWith(isIgnored ? "Formatted 0 files in " : "Formatted 1 files in "); } @@ -680,8 +699,9 @@ bool isIgnored var result = await Format(context); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.FirstOrDefault() + .ErrorOutputLines.FirstOrDefault() .Should() .StartWith(isIgnored ? "Formatted 0 files in " : "Formatted 1 files in "); } @@ -702,7 +722,8 @@ public async Task Gitignore_Evaluates_Negation_Patterns_Last() var result = await Format(context); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 0 files in "); } [Test] @@ -715,7 +736,8 @@ public async Task Gitignore_Outside_Git_Is_Not_Used() var result = await Format(context, directoryOrFilePaths: "Sub"); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); } [Test] @@ -737,7 +759,8 @@ public async Task Gitignore_Can_Unignore_All_Directories() var result = await Format(context); - result.OutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.FirstOrDefault().Should().StartWith("Formatted 1 files in "); } [Test] @@ -871,8 +894,8 @@ string contents .GetFileContent("file1.cs") .Should() .Be(contents.Replace("static public", "public static")); - result.ErrorOutputLines.Should().BeEmpty(); - result.OutputLines.First().Should().StartWith("Formatted 1 files in"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 1 files in"); } [Test] @@ -899,8 +922,8 @@ public class ClassName { var result = await Format(context); - result.ErrorOutputLines.Should().BeEmpty(); - result.OutputLines.First().Should().StartWith("Formatted 1 files in"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 1 files in"); } [Test] @@ -919,8 +942,8 @@ public async Task File_With_Added_Trailing_Comma_Before_Comment_Should_Pass_Vali var result = await Format(context); - result.ErrorOutputLines.Should().BeEmpty(); - result.OutputLines.First().Should().StartWith("Formatted 1 files in"); + result.OutputLines.Should().BeEmpty(); + result.ErrorOutputLines.First().Should().StartWith("Formatted 1 files in"); } [Test] @@ -935,8 +958,9 @@ public async Task Empty_Config_Files_Should_Log_Warning(string configFileName) var result = await Format(context); + result.OutputLines.Should().BeEmpty(); result - .OutputLines.First() + .ErrorOutputLines.First() .Should() .Be($"Warning The configuration file at {configPath} was empty."); } diff --git a/Src/CSharpierProcess.Tests/CliTests.cs b/Src/CSharpierProcess.Tests/CliTests.cs index d5c2cfc59..b8469324e 100644 --- a/Src/CSharpierProcess.Tests/CliTests.cs +++ b/Src/CSharpierProcess.Tests/CliTests.cs @@ -69,8 +69,8 @@ public async Task Format_Should_Format_Basic_File(string lineEnding) .WithArguments("format BasicFile.cs") .ExecuteAsync(); - result.ErrorOutput.Should().BeNullOrEmpty(); - result.Output.Should().StartWith("Formatted 1 files in "); + result.Output.Should().BeNullOrEmpty(); + result.ErrorOutput.Should().StartWith("Formatted 1 files in "); result.ExitCode.Should().Be(0); (await ReadAllTextAsync("BasicFile.cs")).Should().Be(formattedContent); } @@ -89,7 +89,7 @@ public async Task Format_Should_Format_Subdirectory(string subdirectory) .WithArguments($"format {subdirectory}") .ExecuteAsync(); - result.Output.Should().StartWith("Formatted 1 files in "); + result.ErrorOutput.Should().StartWith("Formatted 1 files in "); result.ExitCode.Should().Be(0); (await ReadAllTextAsync("Subdirectory/BasicFile.cs")).Should().Be(formattedContent); } @@ -514,7 +514,7 @@ public async Task Check_Should_Write_Warning_With_Unformatted_File() .ExecuteAsync(); result - .Output.Replace('\\', '/') + .ErrorOutput.Replace('\\', '/') .Should() .StartWith("Warning ./CheckUnformatted.cs - Was not formatted."); result.ExitCode.Should().Be(0); @@ -632,8 +632,8 @@ public async Task Format_Should_Not_Fail_On_Empty_File() var result = await new CsharpierProcess().WithArguments("format .").ExecuteAsync(); - result.Output.Should().StartWith("Formatted 0 files in "); - result.ErrorOutput.Should().BeEmpty(); + result.ErrorOutput.Should().StartWith("Formatted 0 files in "); + result.Output.Should().BeEmpty(); result.ExitCode.Should().Be(0); } @@ -644,9 +644,9 @@ public async Task Format_Should_Not_Fail_On_Bad_Csproj() var result = await new CsharpierProcess().WithArguments("format .").ExecuteAsync(); - result.ErrorOutput.Should().BeEmpty(); + result.Output.Should().BeEmpty(); result.ExitCode.Should().Be(0); - result.Output.Should().StartWith("Warning The csproj at "); + result.ErrorOutput.Should().StartWith("Warning The csproj at "); } private const string CsprojContentWithCSharpierMsBuild99 = """ @@ -667,9 +667,9 @@ public async Task Format_Should_Not_Fail_On_Mismatched_MSBuild_With_No_Check() .WithArguments("format --no-msbuild-check .") .ExecuteAsync(); - result.ErrorOutput.Should().BeEmpty(); + result.Output.Should().BeEmpty(); result.ExitCode.Should().Be(0); - result.Output.Should().StartWith("Formatted 1 files in "); + result.ErrorOutput.Should().StartWith("Formatted 1 files in "); } [Test] @@ -681,9 +681,9 @@ public async Task Check_Should_Not_Fail_On_Mismatched_MSBuild_With_No_Check() .WithArguments("check --no-msbuild-check .") .ExecuteAsync(); - result.ErrorOutput.Should().BeEmpty(); + result.Output.Should().BeEmpty(); result.ExitCode.Should().Be(0); - result.Output.Should().StartWith("Checked 1 files in "); + result.ErrorOutput.Should().StartWith("Checked 1 files in "); } [Test] @@ -804,7 +804,7 @@ async Task FormatFolder(string folder) var result = await new CsharpierProcess() .WithArguments($"format {folder}") .ExecuteAsync(); - result.ErrorOutput.Should().BeEmpty(); + result.Output.Should().BeEmpty(); } var formatTasks = folders.Select(FormatFolder).ToArray(); diff --git a/Src/CSharpierProcess.Tests/ServerTests.cs b/Src/CSharpierProcess.Tests/ServerTests.cs index adf3eeead..451764381 100644 --- a/Src/CSharpierProcess.Tests/ServerTests.cs +++ b/Src/CSharpierProcess.Tests/ServerTests.cs @@ -71,7 +71,7 @@ private static async Task RunServer( { process.Start(); - var portString = (await process.StandardOutput.ReadLineAsync() ?? string.Empty).Replace( + var portString = (await process.StandardError.ReadLineAsync() ?? string.Empty).Replace( "Started on ", string.Empty );