Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Krüger <mikkrg@microsoft.com>2018-10-25 14:09:51 +0300
committerMike Krüger <mikkrg@microsoft.com>2018-10-26 08:45:08 +0300
commit24dcfa6a71740ddbe4e97d1bddec040738eaa51c (patch)
treefd7c8bfa29185a1160a10bfa4f8241fbd76ab889 /main/src/addins/MonoDevelop.UnitTesting
parent5367f5ab1ee425762b0f7262ea765ec976f67646 (diff)
Bug 713024: "Test Results" pane has bad performance when very large
amounts of text are shown https://devdiv.visualstudio.com/DevDiv/_workitems/edit/713024
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs39
1 files changed, 37 insertions, 2 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
index 75c29f3e14..a59bbcbf71 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs
@@ -738,8 +738,38 @@ namespace MonoDevelop.UnitTesting
TreeIter testRow = failuresStore.AppendValues (TestStatusIcon.Failure, Escape (test.FullName), test, file);
bool hasMessage = !string.IsNullOrEmpty (result.Message);
- if (hasMessage)
- failuresStore.AppendValues (testRow, null, "<span font='" + FontService.MonospaceFontName + "'>"+Escape (result.Message) + "</span>", test, null, 0, ErrorMessage);
+ if (hasMessage) {
+ var sb = StringBuilderCache.Allocate ();
+ string curLineText;
+ int curLine = 1;
+ const int maxLineLength = 255;
+ const int maxLineNumber = 255;
+ sb.Append ("<span font='");
+ sb.Append (FontService.MonospaceFontName);
+ sb.Append ("'>");
+ using (var sr = new StringReader (result.Message)) {
+ while (null != (curLineText = sr.ReadLine ())) {
+ if (curLineText == null) continue;
+ if (curLine < maxLineNumber) {
+ if (curLineText.Length > maxLineLength) {
+ sb.Append (curLineText, 0, maxLineLength);
+ sb.AppendLine ("…");
+ } else {
+ sb.AppendLine (curLineText);
+ }
+ }
+ curLine++;
+ }
+ }
+ if (curLine > maxLineNumber) {
+ sb.Append ("<span foreground='darkgrey'>");
+ sb.Append (GettextCatalog.GetString ("(+{0} lines not shown - see output view for full result message)", curLine - maxLineNumber));
+ sb.Append ("</span>");
+ }
+ sb.Append ("</span>");
+ failuresStore.AppendValues (testRow, null,StringBuilderCache.ReturnAndFree (sb), test, null, 0, ErrorMessage);
+ }
+
if (!string.IsNullOrEmpty (result.StackTrace)) {
TreeIter row = testRow;
if (hasMessage)
@@ -774,6 +804,11 @@ namespace MonoDevelop.UnitTesting
outputView.Buffer.Insert (ref it, result.ConsoleOutput);
if (result.ConsoleError != null)
outputView.Buffer.Insert (ref it, result.ConsoleError);
+ if (!string.IsNullOrEmpty (result.Message)) {
+ outputView.Buffer.Insert (ref it, GettextCatalog.GetString ("Result message:"));
+ outputView.Buffer.Insert (ref it, "\n");
+ outputView.Buffer.Insert (ref it, result.Message);
+ }
outputView.ScrollMarkOnscreen (outputView.Buffer.InsertMark);
}