From 2fdccb3e39fe45de54575939912551a35c00cbba Mon Sep 17 00:00:00 2001 From: Dmytro Ovcharov Date: Thu, 23 Nov 2017 13:24:05 +0200 Subject: Now UnitTestPad shows error from runner xml data. --- .../NUnitAssemblyTestSuite.cs | 6 ++++-- .../NUnit3Runner/NUnitTestRunner.cs | 20 +++++++++++++++++++- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'main/src/addins/MonoDevelop.UnitTesting.NUnit') diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs index d018440022..4429551d76 100644 --- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs +++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/MonoDevelop.UnitTesting.NUnit/NUnitAssemblyTestSuite.cs @@ -207,6 +207,8 @@ namespace MonoDevelop.UnitTesting.NUnit ld.TestInfoCachePath = cacheLoaded ? null : TestInfoCachePath; ld.Callback = delegate { Runtime.RunInMainThread (delegate { + if (ld.Error != null) + this.ReferenceErrorMessage = ld.Error.Message; AsyncCreateTests (ld); }); }; @@ -333,8 +335,8 @@ namespace MonoDevelop.UnitTesting.NUnit ld.Info = runner.GetTestInfo (ld.Path, ld.SupportAssemblies).Result; } } catch (Exception ex) { - Console.WriteLine (ex); - ld.Error = ex; + Console.WriteLine (ex.InnerException); + ld.Error = ex.InnerException; } finally { try { diff --git a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs index 2c78d0e9ac..3aae642231 100644 --- a/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs +++ b/main/src/addins/MonoDevelop.UnitTesting.NUnit/NUnit3Runner/NUnitTestRunner.cs @@ -36,6 +36,7 @@ using NUnit.Engine; using System.Xml; using MonoDevelop.Core.Execution; using MonoDevelop.UnitTesting.NUnit; +using System.Text.RegularExpressions; namespace NUnit3Runner { @@ -136,11 +137,28 @@ namespace NUnit3Runner var tr = engine.GetRunner (package); var r = tr.Explore (TestFilter.Empty); var root = r.SelectSingleNode ("test-suite") as XmlElement; - if (root != null) + + if (root != null) { + if(CheckXmlForError (root, out string errorString)) + throw new Exception (errorString); return BuildTestInfo (root); + } else return null; } + + bool CheckXmlForError(XmlElement root, out string result) + { + var elements = root.GetElementsByTagName ("properties"); + var skipReasonString = string.Empty; + foreach (XmlElement element in elements) + //Reason why i parse InnerXml - GetAttribute returns empty strings + if (element.InnerXml.Contains ("name=\"_SKIPREASON\"")) + skipReasonString = (Regex.Match (element.InnerXml, "value=\"(.+?)\"") + .ToString ().Substring (6).Trim ('\"')); + result = skipReasonString; + return !string.IsNullOrEmpty (skipReasonString); + } internal NunitTestInfo BuildTestInfo (XmlElement test) { -- cgit v1.2.3