diff --git a/src/Build.UnitTests/ConsoleLogger_Tests.cs b/src/Build.UnitTests/ConsoleLogger_Tests.cs index c1fdc67f6a5..67cce196758 100644 --- a/src/Build.UnitTests/ConsoleLogger_Tests.cs +++ b/src/Build.UnitTests/ConsoleLogger_Tests.cs @@ -18,7 +18,6 @@ using Shouldly; using Xunit; using Xunit.Abstractions; -using Xunit.NetCore.Extensions; using TaskItem = Microsoft.Build.Execution.ProjectItemInstance.TaskItem; #nullable disable @@ -134,7 +133,6 @@ public ConsoleLoggerTest(ITestOutputHelper output) _output = output; } - /// /// Verify when the project has not been named that we correctly get the same placeholder /// project name for project started event and the target started event. diff --git a/src/Build.UnitTests/Microsoft.Build.Engine.UnitTests.csproj b/src/Build.UnitTests/Microsoft.Build.Engine.UnitTests.csproj index c49cd75150a..7653366ce4c 100644 --- a/src/Build.UnitTests/Microsoft.Build.Engine.UnitTests.csproj +++ b/src/Build.UnitTests/Microsoft.Build.Engine.UnitTests.csproj @@ -22,6 +22,7 @@ + all diff --git a/src/MSBuild.UnitTests/MockStopwatch.cs b/src/Build.UnitTests/MockStopwatch.cs similarity index 93% rename from src/MSBuild.UnitTests/MockStopwatch.cs rename to src/Build.UnitTests/MockStopwatch.cs index 8c65821140f..7be35cfe520 100644 --- a/src/MSBuild.UnitTests/MockStopwatch.cs +++ b/src/Build.UnitTests/MockStopwatch.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Logging; namespace Microsoft.Build.CommandLine.UnitTests; diff --git a/src/MSBuild.UnitTests/NodeStatus_SizeChange_Tests.cs b/src/Build.UnitTests/NodeStatus_SizeChange_Tests.cs similarity index 75% rename from src/MSBuild.UnitTests/NodeStatus_SizeChange_Tests.cs rename to src/Build.UnitTests/NodeStatus_SizeChange_Tests.cs index cdb004687af..458eb4edb27 100644 --- a/src/MSBuild.UnitTests/NodeStatus_SizeChange_Tests.cs +++ b/src/Build.UnitTests/NodeStatus_SizeChange_Tests.cs @@ -8,7 +8,7 @@ using System.Text; using System.Threading.Tasks; -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Logging; using VerifyTests; using VerifyXunit; @@ -22,7 +22,7 @@ namespace Microsoft.Build.CommandLine.UnitTests; [UsesVerify] public class NodeStatus_SizeChange_Tests : IDisposable { - private readonly NodeStatus _status = new("Namespace.Project", "TargetFramework", "Target", new MockStopwatch()); + private readonly TerminalNodeStatus _status = new("Namespace.Project", "TargetFramework", "Target", new MockStopwatch()); private CultureInfo _currentCulture; public NodeStatus_SizeChange_Tests() @@ -36,7 +36,7 @@ public NodeStatus_SizeChange_Tests() [Fact] public async Task EverythingFits() { - NodesFrame frame = new([_status], width: 80, height: 5); + TerminalNodesFrame frame = new([_status], width: 80, height: 5); await Verify(frame.RenderNodeStatus(0).ToString()); } @@ -44,7 +44,7 @@ public async Task EverythingFits() [Fact] public async Task TargetIsTruncatedFirst() { - NodesFrame frame = new([_status], width: 45, height: 5); + TerminalNodesFrame frame = new([_status], width: 45, height: 5); await Verify(frame.RenderNodeStatus(0).ToString()); } @@ -52,7 +52,7 @@ public async Task TargetIsTruncatedFirst() [Fact] public async Task NamespaceIsTruncatedNext() { - NodesFrame frame = new([_status], width: 40, height: 5); + TerminalNodesFrame frame = new([_status], width: 40, height: 5); await Verify(frame.RenderNodeStatus(0).ToString()); } @@ -60,7 +60,7 @@ public async Task NamespaceIsTruncatedNext() [Fact] public async Task GoesToProject() { - NodesFrame frame = new([_status], width: 10, height: 5); + TerminalNodesFrame frame = new([_status], width: 10, height: 5); await Verify(frame.RenderNodeStatus(0).ToString()); } diff --git a/src/MSBuild.UnitTests/NodeStatus_Transition_Tests.cs b/src/Build.UnitTests/NodeStatus_Transition_Tests.cs similarity index 87% rename from src/MSBuild.UnitTests/NodeStatus_Transition_Tests.cs rename to src/Build.UnitTests/NodeStatus_Transition_Tests.cs index 1d1dacae7f0..d811c2e4988 100644 --- a/src/MSBuild.UnitTests/NodeStatus_Transition_Tests.cs +++ b/src/Build.UnitTests/NodeStatus_Transition_Tests.cs @@ -8,8 +8,8 @@ using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; - -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Framework.Logging; +using Microsoft.Build.Logging; using Shouldly; using VerifyTests; using VerifyXunit; @@ -33,7 +33,7 @@ public void NodeStatusTargetThrowsForInputWithAnsi() { #if DEBUG // This is testing a Debug.Assert, which won't throw in Release mode. - Func newNodeStatus = () => new NodeStatus("project", "tfm", AnsiCodes.Colorize("colorized target", TerminalColor.Green), new MockStopwatch()); + Func newNodeStatus = () => new TerminalNodeStatus("project", "tfm", AnsiCodes.Colorize("colorized target", TerminalColor.Green), new MockStopwatch()); newNodeStatus.ShouldThrow().Message.ShouldContain("Target should not contain any escape codes, if you want to colorize target use the other constructor."); #endif } @@ -58,7 +58,7 @@ public async Task NodeTargetUpdatesTime() // This test look like there is no change between the frames, but we ask the stopwatch for time they will increase the number. // We need this because animations check that NodeStatus reference is the same. // And we cannot use MockStopwatch because we don't know when to call Tick on them, and if we do it right away, the time will update in "both" nodes. - NodeStatus node = new("Namespace.Project", "TargetFramework", "Build", new TickingStopwatch()); + TerminalNodeStatus node = new("Namespace.Project", "TargetFramework", "Build", new TickingStopwatch()); var rendered = Animate( [ node, @@ -90,7 +90,7 @@ public async Task NodeWithColoredTargetUpdatesTime() // This test look like there is no change between the frames, but we ask the stopwatch for time they will increase the number. // We need this because animations check that NodeStatus reference is the same. // And we cannot use MockStopwatch because we don't know when to call Tick on them, and if we do it right away, the time will update in "both" nodes. - NodeStatus node = new("Namespace.Project", "TargetFramework", TerminalColor.Green, "passed", "MyTestName1", new TickingStopwatch()); + TerminalNodeStatus node = new("Namespace.Project", "TargetFramework", TerminalColor.Green, "passed", "MyTestName1", new TickingStopwatch()); var rendered = Animate( [ node, @@ -107,16 +107,16 @@ public async Task NodeWithColoredTargetUpdatesTime() /// /// Takes array of arrays. The inner array is collection of nodes that are currently running. The outer array is how they update over time. /// - private string Animate(params NodeStatus[][] nodeStatusesUpdates) + private string Animate(params TerminalNodeStatus[][] nodeStatusesUpdates) { var width = 80; var height = 1; - NodesFrame previousFrame = new(Array.Empty(), 0, 0); + TerminalNodesFrame previousFrame = new(Array.Empty(), 0, 0); StringBuilder result = new StringBuilder(); foreach (var nodeStatuses in nodeStatusesUpdates) { - NodesFrame currentFrame = new NodesFrame(nodeStatuses, width, height); + TerminalNodesFrame currentFrame = new TerminalNodesFrame(nodeStatuses, width, height); result.Append(currentFrame.Render(previousFrame)); previousFrame = currentFrame; } diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.EverythingFits.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.EverythingFits.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.EverythingFits.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.EverythingFits.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.GoesToProject.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.GoesToProject.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.GoesToProject.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.GoesToProject.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.NamespaceIsTruncatedNext.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.NamespaceIsTruncatedNext.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.NamespaceIsTruncatedNext.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.NamespaceIsTruncatedNext.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.TargetIsTruncatedFirst.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.TargetIsTruncatedFirst.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.TargetIsTruncatedFirst.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_SizeChange_Tests.TargetIsTruncatedFirst.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChanges.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChanges.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChanges.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChanges.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChangesToColoredTarget.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChangesToColoredTarget.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChangesToColoredTarget.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetChangesToColoredTarget.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetUpdatesTime.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetUpdatesTime.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetUpdatesTime.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeTargetUpdatesTime.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeWithColoredTargetUpdatesTime.verified.txt b/src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeWithColoredTargetUpdatesTime.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeWithColoredTargetUpdatesTime.verified.txt rename to src/Build.UnitTests/Snapshots/NodeStatus_Transition_Tests.NodeWithColoredTargetUpdatesTime.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesTime.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesOverwritesWithNewTargetFramework.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.DisplayNodesShowsCurrent.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDetailedVerbosity_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryDiagnosticVerbosity_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryMinimalVerbosity_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryNormalVerbosity_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.OSX.verified.txt similarity index 63% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.OSX.verified.txt index 6e417bd1a11..63b3c74b0c3 100644 --- a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Linux.verified.txt +++ b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.OSX.verified.txt @@ -1,8 +1,7 @@ -]9;4;3;\directory/file(1,2,3,4): warning AA0000: Warning! +directory/file(1,2,3,4): warning AA0000: Warning! directory/file(1,2,3,4): warning AA0000: A Multi Line Warning! directory/file(1,2,3,4): error AA0000: Error! -]9;4;0;\ \ No newline at end of file diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt similarity index 63% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt index 6e417bd1a11..63b3c74b0c3 100644 --- a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt +++ b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummaryQuietVerbosity_FailedWithErrors.Windows.verified.txt @@ -1,8 +1,7 @@ -]9;4;3;\directory/file(1,2,3,4): warning AA0000: Warning! +directory/file(1,2,3,4): warning AA0000: Warning! directory/file(1,2,3,4): warning AA0000: A Multi Line Warning! directory/file(1,2,3,4): error AA0000: Error! -]9;4;0;\ \ No newline at end of file diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_2Projects_FailedWithErrorsAndWarnings.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_Failed.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_FailedWithErrorsAndWarnings.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintBuildSummary_SucceededWithWarnings.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintCopyTaskRetryWarningAsImmediateMessage_Failed.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintDetailedBuildSummary_FailedWithErrorAndWarning.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Skipped.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateMessage_Success.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintImmediateWarningMessage_Succeeded.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintProjectOutputDirectoryLink.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_Failed.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintRestore_SuccessWithWarnings.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithOverwrittenVerbosity_FailedWithErrors.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithTaskCommandLineEventArgs_Succeeded.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintSummaryWithoutTaskCommandLineEventArgs_Succeeded.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryNormalVerbosity_Succeeded.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.Linux.verified.txt diff --git a/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.OSX.verified.txt new file mode 100644 index 00000000000..c1b8d743e34 --- /dev/null +++ b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.OSX.verified.txt @@ -0,0 +1 @@ +emptyString \ No newline at end of file diff --git a/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.Windows.verified.txt new file mode 100644 index 00000000000..c1b8d743e34 --- /dev/null +++ b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintTestSummaryQuietVerbosity_Succeeded.Windows.verified.txt @@ -0,0 +1 @@ +emptyString \ No newline at end of file diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Linux.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Linux.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Linux.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Linux.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.OSX.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.OSX.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.OSX.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.OSX.verified.txt diff --git a/src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Windows.verified.txt b/src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Windows.verified.txt similarity index 100% rename from src/MSBuild.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Windows.verified.txt rename to src/Build.UnitTests/Snapshots/TerminalLogger_Tests.PrintsBuildSummary_Succeeded.Windows.verified.txt diff --git a/src/MSBuild.UnitTests/StaticStopwatch.cs b/src/Build.UnitTests/StaticStopwatch.cs similarity index 93% rename from src/MSBuild.UnitTests/StaticStopwatch.cs rename to src/Build.UnitTests/StaticStopwatch.cs index c1afad3179c..63d1bf7bcbd 100644 --- a/src/MSBuild.UnitTests/StaticStopwatch.cs +++ b/src/Build.UnitTests/StaticStopwatch.cs @@ -2,7 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using System.Net.Http.Headers; -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Logging; namespace Microsoft.Build.CommandLine.UnitTests; diff --git a/src/MSBuild.UnitTests/TerminalLogger_Tests.cs b/src/Build.UnitTests/TerminalLogger_Tests.cs similarity index 94% rename from src/MSBuild.UnitTests/TerminalLogger_Tests.cs rename to src/Build.UnitTests/TerminalLogger_Tests.cs index a97f2c683cc..2c04241a604 100644 --- a/src/MSBuild.UnitTests/TerminalLogger_Tests.cs +++ b/src/Build.UnitTests/TerminalLogger_Tests.cs @@ -15,7 +15,6 @@ using Microsoft.Build.Evaluation; using Microsoft.Build.Framework; using Microsoft.Build.Logging; -using Microsoft.Build.Logging.TerminalLogger; using Microsoft.Build.UnitTests.Shared; using Shouldly; using VerifyTests; @@ -70,6 +69,42 @@ public TerminalLogger_Tests() Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture; } + [Theory] + [InlineData(null, false, false, "", typeof(ConsoleLogger))] + [InlineData(null, true, false, "", typeof(ConsoleLogger))] + [InlineData(null, false, true, "", typeof(ConsoleLogger))] + [InlineData(null, true, true, "off", typeof(ConsoleLogger))] + [InlineData(null, true, true, "false", typeof(ConsoleLogger))] + [InlineData("--tl:off", true, true, "", typeof(ConsoleLogger))] + [InlineData(null, true, true, "", typeof(TerminalLogger))] + [InlineData("-tl:on", true, true, "off", typeof(TerminalLogger))] + public void CreateTerminalOrConsoleLogger_CreatesCorrectLoggerInstance(string? argsString, bool supportsAnsi, bool outputIsScreen, string evnVariableValue, Type expectedType) + { + using TestEnvironment testEnvironment = TestEnvironment.Create(); + testEnvironment.SetEnvironmentVariable("MSBUILDTERMINALLOGGER", evnVariableValue); + + string[]? args = argsString?.Split(' '); + ILogger logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, default); + + logger.ShouldNotBeNull(); + logger.GetType().ShouldBe(expectedType); + } + + [Theory] + [InlineData("-v:q", LoggerVerbosity.Quiet)] + [InlineData("-verbosity:minimal", LoggerVerbosity.Minimal)] + [InlineData("--v:d", LoggerVerbosity.Detailed)] + [InlineData("/verbosity:diag", LoggerVerbosity.Diagnostic)] + [InlineData(null, LoggerVerbosity.Normal)] + public void CreateTerminalOrConsoleLogger_ParsesVerbosity(string? argsString, LoggerVerbosity expectedVerbosity) + { + string[]? args = argsString?.Split(' '); + ILogger logger = TerminalLogger.CreateTerminalOrConsoleLogger(args, true, true, default); + + logger.ShouldNotBeNull(); + logger.Verbosity.ShouldBe(expectedVerbosity); + } + #region IEventSource implementation #pragma warning disable CS0067 diff --git a/src/MSBuild.UnitTests/TickingStopwatch.cs b/src/Build.UnitTests/TickingStopwatch.cs similarity index 95% rename from src/MSBuild.UnitTests/TickingStopwatch.cs rename to src/Build.UnitTests/TickingStopwatch.cs index e0cd213ebeb..8342a7ec005 100644 --- a/src/MSBuild.UnitTests/TickingStopwatch.cs +++ b/src/Build.UnitTests/TickingStopwatch.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Logging; namespace Microsoft.Build.CommandLine.UnitTests; diff --git a/src/Build/Logging/ConsoleLogger.cs b/src/Build/Logging/ConsoleLogger.cs index 41bfaf94f50..dc365d45387 100644 --- a/src/Build/Logging/ConsoleLogger.cs +++ b/src/Build/Logging/ConsoleLogger.cs @@ -2,6 +2,10 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using System.Diagnostics.CodeAnalysis; +using System.Linq; +using System.Reflection; +using System.Runtime.CompilerServices; using Microsoft.Build.BackEnd.Logging; using Microsoft.Build.Framework; using Microsoft.Build.Framework.Logging; diff --git a/src/Build/Logging/SimpleErrorLogger.cs b/src/Build/Logging/SimpleErrorLogger.cs index 02d14829a9d..5b248afd5e7 100644 --- a/src/Build/Logging/SimpleErrorLogger.cs +++ b/src/Build/Logging/SimpleErrorLogger.cs @@ -3,7 +3,8 @@ using System; using Microsoft.Build.Framework; -using Microsoft.Build.Logging.TerminalLogger; +using Microsoft.Build.Framework.Logging; +using Microsoft.Build.Logging; using Microsoft.Build.Shared; namespace Microsoft.Build.Logging.SimpleErrorLogger diff --git a/src/MSBuild/TerminalLogger/ITerminal.cs b/src/Build/Logging/TerminalLogger/ITerminal.cs similarity index 96% rename from src/MSBuild/TerminalLogger/ITerminal.cs rename to src/Build/Logging/TerminalLogger/ITerminal.cs index 04a6dd8039f..bfb9cf0990f 100644 --- a/src/MSBuild/TerminalLogger/ITerminal.cs +++ b/src/Build/Logging/TerminalLogger/ITerminal.cs @@ -2,8 +2,9 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; +using Microsoft.Build.Framework.Logging; -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// An abstraction of a terminal, built specifically to fit the needs. diff --git a/src/MSBuild/TerminalLogger/StopwatchAbstraction.cs b/src/Build/Logging/TerminalLogger/StopwatchAbstraction.cs similarity index 86% rename from src/MSBuild/TerminalLogger/StopwatchAbstraction.cs rename to src/Build/Logging/TerminalLogger/StopwatchAbstraction.cs index 8b365517a6a..c4f72f630de 100644 --- a/src/MSBuild/TerminalLogger/StopwatchAbstraction.cs +++ b/src/Build/Logging/TerminalLogger/StopwatchAbstraction.cs @@ -1,7 +1,7 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; internal abstract class StopwatchAbstraction { diff --git a/src/MSBuild/TerminalLogger/SystemStopwatch.cs b/src/Build/Logging/TerminalLogger/SystemStopwatch.cs similarity index 92% rename from src/MSBuild/TerminalLogger/SystemStopwatch.cs rename to src/Build/Logging/TerminalLogger/SystemStopwatch.cs index f554e53ede6..90532b31e3f 100644 --- a/src/MSBuild/TerminalLogger/SystemStopwatch.cs +++ b/src/Build/Logging/TerminalLogger/SystemStopwatch.cs @@ -3,7 +3,7 @@ using System.Diagnostics; -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; internal sealed class SystemStopwatch : StopwatchAbstraction { diff --git a/src/MSBuild/TerminalLogger/Terminal.cs b/src/Build/Logging/TerminalLogger/Terminal.cs similarity index 98% rename from src/MSBuild/TerminalLogger/Terminal.cs rename to src/Build/Logging/TerminalLogger/Terminal.cs index 16651d85fb9..01a3065cd93 100644 --- a/src/MSBuild/TerminalLogger/Terminal.cs +++ b/src/Build/Logging/TerminalLogger/Terminal.cs @@ -5,11 +5,12 @@ using System.IO; using System.Runtime.InteropServices; using System.Text; +using Microsoft.Build.Framework.Logging; #if NETFRAMEWORK using Microsoft.Build.Shared; #endif -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// An implementation for ANSI/VT100 terminals. diff --git a/src/MSBuild/TerminalLogger/BuildMessage.cs b/src/Build/Logging/TerminalLogger/TerminalBuildMessage.cs similarity index 65% rename from src/MSBuild/TerminalLogger/BuildMessage.cs rename to src/Build/Logging/TerminalLogger/TerminalBuildMessage.cs index a204690d041..8e90b6f85e2 100644 --- a/src/MSBuild/TerminalLogger/BuildMessage.cs +++ b/src/Build/Logging/TerminalLogger/TerminalBuildMessage.cs @@ -1,10 +1,10 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// Represents a piece of diagnostic output (message/warning/error). /// -internal record struct BuildMessage(MessageSeverity Severity, string Message) +internal record struct TerminalBuildMessage(TerminalMessageSeverity Severity, string Message) { } diff --git a/src/MSBuild/TerminalLogger/TerminalLogger.cs b/src/Build/Logging/TerminalLogger/TerminalLogger.cs similarity index 88% rename from src/MSBuild/TerminalLogger/TerminalLogger.cs rename to src/Build/Logging/TerminalLogger/TerminalLogger.cs index d4dc4346cf9..33696ada520 100644 --- a/src/MSBuild/TerminalLogger/TerminalLogger.cs +++ b/src/Build/Logging/TerminalLogger/TerminalLogger.cs @@ -3,26 +3,26 @@ using System; using System.Collections.Generic; +using System.Globalization; using System.Linq; using System.Text; +using System.Text.RegularExpressions; using System.Threading; using Microsoft.Build.Framework; -using Microsoft.Build.Shared; -using System.Text.RegularExpressions; -using System.Diagnostics; using Microsoft.Build.Framework.Logging; -using System.Globalization; +using Microsoft.Build.Shared; #if NET7_0_OR_GREATER using System.Diagnostics.CodeAnalysis; #endif + #if NETFRAMEWORK using Microsoft.IO; #else using System.IO; #endif -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// A logger which updates the console output "live" during the build. @@ -30,7 +30,7 @@ namespace Microsoft.Build.Logging.TerminalLogger; /// /// Uses ANSI/VT100 control codes to erase and overwrite lines as the build is progressing. /// -internal sealed partial class TerminalLogger : INodeLogger +public sealed partial class TerminalLogger : INodeLogger { private const string FilePathPattern = " -> "; @@ -57,6 +57,8 @@ public ProjectContext(BuildEventContext context) { } } + private readonly record struct TestSummary(int Total, int Passed, int Skipped, int Failed); + /// /// The indentation to use for all build output. /// @@ -91,7 +93,7 @@ public ProjectContext(BuildEventContext context) /// /// Keyed by an ID that gets passed to logger callbacks, this allows us to quickly look up the corresponding project. /// - private readonly Dictionary _projects = new(); + private readonly Dictionary _projects = new(); /// /// Tracks the work currently being done by build nodes. Null means the node is not doing any work worth reporting. @@ -100,7 +102,7 @@ public ProjectContext(BuildEventContext context) /// There is no locking around access to this data structure despite it being accessed concurrently by multiple threads. /// However, reads and writes to locations in an array is atomic, so locking is not required. /// - private NodeStatus?[] _nodes = Array.Empty(); + private TerminalNodeStatus?[] _nodes = Array.Empty(); /// /// The timestamp of the event. @@ -146,7 +148,7 @@ public ProjectContext(BuildEventContext context) /// /// What is currently displaying in Nodes section as strings representing per-node console output. /// - private NodesFrame _currentFrame = new(Array.Empty(), 0, 0); + private TerminalNodesFrame _currentFrame = new(Array.Empty(), 0, 0); /// /// The to write console output to. @@ -163,29 +165,6 @@ public ProjectContext(BuildEventContext context) /// private bool _loggedPreviewMessage; - /// - /// List of events the logger needs as parameters to the . - /// - /// - /// If TerminalLogger runs as a distributed logger, MSBuild out-of-proc nodes might filter the events that will go to the main - /// node using an instance of with the following parameters. - /// Important: Note that TerminalLogger is special-cased in - /// so changing this list may impact the minimum message importance logging optimization. - /// - public static readonly string[] ConfigurableForwardingLoggerParameters = - { - "BUILDSTARTEDEVENT", - "BUILDFINISHEDEVENT", - "PROJECTSTARTEDEVENT", - "PROJECTFINISHEDEVENT", - "TARGETSTARTEDEVENT", - "TARGETFINISHEDEVENT", - "TASKSTARTEDEVENT", - "HIGHMESSAGEEVENT", - "WARNINGEVENT", - "ERROREVENT" - }; - /// /// The two directory separator characters to be passed to methods like . /// @@ -231,12 +210,12 @@ public ProjectContext(BuildEventContext context) /// /// Default constructor, used by the MSBuild logger infra. /// - public TerminalLogger() + internal TerminalLogger() { Terminal = new Terminal(); } - public TerminalLogger(LoggerVerbosity verbosity) : this() + internal TerminalLogger(LoggerVerbosity verbosity) : this() { Verbosity = verbosity; } @@ -250,6 +229,73 @@ internal TerminalLogger(ITerminal terminal) _manualRefresh = true; } + /// + /// Private constructor invoked by static factory. + /// + internal TerminalLogger(LoggerVerbosity verbosity, uint? originalConsoleMode) : this() + { + Verbosity = verbosity; + _originalConsoleMode = originalConsoleMode; + } + + /// + /// Creates a Terminal logger if possible, or a Console logger. + /// + /// Command line arguments for the logger configuration. Currently, only 'tl|terminallogger' and 'v|verbosity' are supported right now. + public static ILogger CreateTerminalOrConsoleLogger(string[]? args = null) + { + (bool supportsAnsi, bool outputIsScreen, uint? originalConsoleMode) = NativeMethodsShared.QueryIsScreenAndTryEnableAnsiColorCodes(); + + return CreateTerminalOrConsoleLogger(args, supportsAnsi, outputIsScreen, originalConsoleMode); + } + + internal static ILogger CreateTerminalOrConsoleLogger(string[]? args, bool supportsAnsi, bool outputIsScreen, uint? originalConsoleMode) + { + LoggerVerbosity verbosity = LoggerVerbosity.Normal; + string tlEnvVariable = Environment.GetEnvironmentVariable("MSBUILDTERMINALLOGGER") ?? string.Empty; + string tlArg = string.Empty; + string? verbosityArg = string.Empty; + + if (args != null) + { + string argsString = string.Join(" ", args); + + MatchCollection tlMatches = Regex.Matches(argsString, @"(?:/|-|--)(?:tl|terminallogger):(?'value'on|off)", RegexOptions.IgnoreCase); + tlArg = tlMatches.OfType().LastOrDefault()?.Groups["value"].Value ?? string.Empty; + + MatchCollection verbosityMatches = Regex.Matches(argsString, @"(?:/|-|--)(?:v|verbosity):(?'value'\w+)", RegexOptions.IgnoreCase); + verbosityArg = verbosityMatches.OfType().LastOrDefault()?.Groups["value"].Value; + } + + verbosityArg = verbosityArg?.ToLowerInvariant() switch + { + "q" => "quiet", + "m" => "minimal", + "n" => "normal", + "d" => "detailed", + "diag" => "diagnostic", + _ => verbosityArg, + }; + + if (Enum.TryParse(verbosityArg, true, out LoggerVerbosity parsedVerbosity)) + { + verbosity = parsedVerbosity; + } + + bool isDisabled = + tlArg.Equals("on", StringComparison.InvariantCultureIgnoreCase) ? false : + tlArg.Equals("off", StringComparison.InvariantCultureIgnoreCase) ? true : + tlEnvVariable.Equals("off", StringComparison.InvariantCultureIgnoreCase) || tlEnvVariable.Equals(bool.FalseString, StringComparison.InvariantCultureIgnoreCase); + + if (isDisabled || !supportsAnsi || !outputIsScreen) + { + NativeMethodsShared.RestoreConsoleMode(originalConsoleMode); + return new ConsoleLogger(verbosity); + } + + return new TerminalLogger(verbosity, originalConsoleMode); + } + #region INodeLogger implementation /// @@ -262,7 +308,7 @@ internal TerminalLogger(ITerminal terminal) public void Initialize(IEventSource eventSource, int nodeCount) { // When MSBUILDNOINPROCNODE enabled, NodeId's reported by build start with 2. We need to reserve an extra spot for this case. - _nodes = new NodeStatus[nodeCount + 1]; + _nodes = new TerminalNodeStatus[nodeCount + 1]; Initialize(eventSource); } @@ -270,8 +316,6 @@ public void Initialize(IEventSource eventSource, int nodeCount) /// public void Initialize(IEventSource eventSource) { - (_, _, _originalConsoleMode) = NativeMethodsShared.QueryIsScreenAndTryEnableAnsiColorCodes(); - ParseParameters(); eventSource.BuildStarted += BuildStarted; @@ -396,7 +440,7 @@ private void BuildStarted(object sender, BuildStartedEventArgs e) _buildStartTime = e.Timestamp; - if (Terminal.SupportsProgressReporting) + if (Terminal.SupportsProgressReporting && Verbosity != LoggerVerbosity.Quiet) { Terminal.Write(AnsiCodes.SetProgressIndeterminate); } @@ -465,7 +509,7 @@ private void BuildFinished(object sender, BuildFinishedEventArgs e) } finally { - if (Terminal.SupportsProgressReporting) + if (Terminal.SupportsProgressReporting && Verbosity != LoggerVerbosity.Quiet) { Terminal.Write(AnsiCodes.RemoveProgress); } @@ -492,7 +536,7 @@ private void RenderBuildSummary() Terminal.WriteLine(ResourceUtilities.GetResourceString("BuildSummary")); - foreach (Project project in _projects.Values.Where(p => p.HasErrorsOrWarnings)) + foreach (TerminalProjectInfo project in _projects.Values.Where(p => p.HasErrorsOrWarnings)) { string duration = project.Stopwatch.ElapsedSeconds.ToString("F1"); string buildResult = GetBuildResultString(project.Succeeded, project.ErrorCount, project.WarningCount); @@ -500,7 +544,7 @@ private void RenderBuildSummary() Terminal.WriteLine(projectHeader); - foreach (BuildMessage buildMessage in project.GetBuildErrorAndWarningMessages()) + foreach (TerminalBuildMessage buildMessage in project.GetBuildErrorAndWarningMessages()) { Terminal.WriteLine($"{DoubleIndentation}{buildMessage.Message}"); } @@ -543,7 +587,7 @@ private void ProjectStarted(object sender, ProjectStartedEventArgs e) { _restoreContext = c; int nodeIndex = NodeIndexForContext(buildEventContext); - _nodes[nodeIndex] = new NodeStatus(e.ProjectFile!, null, "Restore", _projects[c].Stopwatch); + _nodes[nodeIndex] = new TerminalNodeStatus(e.ProjectFile!, null, "Restore", _projects[c].Stopwatch); } } } @@ -573,7 +617,7 @@ private void ProjectFinished(object sender, ProjectFinishedEventArgs e) ProjectContext c = new(buildEventContext); - if (_projects.TryGetValue(c, out Project? project)) + if (_projects.TryGetValue(c, out TerminalProjectInfo? project)) { project.Succeeded = e.Succeeded; project.Stopwatch.Stop(); @@ -673,7 +717,7 @@ private void ProjectFinished(object sender, ProjectFinishedEventArgs e) // Print diagnostic output under the Project -> Output line. if (project.BuildMessages is not null) { - foreach (BuildMessage buildMessage in project.BuildMessages) + foreach (TerminalBuildMessage buildMessage in project.BuildMessages) { Terminal.WriteLine($"{DoubleIndentation}{buildMessage.Message}"); } @@ -692,7 +736,7 @@ private void ProjectFinished(object sender, ProjectFinishedEventArgs e) } } - private static string GetProjectFinishedHeader(Project project, string buildResult, string duration) + private static string GetProjectFinishedHeader(TerminalProjectInfo project, string buildResult, string duration) { string projectFile = project.File is not null ? Path.GetFileNameWithoutExtension(project.File) : @@ -727,7 +771,7 @@ private static string GetProjectFinishedHeader(Project project, string buildResu private void TargetStarted(object sender, TargetStartedEventArgs e) { var buildEventContext = e.BuildEventContext; - if (_restoreContext is null && buildEventContext is not null && _projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project)) + if (_restoreContext is null && buildEventContext is not null && _projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project)) { project.Stopwatch.Start(); @@ -753,12 +797,12 @@ private void TargetStarted(object sender, TargetStartedEventArgs e) project.IsTestProject = true; } - NodeStatus nodeStatus = new(projectFile, project.TargetFramework, targetName, project.Stopwatch); + TerminalNodeStatus nodeStatus = new(projectFile, project.TargetFramework, targetName, project.Stopwatch); UpdateNodeStatus(buildEventContext, nodeStatus); } } - private void UpdateNodeStatus(BuildEventContext buildEventContext, NodeStatus? nodeStatus) + private void UpdateNodeStatus(BuildEventContext buildEventContext, TerminalNodeStatus? nodeStatus) { int nodeIndex = NodeIndexForContext(buildEventContext); _nodes[nodeIndex] = nodeStatus; @@ -776,7 +820,7 @@ private void TargetFinished(object sender, TargetFinishedEventArgs e) && buildEventContext is not null && _hasUsedCache && e.TargetName == "GetTargetPath" - && _projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project)) + && _projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project)) { if (project.IsCachePluginProject) { @@ -800,7 +844,7 @@ private void TaskStarted(object sender, TaskStartedEventArgs e) // This will yield the node, so preemptively mark it idle UpdateNodeStatus(buildEventContext, null); - if (_projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project)) + if (_projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project)) { project.Stopwatch.Stop(); } @@ -821,7 +865,7 @@ private void MessageRaised(object sender, BuildMessageEventArgs e) string? message = e.Message; if (message is not null && e.Importance == MessageImportance.High) { - var hasProject = _projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project); + var hasProject = _projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project); // Detect project output path by matching high-importance messages against the "$(MSBuildProjectName) -> ..." // pattern used by the CopyFilesToOutputDirectory target. @@ -872,7 +916,7 @@ private void MessageRaised(object sender, BuildMessageEventArgs e) var indicator = extendedMessage.ExtendedMetadata!["localizedResult"]!; var displayName = extendedMessage.ExtendedMetadata!["displayName"]!; - var status = new NodeStatus(node.Project, node.TargetFramework, TerminalColor.Green, indicator, displayName, project.Stopwatch); + var status = new TerminalNodeStatus(node.Project, node.TargetFramework, TerminalColor.Green, indicator, displayName, project.Stopwatch); UpdateNodeStatus(buildEventContext, status); break; } @@ -882,7 +926,7 @@ private void MessageRaised(object sender, BuildMessageEventArgs e) var indicator = extendedMessage.ExtendedMetadata!["localizedResult"]!; var displayName = extendedMessage.ExtendedMetadata!["displayName"]!; - var status = new NodeStatus(node.Project, node.TargetFramework, TerminalColor.Yellow, indicator, displayName, project.Stopwatch); + var status = new TerminalNodeStatus(node.Project, node.TargetFramework, TerminalColor.Yellow, indicator, displayName, project.Stopwatch); UpdateNodeStatus(buildEventContext, status); break; } @@ -930,7 +974,7 @@ private void MessageRaised(object sender, BuildMessageEventArgs e) if (hasProject) { - project!.AddBuildMessage(MessageSeverity.Message, message); + project!.AddBuildMessage(TerminalMessageSeverity.Message, message); } else { @@ -949,7 +993,7 @@ private void WarningRaised(object sender, BuildWarningEventArgs e) BuildEventContext? buildEventContext = e.BuildEventContext; if (buildEventContext is not null - && _projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project) + && _projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project) && Verbosity > LoggerVerbosity.Quiet) { if ((!String.IsNullOrEmpty(e.Message) && IsImmediateMessage(e.Message!)) || @@ -958,7 +1002,7 @@ private void WarningRaised(object sender, BuildWarningEventArgs e) RenderImmediateMessage(FormatWarningMessage(e, Indentation)); } - project.AddBuildMessage(MessageSeverity.Warning, FormatWarningMessage(e, TripleIndentation)); + project.AddBuildMessage(TerminalMessageSeverity.Warning, FormatWarningMessage(e, TripleIndentation)); } else { @@ -991,10 +1035,10 @@ private void ErrorRaised(object sender, BuildErrorEventArgs e) BuildEventContext? buildEventContext = e.BuildEventContext; if (buildEventContext is not null - && _projects.TryGetValue(new ProjectContext(buildEventContext), out Project? project) + && _projects.TryGetValue(new ProjectContext(buildEventContext), out TerminalProjectInfo? project) && Verbosity > LoggerVerbosity.Quiet) { - project.AddBuildMessage(MessageSeverity.Error, FormatErrorMessage(e, TripleIndentation)); + project.AddBuildMessage(TerminalMessageSeverity.Error, FormatErrorMessage(e, TripleIndentation)); } else { @@ -1031,7 +1075,7 @@ private void ThreadProc() /// internal void DisplayNodes() { - NodesFrame newFrame = new NodesFrame(_nodes, width: Terminal.Width, height: Terminal.Height); + TerminalNodesFrame newFrame = new TerminalNodesFrame(_nodes, width: Terminal.Width, height: Terminal.Height); // Do not render delta but clear everything if Terminal width or height have changed. if (newFrame.Width != _currentFrame.Width || newFrame.Height != _currentFrame.Height) @@ -1077,8 +1121,9 @@ private void EraseNodes() /// Construct a build result summary string. /// /// True if the build completed with success. - /// True if the build has logged at least one error. - /// True if the build has logged at least one warning. + /// The number of errors encountered during the build. + /// The number of warnings encountered during the build. + /// A string representing the build result summary. private static string GetBuildResultString(bool succeeded, int countErrors, int countWarnings) { if (!succeeded) diff --git a/src/MSBuild/TerminalLogger/MessageSeverity.cs b/src/Build/Logging/TerminalLogger/TerminalMessageSeverity.cs similarity index 67% rename from src/MSBuild/TerminalLogger/MessageSeverity.cs rename to src/Build/Logging/TerminalLogger/TerminalMessageSeverity.cs index 9f374e292dd..40fafcea1c6 100644 --- a/src/MSBuild/TerminalLogger/MessageSeverity.cs +++ b/src/Build/Logging/TerminalLogger/TerminalMessageSeverity.cs @@ -1,9 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// Enumerates the supported message severities. /// -internal enum MessageSeverity { Message, Warning, Error } +internal enum TerminalMessageSeverity { Message, Warning, Error } diff --git a/src/MSBuild/TerminalLogger/NodeStatus.cs b/src/Build/Logging/TerminalLogger/TerminalNodeStatus.cs similarity index 88% rename from src/MSBuild/TerminalLogger/NodeStatus.cs rename to src/Build/Logging/TerminalLogger/TerminalNodeStatus.cs index 3b3de635dee..4634040bdf7 100644 --- a/src/MSBuild/TerminalLogger/NodeStatus.cs +++ b/src/Build/Logging/TerminalLogger/TerminalNodeStatus.cs @@ -3,14 +3,15 @@ using System; using System.Diagnostics; +using Microsoft.Build.Framework.Logging; using Microsoft.Build.Shared; -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// Encapsulates the per-node data shown in live node output. /// -internal class NodeStatus +internal class TerminalNodeStatus { public string Project { get; } public string? TargetFramework { get; } @@ -26,7 +27,7 @@ internal class NodeStatus /// Target framework that is colorized and written on left side after project. /// The currently running work, usually the currently running target. Written on right. /// Duration of the current step. Written on right after target. - public NodeStatus(string project, string? targetFramework, string target, StopwatchAbstraction stopwatch) + public TerminalNodeStatus(string project, string? targetFramework, string target, StopwatchAbstraction stopwatch) { #if DEBUG if (target.Contains("\x1B")) @@ -49,7 +50,7 @@ public NodeStatus(string project, string? targetFramework, string target, Stopwa /// Colorized status for the currently running work, written on right, before target, and separated by 1 space from it. /// The currently running work, usually the currently runnig target. Written on right. /// Duration of the current step. Written on right after target. - public NodeStatus(string project, string? targetFramework, TerminalColor targetPrefixColor, string targetPrefix, string target, StopwatchAbstraction stopwatch) + public TerminalNodeStatus(string project, string? targetFramework, TerminalColor targetPrefixColor, string targetPrefix, string target, StopwatchAbstraction stopwatch) : this(project, targetFramework, target, stopwatch) { TargetPrefixColor = targetPrefixColor; @@ -60,7 +61,7 @@ public NodeStatus(string project, string? targetFramework, TerminalColor targetP /// Equality is based on the project, target framework, and target, but NOT the elapsed time. /// public override bool Equals(object? obj) => - obj is NodeStatus status && + obj is TerminalNodeStatus status && Project == status.Project && TargetFramework == status.TargetFramework && Target == status.Target && diff --git a/src/MSBuild/TerminalLogger/NodesFrame.cs b/src/Build/Logging/TerminalLogger/TerminalNodesFrame.cs similarity index 90% rename from src/MSBuild/TerminalLogger/NodesFrame.cs rename to src/Build/Logging/TerminalLogger/TerminalNodesFrame.cs index 38c82c36f93..93f4f2dee9b 100644 --- a/src/MSBuild/TerminalLogger/NodesFrame.cs +++ b/src/Build/Logging/TerminalLogger/TerminalNodesFrame.cs @@ -2,21 +2,20 @@ // The .NET Foundation licenses this file to you under the MIT license. using System; -using System.Collections.Generic; - using System.Text; +using Microsoft.Build.Framework.Logging; using Microsoft.Build.Shared; -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// Capture states on nodes to be rendered on display. /// -internal sealed class NodesFrame +internal sealed class TerminalNodesFrame { private const int MaxColumn = 120; - private readonly (NodeStatus nodeStatus, int durationLength)[] _nodes; + private readonly (TerminalNodeStatus nodeStatus, int durationLength)[] _nodes; private readonly StringBuilder _renderBuilder = new(); @@ -24,14 +23,14 @@ internal sealed class NodesFrame public int Height { get; } public int NodesCount { get; private set; } - public NodesFrame(NodeStatus?[] nodes, int width, int height) + public TerminalNodesFrame(TerminalNodeStatus?[] nodes, int width, int height) { Width = Math.Min(width, MaxColumn); Height = height; - _nodes = new (NodeStatus, int)[nodes.Length]; + _nodes = new (TerminalNodeStatus, int)[nodes.Length]; - foreach (NodeStatus? status in nodes) + foreach (TerminalNodeStatus? status in nodes) { if (status is not null) { @@ -42,7 +41,7 @@ public NodesFrame(NodeStatus?[] nodes, int width, int height) internal ReadOnlySpan RenderNodeStatus(int i) { - NodeStatus status = _nodes[i].nodeStatus; + TerminalNodeStatus status = _nodes[i].nodeStatus; string durationString = ResourceUtilities.FormatResourceStringIgnoreCodeAndKeyword( "DurationDisplay", @@ -96,7 +95,7 @@ static int Length(string durationString, string project, string? targetFramework /// /// Render VT100 string to update from current to next frame. /// - public string Render(NodesFrame previousFrame) + public string Render(TerminalNodesFrame previousFrame) { StringBuilder sb = _renderBuilder; sb.Clear(); diff --git a/src/MSBuild/TerminalLogger/Project.cs b/src/Build/Logging/TerminalLogger/TerminalProjectInfo.cs similarity index 70% rename from src/MSBuild/TerminalLogger/Project.cs rename to src/Build/Logging/TerminalLogger/TerminalProjectInfo.cs index e32d3686dc7..8e4f98fe688 100644 --- a/src/MSBuild/TerminalLogger/Project.cs +++ b/src/Build/Logging/TerminalLogger/TerminalProjectInfo.cs @@ -6,20 +6,22 @@ using System.Diagnostics; using System.Linq; -namespace Microsoft.Build.Logging.TerminalLogger; +namespace Microsoft.Build.Logging; /// /// Represents a project being built. /// -internal sealed class Project +internal sealed class TerminalProjectInfo { - private List? _buildMessages; + private List? _buildMessages; /// - /// Initialized a new with the given . + /// Initialized a new with the given . /// + /// The full path to the project file. /// The target framework of the project or null if not multi-targeting. - public Project(string projectFile, string? targetFramework, StopwatchAbstraction? stopwatch) + /// A stopwatch to time the build of the project. + public TerminalProjectInfo(string projectFile, string? targetFramework, StopwatchAbstraction? stopwatch) { File = projectFile; TargetFramework = targetFramework; @@ -58,7 +60,7 @@ public Project(string projectFile, string? targetFramework, StopwatchAbstraction public bool IsTestProject { get; set; } /// - /// True when the project has run target with name "_CachePluginRunStart" defined in . + /// True when the project has run target with name "_CachePluginRunStart". /// public bool IsCachePluginProject { get; set; } @@ -85,21 +87,21 @@ public Project(string projectFile, string? targetFramework, StopwatchAbstraction /// /// A lazily initialized list of build messages/warnings/errors raised during the build. /// - public IReadOnlyList? BuildMessages => _buildMessages; + public IReadOnlyList? BuildMessages => _buildMessages; /// /// Adds a build message of the given severity to . /// - public void AddBuildMessage(MessageSeverity severity, string message) + public void AddBuildMessage(TerminalMessageSeverity severity, string message) { - _buildMessages ??= new List(); - _buildMessages.Add(new BuildMessage(severity, message)); + _buildMessages ??= new List(); + _buildMessages.Add(new TerminalBuildMessage(severity, message)); - if (severity == MessageSeverity.Error) + if (severity == TerminalMessageSeverity.Error) { ErrorCount++; } - else if (severity == MessageSeverity.Warning) + else if (severity == TerminalMessageSeverity.Warning) { WarningCount++; } @@ -109,12 +111,12 @@ public void AddBuildMessage(MessageSeverity severity, string message) /// Filters the build messages to only include errors and warnings. /// /// A sequence of error and warning build messages. - public IEnumerable GetBuildErrorAndWarningMessages() + public IEnumerable GetBuildErrorAndWarningMessages() { return BuildMessages is null ? - Enumerable.Empty() : + Enumerable.Empty() : BuildMessages.Where(message => - message.Severity == MessageSeverity.Error || - message.Severity == MessageSeverity.Warning); + message.Severity == TerminalMessageSeverity.Error || + message.Severity == TerminalMessageSeverity.Warning); } } diff --git a/src/Build/Microsoft.Build.csproj b/src/Build/Microsoft.Build.csproj index eaf8eccce00..0f9c05c8a55 100644 --- a/src/Build/Microsoft.Build.csproj +++ b/src/Build/Microsoft.Build.csproj @@ -173,6 +173,7 @@ + diff --git a/src/Build/Resources/Strings.resx b/src/Build/Resources/Strings.resx index 0f325804917..e852c079b05 100644 --- a/src/Build/Resources/Strings.resx +++ b/src/Build/Resources/Strings.resx @@ -2236,6 +2236,140 @@ Utilization: {0} Average Utilization: {1:###.0} Logging type {0} is not understood by {1}. + + ({0:F1}s) + + {0}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + Build {0} in {1}s + + Overall build summary + {0}: BuildResult_X (below) + {1}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + {0}{1} {2} ({3}s) + + Project finished summary. + {0}: indentation - few spaces to visually indent row + {1}: project name + {2}: BuildResult_{X} + {3}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + {0}{1} {2} {3} ({4}s) + + Project finished summary including target framework information. + {0}: indentation - few spaces to visually indent row + {1}: project name + {2}: target framework + {3}: BuildResult_{X} + {4}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + failed with {0} error(s) + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + failed with {0} error(s) and {1} warning(s) + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + failed with {0} warning(s) + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + failed + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + succeeded + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + succeeded with {0} warning(s) + + Part of Terminal Logger summary message: "Build {BuildResult_X} in {duration}s" + + + + {0}{1} test {2} ({3}s) + + Project finished summary. + {0}: indentation - few spaces to visually indent row + {1}: project name + {2}: BuildResult_{X} + {3}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + {0}{1} test {2} {3} ({4}s) + + Project finished summary including target framework information. + {0}: indentation - few spaces to visually indent row + {1}: project name + {2}: target framework + {3}: BuildResult_{X} + {4}: duration in seconds with 1 decimal point + 's' should reflect the localized abbreviation for seconds + + + + → {0} + + Info about project output - when known. Printed after ProjectFinished_NoTF or ProjectFinished_WithTF. + {0}: VT100 coded hyperlink to project output directory + + + + Build summary: + + A header used by Terminal Logger to introduce the build summary. + + + + Test summary: total: {0} + {0} whole number + + + duration: {0}s + + {0} whole number + 's' should reflect the localized abbreviation for seconds + + + + failed: {0} + {0} whole number + + + skipped: {0} + {0} whole number + + + succeeded: {0} + {0} whole number +