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:
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs3
-rw-r--r--main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs31
2 files changed, 21 insertions, 13 deletions
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
index 373569e3d4..8b32dc1804 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTest.cs
@@ -201,7 +201,8 @@ namespace MonoDevelop.UnitTesting
status = value;
OnTestStatusChanged ();
- (Parent as UnitTestGroup)?.UpdateStatusFromChildren ();
+
+ (Parent as UnitTestGroup)?.UpdateStatusFromChild (this);
}
}
diff --git a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
index e2a94a14b4..65bd3fc0e7 100644
--- a/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
+++ b/main/src/addins/MonoDevelop.UnitTesting/Services/UnitTestGroup.cs
@@ -70,7 +70,7 @@ namespace MonoDevelop.UnitTesting
base.ResetLastResult ();
}
- static UnitTestResult GetLastResultDynamically (IEnumerable<UnitTest> tests)
+ static UnitTestResult GetLastResultDynamically (IEnumerable<UnitTest> tests, out bool isHistoric)
{
int passed = 0;
int errors = 0;
@@ -78,6 +78,7 @@ namespace MonoDevelop.UnitTesting
int skipped = 0;
int uniqeCount = 0;
+ isHistoric = false;
ResultStatus ?lastStatus = null;
var resultStatus = ResultStatus.Inconclusive;
@@ -94,6 +95,7 @@ namespace MonoDevelop.UnitTesting
uniqeCount++;
lastStatus = res.Status;
+ isHistoric |= test.IsHistoricResult;
}
if (uniqeCount == 1)
@@ -110,19 +112,24 @@ namespace MonoDevelop.UnitTesting
return result;
}
-
- internal void UpdateStatusFromChildren ()
+ internal void UpdateStatusFromChild (UnitTest test)
{
- if (this.Status != TestStatus.Ready)
+ if (Status != TestStatus.Ready)
return;
- var calculatedResult = GetLastResultDynamically (Tests);
- var storedResult = GetLastResult ();
- if(!calculatedResult.Equals (storedResult)){
- lastResult = calculatedResult;
- IsHistoricResult = Tests.Any (t => t.IsHistoricResult);
- OnTestStatusChanged ();
- }
- (Parent as UnitTestGroup)?.UpdateStatusFromChildren ();
+
+ var parent = this;
+ while (parent != null) {
+ var calculatedResult = GetLastResultDynamically (parent.Tests, out bool isHistoricResult);
+ var storedResult = GetLastResult ();
+ if (!calculatedResult.Equals (storedResult)) {
+ lastResult = calculatedResult;
+ IsHistoricResult = isHistoricResult;
+ OnTestStatusChanged ();
+ }
+
+ test = this;
+ parent = parent as UnitTestGroup;
+ }
}
public UnitTestCollection Tests {