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/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m: Warning!
+directory/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m: Warning!
directory/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m:
A
Multi
Line
Warning!
directory/[1mfile[m(1,2,3,4): [31;1merror[m [31;1mAA0000[m: 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/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m: Warning!
+directory/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m: Warning!
directory/[1mfile[m(1,2,3,4): [33;1mwarning[m [33;1mAA0000[m:
A
Multi
Line
Warning!
directory/[1mfile[m(1,2,3,4): [31;1merror[m [31;1mAA0000[m: 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
+