diff options
author | Lluis Sanchez <lluis@xamarin.com> | 2019-08-29 17:56:08 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-08-29 17:56:08 +0300 |
commit | e4d289d74ad8449b2eec6a821442a523f8184e5f (patch) | |
tree | 1ecaf120b1bce4b49ad80327f088800a3c2ad1d3 | |
parent | 6ba4180921c2643c8b82df39541c8ea7432f9971 (diff) | |
parent | 95f2a8fa83b6ae26734d6fe88fae9570a25fb4e8 (diff) |
Merge pull request #8573 from mono/backport-pr-8470-to-release-8.2-xcode11
[release-8.2-xcode11] [AutoTest] Add logging in NSObjectResult.SetActiveRuntime to trace source of NRE
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs index 6ceb7b0fb0..e4fa46275d 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Components.AutoTest.Results/NSObjectResult.cs @@ -361,10 +361,15 @@ namespace MonoDevelop.Components.AutoTest.Results Type type = ResultObject.GetType (); PropertyInfo pinfo = type.GetProperty ("RuntimeModel"); if (pinfo == null) { + LoggingService.LogDebug ($"Could not find 'RuntimeModel' property on {type}"); return false; } - IEnumerable<IRuntimeModel> model = (IEnumerable<IRuntimeModel>)pinfo.GetValue (ResultObject, null); + var pObject = pinfo.GetValue (ResultObject, null); + LoggingService.LogDebug ($"'RuntimeModel' property on '{type}' is '{pObject}' and is of type '{pinfo.PropertyType}'"); + var topRunTimeModels = (IEnumerable<IRuntimeModel>)pObject; + var model = AllRuntimes (topRunTimeModels); + model = model.Where (x => !x.IsSeparator); var runtime = model.FirstOrDefault (r => { var mutableModel = r.GetMutableModel (); @@ -407,6 +412,16 @@ namespace MonoDevelop.Components.AutoTest.Results } return false; } + + IEnumerable<IRuntimeModel> AllRuntimes (IEnumerable<IRuntimeModel> runtimes) + { + foreach (var runtime in runtimes) { + yield return runtime; + foreach (var childRuntime in AllRuntimes (runtime.Children)) + yield return childRuntime; + } + } + #endregion protected override void Dispose (bool disposing) |