Skip to content

Commit 20376a8

Browse files
authored
Merge pull request #75084 from dotnet/dev/jorobich/more-test-logging
Log messages for Test Results
2 parents 2149908 + 1803abf commit 20376a8

15 files changed

+328
-7
lines changed

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/LanguageServerResources.resx

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,16 @@
240240
<data name="Project_0_has_unresolved_dependencies" xml:space="preserve">
241241
<value>Project {0} has unresolved dependencies</value>
242242
</data>
243+
<data name="Standard_Output_Messages" xml:space="preserve">
244+
<value>Standard Output Messages</value>
245+
</data>
246+
<data name="Standard_Error_Messages" xml:space="preserve">
247+
<value>Standard Error Messages</value>
248+
</data>
249+
<data name="Debug_Trace_Messages" xml:space="preserve">
250+
<value>Debug Trace Messages</value>
251+
</data>
252+
<data name="Additional_Info_Messages" xml:space="preserve">
253+
<value>Additional Info Messages</value>
254+
</data>
243255
</root>

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/Testing/TestRunner.TestRunHandler.cs

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@
22
// The .NET Foundation licenses this file to you under the MIT license.
33
// See the LICENSE file in the project root for more information.
44

5+
using System.Collections.Immutable;
6+
using System.Collections.ObjectModel;
57
using System.Text;
68
using Microsoft.CodeAnalysis.LanguageServer.Handler;
79
using Microsoft.CodeAnalysis.LanguageServer.Handler.Testing;
10+
using Microsoft.CodeAnalysis.Shared.Extensions;
811
using Microsoft.Extensions.Logging;
912
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
1013
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
@@ -137,11 +140,7 @@ private static string CreateTestCaseReportMessage(TestRunChangedEventArgs? testR
137140
var results = testRunChangedEventArgs.NewTestResults.Select(result =>
138141
{
139142
var messageBuilder = new StringBuilder();
140-
messageBuilder.Append($"[{result.Outcome}] {result.TestCase.DisplayName}");
141-
if (result.ErrorMessage != null || result.ErrorStackTrace != null)
142-
{
143-
messageBuilder.AppendLine();
144-
}
143+
messageBuilder.AppendLine($"[{result.Outcome}] {result.TestCase.DisplayName}");
145144

146145
if (!string.IsNullOrWhiteSpace(result.ErrorMessage))
147146
{
@@ -155,14 +154,64 @@ private static string CreateTestCaseReportMessage(TestRunChangedEventArgs? testR
155154
messageBuilder.AppendLine(IndentString(result.ErrorStackTrace, 8));
156155
}
157156

157+
var standardOutputMessages = GetTestMessages(result.Messages, TestResultMessage.StandardOutCategory);
158+
if (standardOutputMessages.Length > 0)
159+
{
160+
messageBuilder.AppendLine(value: IndentString($"{LanguageServerResources.Standard_Output_Messages}:", 4));
161+
messageBuilder.AppendLine(FormatMessages(standardOutputMessages, 8));
162+
}
163+
164+
var standardErrorMessages = GetTestMessages(result.Messages, TestResultMessage.StandardErrorCategory);
165+
if (standardErrorMessages.Length > 0)
166+
{
167+
messageBuilder.AppendLine(value: IndentString($"{LanguageServerResources.Standard_Error_Messages}:", 4));
168+
messageBuilder.AppendLine(FormatMessages(standardErrorMessages, 8));
169+
}
170+
171+
var debugTraceMessages = GetTestMessages(result.Messages, TestResultMessage.DebugTraceCategory);
172+
if (debugTraceMessages.Length > 0)
173+
{
174+
messageBuilder.AppendLine(value: IndentString($"{LanguageServerResources.Debug_Trace_Messages}:", 4));
175+
messageBuilder.AppendLine(FormatMessages(debugTraceMessages, 8));
176+
}
177+
178+
var additionalInfoMessages = GetTestMessages(result.Messages, TestResultMessage.AdditionalInfoCategory);
179+
if (additionalInfoMessages.Length > 0)
180+
{
181+
messageBuilder.AppendLine(value: IndentString($"{LanguageServerResources.Additional_Info_Messages}:", 4));
182+
messageBuilder.AppendLine(FormatMessages(additionalInfoMessages, 8));
183+
}
184+
158185
return messageBuilder.ToString();
159186
});
160187

161-
return string.Join(Environment.NewLine, results);
188+
return string.Join("", results);
162189

163190
static string IndentString(string text, int count)
164191
{
165-
return text.Replace(Environment.NewLine, $"{Environment.NewLine} ").TrimEnd().Insert(0, new string(' ', count));
192+
var indentation = new string(' ', count);
193+
return text.Replace(Environment.NewLine, $"{Environment.NewLine}{indentation}").TrimEnd().Insert(0, indentation);
194+
}
195+
196+
static ImmutableArray<TestResultMessage> GetTestMessages(Collection<TestResultMessage> messages, string requiredCategory)
197+
{
198+
return messages.WhereAsArray(static (msg, category) => msg.Category.Equals(category, StringComparison.OrdinalIgnoreCase), requiredCategory);
199+
}
200+
201+
static string FormatMessages(ImmutableArray<TestResultMessage> messages, int indentation)
202+
{
203+
var builder = new StringBuilder();
204+
foreach (var message in messages)
205+
{
206+
if (message.Text is null)
207+
continue;
208+
209+
var indentedMessage = IndentString(message.Text, indentation);
210+
if (!string.IsNullOrWhiteSpace(indentedMessage))
211+
builder.Append(indentedMessage);
212+
}
213+
214+
return builder.ToString();
166215
}
167216
}
168217
}

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.cs.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.de.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.es.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.fr.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.it.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ja.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/LanguageServer/Microsoft.CodeAnalysis.LanguageServer/xlf/LanguageServerResources.ko.xlf

Lines changed: 20 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)