Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 2 additions & 16 deletions Src/CSharpier.Cli/ConsoleLogger.cs
Original file line number Diff line number Diff line change
Expand Up @@ -24,26 +24,12 @@ Func<TState, Exception, string> 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))
Expand Down
84 changes: 54 additions & 30 deletions Src/CSharpier.Tests/CommandLineFormatterTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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.");
Expand Down Expand Up @@ -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.");
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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);
}
Expand Down Expand Up @@ -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
{
Expand Down Expand Up @@ -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");
}
Expand Down Expand Up @@ -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()
Expand Down Expand Up @@ -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]
Expand Down Expand Up @@ -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]
Expand All @@ -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]
Expand Down Expand Up @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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 ");
}
Expand All @@ -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 ");
}
Expand All @@ -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 ");
}
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand Down Expand Up @@ -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]
Expand All @@ -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]
Expand All @@ -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]
Expand All @@ -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.");
}
Expand Down
26 changes: 13 additions & 13 deletions Src/CSharpierProcess.Tests/CliTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand All @@ -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);
}
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
}

Expand All @@ -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 = """
Expand All @@ -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]
Expand All @@ -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]
Expand Down Expand Up @@ -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();
Expand Down
Loading
Loading