Skip to content

Commit

Permalink
Eventlistener will no longer send single spaces when the test output …
Browse files Browse the repository at this point in the history
…is empty or just whitespace #516
  • Loading branch information
OsirisTerje committed Jun 23, 2018
1 parent 3697624 commit 835a9f7
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 24 deletions.
20 changes: 20 additions & 0 deletions src/NUnitTestAdapter/Internal/Extensions.cs
@@ -0,0 +1,20 @@
using System;

namespace NUnit.VisualStudio.TestAdapter.Internal
{
#if NET35

public static class TypeExtensions
{
public static Type GetTypeInfo(this Type type) => type;
}
#endif
public static class StringExtensions
{
public static bool IsNullOrWhiteSpace(this string value)
{
return value == null || value.Trim().Length == 0;
}
}
}

11 changes: 0 additions & 11 deletions src/NUnitTestAdapter/Internal/TypeExtensions.cs

This file was deleted.

23 changes: 10 additions & 13 deletions src/NUnitTestAdapter/NUnitEventListener.cs
@@ -1,5 +1,5 @@
// ***********************************************************************
// Copyright (c) 2011-2015 Charlie Poole, Terje Sandstrom
// Copyright (c) 2011-2018 Charlie Poole, Terje Sandstrom
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
Expand All @@ -22,7 +22,6 @@
// ***********************************************************************

using System;
using System.Collections.Generic;
#if !NETCOREAPP1_0
using System.Runtime.Remoting;
#endif
Expand All @@ -32,7 +31,7 @@
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;
using NUnit.Engine;
using NUnit.VisualStudio.TestAdapter.Dump;
using TestResult = Microsoft.VisualStudio.TestPlatform.ObjectModel.TestResult;
using NUnit.VisualStudio.TestAdapter.Internal;

namespace NUnit.VisualStudio.TestAdapter
{
Expand Down Expand Up @@ -156,16 +155,15 @@ public void TestFinished(XmlNode resultNode)
public void SuiteFinished(XmlNode resultNode)
{
var result = resultNode.GetAttribute("result");
var label = resultNode.GetAttribute("label");
var site = resultNode.GetAttribute("site");

if (result == "Failed")
{
if (site == "SetUp" || site == "TearDown")
{
_recorder.SendMessage(
TestMessageLevel.Warning,
string.Format("{0} failed for test fixture {1}", site, resultNode.GetAttribute("fullname")));
$"{site} failed for test fixture {resultNode.GetAttribute("fullname")}");

var messageNode = resultNode.SelectSingleNode("failure/message");
if (messageNode != null)
Expand All @@ -180,22 +178,21 @@ public void SuiteFinished(XmlNode resultNode)

private static readonly string NL = Environment.NewLine;
private static readonly int NL_LENGTH = NL.Length;
private IDumpXml dumpXml;
private readonly IDumpXml dumpXml;

public void TestOutput(XmlNode outputNode)
{
var testName = outputNode.GetAttribute("testname");
var stream = outputNode.GetAttribute("stream");
var text = outputNode.InnerText;

// Remove final newline since logger will add one
if (text.EndsWith(NL))
text = text.Substring(0, text.Length - NL_LENGTH);

// An empty message will cause SendMessage to throw
if (text.Length == 0) text = " ";

_recorder.SendMessage(TestMessageLevel.Warning, text);
if (text.IsNullOrWhiteSpace())
{
return;
}
_recorder.SendMessage(TestMessageLevel.Warning, text);
}
}
}
57 changes: 57 additions & 0 deletions src/NUnitTestAdapterTests/ExtensionsTests.cs
@@ -0,0 +1,57 @@
// ***********************************************************************
// Copyright (c) 2018 Charlie Poole, Terje Sandstrom
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
// ***********************************************************************

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;
using NUnit.VisualStudio.TestAdapter.Internal;

namespace NUnit.VisualStudio.TestAdapter.Tests
{
#if !NETCOREAPP1_0
public class ExtensionsTests
{
[TestCase("\t\t\t")]
[TestCase(" \t")]
[TestCase(" ")]
[TestCase("")]
public void ThatIsNullOrWhiteSpaceHandlesTabs(string value)
{
var res = StringExtensions.IsNullOrWhiteSpace(value);
Assert.That(res);
}

[TestCase("\t42")]
[TestCase(" 42")]
[TestCase("42\n\r")]
public void ThatIsNullOrWhiteSpaceHandlesNonWhiteSpace(string value)
{
var res = StringExtensions.IsNullOrWhiteSpace(value);
Assert.That(res, Is.False);
}
}
#endif
}

0 comments on commit 835a9f7

Please sign in to comment.