diff options
author | Dmytro Ovcharov <mr.celestian@gmail.com> | 2017-10-30 12:39:41 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-30 12:39:41 +0300 |
commit | d36cbb0b72a3a66be93a120e1e621bd8c694e0a5 (patch) | |
tree | ab1b2b65befff73027091003898ea6b2e841894e /main/src/addins/MonoDevelop.UnitTesting | |
parent | a89e2d209ee0ccaf482f33f043c68dbf8c8523fc (diff) | |
parent | 01e40d42c2a65e5ea3efb454c2541ca44b630376 (diff) |
Merge pull request #3261 from mono/fix6664
Removed redundant nesting in unit test tree.
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
-rw-r--r-- | main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs index 027f8b4265..6f03ec0c70 100644 --- a/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs +++ b/main/src/addins/MonoDevelop.UnitTesting/Gui/TestNodeBuilder.cs @@ -29,6 +29,7 @@ using System; using System.Globalization; using System.Text; +using System.Linq; using MonoDevelop.Core; using MonoDevelop.Components.Commands; @@ -69,8 +70,13 @@ namespace MonoDevelop.UnitTesting UnitTest test = dataObject as UnitTest; nodeInfo.Icon = test.StatusIcon; + var singleTestSuffix = String.Empty; + if (test is UnitTestGroup unitTestGroup) + singleTestSuffix = GetSuffix (unitTestGroup); + var title = RemoveGenericArgument (test.Title); - title = test.Title; + title = test.Title + singleTestSuffix ; + if (test.Status == TestStatus.Running) { nodeInfo.Label = Ambience.EscapeText (title); return; @@ -94,15 +100,48 @@ namespace MonoDevelop.UnitTesting } } + static string GetSuffix (UnitTestGroup unitTestGroup) + { + var stringBuilder = new StringBuilder (); + while (unitTestGroup != null) + if (ContainsSingleUnitTestGroup (unitTestGroup) && !(unitTestGroup is SolutionFolderTestGroup)) { + var testCollection = unitTestGroup.Tests; + var singleChildTestGroup = testCollection [0] as UnitTestGroup; + stringBuilder.Append (".") + .Append (singleChildTestGroup.Title); + unitTestGroup = singleChildTestGroup; + } else + unitTestGroup = null; + return stringBuilder.ToString (); + } + public override void BuildChildNodes (ITreeBuilder builder, object dataObject) { UnitTestGroup test = dataObject as UnitTestGroup; if (test == null) return; + if (ContainsSingleUnitTestGroup (test)) { + BuildChildNodes (test, builder); + return; + } + builder.AddChildren (test.Tests); + } + + void BuildChildNodes (UnitTestGroup test, ITreeBuilder builder) + { + bool isSolution = test is SolutionFolderTestGroup; + if (!isSolution && ContainsSingleUnitTestGroup(test)) { + var unitTestGroup = test.Tests[0] as UnitTestGroup; + BuildChildNodes (unitTestGroup, builder); + return; + } builder.AddChildren (test.Tests); } + static bool ContainsSingleUnitTestGroup(UnitTestGroup test) => + test.Tests.Count == 1 && test.Tests[0] is UnitTestGroup; + public override bool HasChildNodes (ITreeBuilder builder, object dataObject) { UnitTestGroup test = dataObject as UnitTestGroup; |