From 993bed02b798e27d4e143dc753766fe7ee6bfd91 Mon Sep 17 00:00:00 2001 From: Bryce Shurts Date: Sun, 19 May 2019 18:01:13 -0500 Subject: [PATCH] Adding tests for new log file tokens --- .gitignore | 4 +- .../NUnitXmlTestLogger.cs | 1 + .../DotnetTestFixture.cs | 28 ++++++----- ...Unit.Xml.TestLogger.AcceptanceTests.csproj | 2 + .../NUnitTestLoggerAcceptanceTests.cs | 2 +- .../NUnitTestLoggerPathTests.cs | 50 +++++++++++++++++++ ...NUnit.Xml.TestLogger.NetMulti.Tests.csproj | 32 ++++++++++++ 7 files changed, 103 insertions(+), 16 deletions(-) create mode 100644 test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerPathTests.cs create mode 100644 test/assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj diff --git a/.gitignore b/.gitignore index b2d1fa1..a33655b 100644 --- a/.gitignore +++ b/.gitignore @@ -29,7 +29,7 @@ msbuild*.err build*.log build*.wrn build*.err -loggerFile.xml +*loggerFile.xml # MSTest test Results [Tt]est[Rr]esult*/ @@ -103,4 +103,4 @@ nugetPackage .idea # Test results -test/**/test-results.xml +test/**/*test-results.xml diff --git a/src/NUnit.Xml.TestLogger/NUnitXmlTestLogger.cs b/src/NUnit.Xml.TestLogger/NUnitXmlTestLogger.cs index 3f04242..f3fe635 100644 --- a/src/NUnit.Xml.TestLogger/NUnitXmlTestLogger.cs +++ b/src/NUnit.Xml.TestLogger/NUnitXmlTestLogger.cs @@ -479,6 +479,7 @@ private static string OutcomeToString(TestOutcome outcome) private void InitializeImpl(TestLoggerEvents events, string outputPath) { events.TestRunMessage += this.TestMessageHandler; + events.TestRunStart += this.TestRunStartHandler; events.TestResult += this.TestResultHandler; events.TestRunComplete += this.TestRunCompleteHandler; diff --git a/test/NUnit.Xml.TestLogger.AcceptanceTests/DotnetTestFixture.cs b/test/NUnit.Xml.TestLogger.AcceptanceTests/DotnetTestFixture.cs index dbf0cc4..fcab2fa 100644 --- a/test/NUnit.Xml.TestLogger.AcceptanceTests/DotnetTestFixture.cs +++ b/test/NUnit.Xml.TestLogger.AcceptanceTests/DotnetTestFixture.cs @@ -9,11 +9,7 @@ namespace NUnit.Xml.TestLogger.AcceptanceTests public class DotnetTestFixture { - public static string RootDirectory - { - get - { - return Path.GetFullPath( + public static string RootDirectory { get; set; } = Path.GetFullPath( Path.Combine( Environment.CurrentDirectory, "..", @@ -22,8 +18,8 @@ public static string RootDirectory "..", "assets", "NUnit.Xml.TestLogger.NetCore.Tests")); - } - } + + public static string TestAssemblyName { get; set; } = "NUnit.Xml.TestLogger.NetCore.Tests.dll"; public static string TestAssembly { @@ -34,20 +30,26 @@ public static string TestAssembly #else var config = "Release"; #endif - return Path.Combine(RootDirectory, "bin", config, "netcoreapp2.0", "NUnit.Xml.TestLogger.NetCore.Tests.dll"); + return Path.Combine(RootDirectory, "bin", config, "netcoreapp2.0", TestAssemblyName); } } - public static void Execute() + public static void Execute(string resultsFile) { var testProject = RootDirectory; - var testLogger = $"--logger:\"nunit;LogFilePath=test-results.xml\""; + var testLogger = $"--logger:\"nunit;LogFilePath={resultsFile}\""; // Delete stale results file - var testLogFile = Path.Combine(testProject, "test-results.xml"); - if (File.Exists(testLogFile)) + var testLogFile = Path.Combine(testProject, resultsFile); + + // Strip out tokens + var sanitizedResultFile = System.Text.RegularExpressions.Regex.Replace(resultsFile, @"{.*}\.*", string.Empty); + foreach (string fileName in Directory.GetFiles(testProject)) { - File.Delete(testLogFile); + if (fileName.Contains("test-results.xml")) + { + File.Delete(fileName); + } } // Log the contents of test output directory. Useful to verify if the logger is copied diff --git a/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnit.Xml.TestLogger.AcceptanceTests.csproj b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnit.Xml.TestLogger.AcceptanceTests.csproj index 24b6b64..569dfc6 100644 --- a/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnit.Xml.TestLogger.AcceptanceTests.csproj +++ b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnit.Xml.TestLogger.AcceptanceTests.csproj @@ -18,12 +18,14 @@ $(MSBuildThisFileDirectory)../assets/NuGet.$(Configuration).config $(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetFull.Tests/NUnit.Xml.TestLogger.NetFull.Tests.csproj $(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetCore.Tests/NUnit.Xml.TestLogger.NetCore.Tests.csproj + $(MSBuildThisFileDirectory)../assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj + diff --git a/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerAcceptanceTests.cs b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerAcceptanceTests.cs index 66c06e4..a4507d7 100644 --- a/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerAcceptanceTests.cs +++ b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerAcceptanceTests.cs @@ -25,7 +25,7 @@ public NUnitTestLoggerAcceptanceTests() [ClassInitialize] public static void SuiteInitialize(TestContext context) { - DotnetTestFixture.Execute(); + DotnetTestFixture.Execute("test-results.xml"); } [TestMethod] diff --git a/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerPathTests.cs b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerPathTests.cs new file mode 100644 index 0000000..9a18e71 --- /dev/null +++ b/test/NUnit.Xml.TestLogger.AcceptanceTests/NUnitTestLoggerPathTests.cs @@ -0,0 +1,50 @@ +// Copyright (c) Spekt Contributors. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. + +namespace NUnit.Xml.TestLogger.AcceptanceTests +{ + using System; + using System.IO; + using System.Linq; + using System.Xml.Linq; + using System.Xml.XPath; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class NUnitTestLoggerPathTests + { + public NUnitTestLoggerPathTests() + { + } + + [ClassInitialize] + public static void SuiteInitialize(TestContext context) + { + DotnetTestFixture.RootDirectory = Path.GetFullPath( + Path.Combine( + Environment.CurrentDirectory, + "..", + "..", + "..", + "..", + "assets", + "NUnit.Xml.TestLogger.NetMulti.Tests")); + DotnetTestFixture.TestAssemblyName = "NUnit.Xml.TestLogger.NetMulti.Tests.dll"; + DotnetTestFixture.Execute("{assembly}.{framework}.test-results.xml"); + } + + [TestMethod] + public void TestRunWithLoggerAndFilePathShouldCreateResultsFile() + { + string[] expectedResultsFiles = new string[] + { + Path.Combine(DotnetTestFixture.RootDirectory, "NUnit.Xml.TestLogger.NetMulti.Tests.NetFramework46.test-results.xml"), + Path.Combine(DotnetTestFixture.RootDirectory, "NUnit.Xml.TestLogger.NetMulti.Tests.NetCoreApp20.test-results.xml") + }; + foreach (string resultsFile in expectedResultsFiles) + { + Assert.IsTrue(File.Exists(resultsFile), $"{resultsFile} does not exist."); + } + } + } +} diff --git a/test/assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj b/test/assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj new file mode 100644 index 0000000..1911390 --- /dev/null +++ b/test/assets/NUnit.Xml.TestLogger.NetMulti.Tests/NUnit.Xml.TestLogger.NetMulti.Tests.csproj @@ -0,0 +1,32 @@ + + + + ..\..\..\ + + + + + net46;netcoreapp2.0 + /usr/lib/mono/4.5/ + + + false + + + + + + + + + + + + UnitTest1.cs + + + UnitTest2.cs + + + +