diff options
author | Mike Krüger <mikkrg@microsoft.com> | 2018-10-25 14:09:51 +0300 |
---|---|---|
committer | Mike Krüger <mikkrg@microsoft.com> | 2018-10-26 08:45:08 +0300 |
commit | 24dcfa6a71740ddbe4e97d1bddec040738eaa51c (patch) | |
tree | fd7c8bfa29185a1160a10bfa4f8241fbd76ab889 /main/src/addins | |
parent | 5367f5ab1ee425762b0f7262ea765ec976f67646 (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')
-rw-r--r-- | main/src/addins/MonoDevelop.UnitTesting/Gui/TestResultsPad.cs | 39 |
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); } |