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:
authortherzok <marius.ungureanu@xamarin.com>2018-07-20 17:42:23 +0300
committerMarius Ungureanu <teromario@yahoo.com>2018-08-01 17:07:37 +0300
commitd45a366034ce0a8ae5e109a8bf307db41bdd30e0 (patch)
treea56a0e3e1a0fc73fcc71971b0d2e8d7a52e3bd1d /main/src/addins/MonoDevelop.UnitTesting
parente9383c122bd922c136664d5542e671c8e9d301ac (diff)
[UnitTesting] Refactor status update to not iterate results twice.
Diffstat (limited to 'main/src/addins/MonoDevelop.UnitTesting')
-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 {