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:
authorDmytro Ovcharov <mr.celestian@gmail.com>2017-11-08 11:29:22 +0300
committerLluis Sanchez <llsan@microsoft.com>2017-11-08 11:29:22 +0300
commit0dfcf09c650e1c4d25e4c30d1eda3d8d5690c8c4 (patch)
tree95a3b1f2148b6da84ef8bbda3368395abcd2538d /main/src/addins/MonoDevelop.UnitTesting
parent70ab2d93f6d71f1e4935a62006084af74b4cbae1 (diff)
Bugfix14525 (#3195)
Fix bug 29749 - Unit Tests UI does not reflect passing tests in parent node
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs20
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestCollection.cs4
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs64
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestResult.cs36
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs11
5 files changed, 114 insertions, 21 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
index bf02475122..d1aefaac9d 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
@@ -37,14 +37,14 @@ using MonoDevelop.Core.Execution;
using MonoDevelop.Ide;
using System.Threading.Tasks;
using System.Threading;
-
+
namespace MonoDevelop.UnitTesting
-{
+{
public abstract class UnitTest: IDisposable
{
string name;
IResultsStore resultsStore;
- UnitTestResult lastResult;
+ internal UnitTestResult lastResult;
UnitTest parent;
TestStatus status;
WorkspaceObject ownerSolutionItem;
@@ -52,7 +52,7 @@ namespace MonoDevelop.UnitTesting
UnitTestResultsStore results;
bool historicResult;
bool resultLoaded;
-
+
public virtual bool CanMergeWithParent => false;
public string FixtureTypeNamespace {
@@ -125,7 +125,7 @@ namespace MonoDevelop.UnitTesting
public UnitTestResultsStore Results {
get {
- if (results == null) {
+ if (results == null) {
results = new UnitTestResultsStore (this, GetResultsStore ());
}
return results;
@@ -143,7 +143,7 @@ namespace MonoDevelop.UnitTesting
return lastResult;
}
- public void ResetLastResult ()
+ public virtual void ResetLastResult ()
{
historicResult = true;
OnTestStatusChanged ();
@@ -151,6 +151,7 @@ namespace MonoDevelop.UnitTesting
public bool IsHistoricResult {
get { return historicResult; }
+ internal set { historicResult = value; }
}
public UnitTestCollection GetRegressions (DateTime fromDate, DateTime toDate)
@@ -195,6 +196,7 @@ namespace MonoDevelop.UnitTesting
set {
status = value;
OnTestStatusChanged ();
+ (Parent as UnitTestGroup)?.UpdateStatusFromChildren ();
}
}
@@ -341,9 +343,9 @@ namespace MonoDevelop.UnitTesting
resultLoaded = true;
IResultsStore store = GetResultsStore ();
- if (store != null)
+ if (store != null)
store.RegisterResult (ActiveConfiguration, this, result);
- OnTestStatusChanged ();
+ OnTestStatusChanged ();
}
IResultsStore GetResultsStore ()
@@ -365,7 +367,7 @@ namespace MonoDevelop.UnitTesting
{
IResultsStore store = GetResultsStore ();
if (store != null)
- store.Save ();
+ store.Save ();
}
internal virtual void FindRegressions (UnitTestCollection list, DateTime fromDate, DateTime toDate)
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestCollection.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestCollection.cs
index 8a004ad81d..214d513dba 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestCollection.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestCollection.cs
@@ -35,9 +35,9 @@ namespace MonoDevelop.UnitTesting
{
public class UnitTestCollection: Collection<UnitTest>
{
- UnitTest owner;
+ UnitTestGroup owner;
- internal UnitTestCollection (UnitTest owner)
+ internal UnitTestCollection (UnitTestGroup owner)
{
this.owner = owner;
}
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
index 037499cfdc..d6541a4a7a 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
@@ -33,6 +33,8 @@ using System.Collections;
using MonoDevelop.Projects;
using System.Threading.Tasks;
using System.Threading;
+using System.Linq;
+using System.Collections.Generic;
namespace MonoDevelop.UnitTesting
{
@@ -60,7 +62,67 @@ namespace MonoDevelop.UnitTesting
return false;
}
}
-
+
+ public override void ResetLastResult ()
+ {
+ foreach (var test in Tests)
+ test.ResetLastResult();
+ base.ResetLastResult ();
+ }
+
+ static UnitTestResult GetLastResultDynamicaly (IEnumerable<UnitTest> tests)
+ {
+ int passed = 0;
+ int errors = 0;
+ int failures = 0;
+ int skipped = 0;
+ int uniqeCount = 0;
+
+ ResultStatus ?lastStatus = null;
+ var resultStatus = ResultStatus.Inconclusive;
+
+ foreach (var test in tests) {
+ var res = test.GetLastResult ();
+ passed += res.Passed;
+ errors += res.Errors;
+ failures += res.Failures;
+ skipped += res.Skipped;
+
+ if(res.Status != lastStatus)
+ uniqeCount++;
+
+ lastStatus = res.Status;
+ }
+
+ if (uniqeCount == 1)
+ resultStatus = lastStatus.Value;
+
+ var result = new UnitTestResult () {
+ Status = resultStatus,
+ Passed = passed,
+ Errors = errors,
+ Skipped = skipped,
+ Failures = failures
+ };
+
+ return result;
+ }
+
+
+ internal void UpdateStatusFromChildren ()
+ {
+ if (this.Status == TestStatus.Running)
+ return;
+ var calculatedResult = GetLastResultDynamicaly (Tests);
+ var storedResult = GetLastResult ();
+ if(!calculatedResult.Equals (storedResult)){
+ lastResult = calculatedResult;
+ IsHistoricResult = Tests.Any (t => t.IsHistoricResult);
+ OnTestStatusChanged ();
+ }
+ (Parent as UnitTestGroup)?.UpdateStatusFromChildren ();
+ }
+
public UnitTestCollection Tests {
get {
if (tests == null) {
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestResult.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestResult.cs
index 50f10070ee..a2d0eb9208 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestResult.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestResult.cs
@@ -224,6 +224,42 @@ namespace MonoDevelop.UnitTesting
Inconclusive += res.Inconclusive;
Skipped += res.Skipped;
}
+
+ public override int GetHashCode ()
+ {
+ var unknowObject = new {
+ Status,
+ Passed,
+ Errors,
+ Failures,
+ Inconclusive,
+ NotRunnable,
+ Skipped,
+ Ignored
+ };
+ return unknowObject.GetHashCode ();
+ }
+
+ public override bool Equals (object obj)
+ {
+ var unitTestResult = obj as UnitTestResult;
+ if (unitTestResult == null)
+ return false;
+ return EqualsHelper (this, unitTestResult);
+ }
+
+ bool EqualsHelper (UnitTestResult firstResult, UnitTestResult secondResult)
+ {
+ return firstResult.Status == secondResult.Status &&
+ firstResult.Passed == secondResult.Passed &&
+ firstResult.Errors == secondResult.Errors &&
+ firstResult.Failures == secondResult.Failures &&
+ firstResult.Inconclusive == secondResult.Inconclusive &&
+ firstResult.NotRunnable == secondResult.NotRunnable &&
+ firstResult.Skipped == secondResult.Skipped &&
+ firstResult.Ignored == secondResult.Ignored;
+ }
+
}
}
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs
index ce58f92526..d6ab08a01f 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestService.cs
@@ -402,14 +402,7 @@ namespace MonoDevelop.UnitTesting
public static void ResetResult (UnitTest test)
{
- if (test == null)
- return;
- test.ResetLastResult ();
- UnitTestGroup group = test as UnitTestGroup;
- if (group == null)
- return;
- foreach (UnitTest t in new List<UnitTest> (group.Tests))
- ResetResult (t);
+ test?.ResetLastResult ();
}
public static event EventHandler TestSuiteChanged;
@@ -468,7 +461,7 @@ namespace MonoDevelop.UnitTesting
UnitTestService.ResetResult (test);
TestContext ctx = new TestContext (monitor, resultsPad, context, DateTime.Now);
- test.Run (ctx);
+ test.Run (ctx);
test.SaveResults ();
} catch (Exception ex) {
LoggingService.LogError (ex.ToString ());