From a0c459a5fc46ac1d906ed2a6b03ff3db9d3b4f2d Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Fri, 27 Sep 2019 16:07:36 +0530 Subject: [PATCH 1/6] added logprefix --- .../Constants.cs | 7 +++++- .../HtmlLogger.cs | 22 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Constants.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Constants.cs index fb91883432..1c0ac5394e 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Constants.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Constants.cs @@ -51,7 +51,12 @@ public static class Constants /// /// Log file parameter key /// - public const string LogFileNameKey = "LogFileName"; + public const string LogFileNameKey = "LogFileName"; + + /// + /// Log file prefix parameter key + /// + public const string LogFilePrefixKey = "LogFilePrefix"; public static readonly TestProperty ExecutionIdProperty = TestProperty.Register("ExecutionId", ExecutionIdPropertyIdentifier, typeof(Guid), TestPropertyAttributes.Hidden, typeof(TestResult)); diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs index 482f9408b0..d9e65470b9 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs @@ -22,6 +22,7 @@ namespace Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger using HtmlResource = Resources.Resources; using HtmlLoggerConstants = Constants; + using NuGet.Frameworks; /// /// Logger for generating Html. @@ -153,7 +154,7 @@ public void TestMessageHandler(object sender, TestRunMessageEventArgs e) switch (e.Level) { case TestMessageLevel.Informational: - if(TestRunDetails.RunLevelMessageInformational == null) + if (TestRunDetails.RunLevelMessageInformational == null) { TestRunDetails.RunLevelMessageInformational = new List(); } @@ -273,11 +274,20 @@ public void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) PassPercentage = (PassedTests * 100) / TotalTests, TotalRunTime = GetFormattedDurationString(e.ElapsedTimeInRunningTests), }; - var isLogFileNameParameterExists = parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFileNameKey, - out string logFileNameValue); - if (isLogFileNameParameterExists && !string.IsNullOrWhiteSpace(logFileNameValue)) + + if (this.parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFilePrefixKey, out string logFilePrefixValue) && !string.IsNullOrWhiteSpace(logFilePrefixValue)) + { + + var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework] ?? string.Empty; + logFilePrefixValue = logFilePrefixValue.Replace(".html", string.Empty) + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; + this.HtmlFilePath = Path.Combine(TestResultsDirPath, logFilePrefixValue); + } + else { - HtmlFilePath = Path.Combine(TestResultsDirPath, logFileNameValue); + if (parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFileNameKey, out string logFileNameValue) && !string.IsNullOrWhiteSpace(logFileNameValue)) + { + HtmlFilePath = Path.Combine(TestResultsDirPath, logFileNameValue); + } } PopulateHtmlFile(); @@ -410,7 +420,7 @@ internal string GetFormattedDurationString(TimeSpan duration) time.Add(duration.Milliseconds + "ms"); } } - } + } return time.Count == 0 ? "< 1ms" : string.Join(" ", time); } From e72d0445591ada0f02098ec8d369cbc242d2f542 Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Mon, 30 Sep 2019 19:19:03 +0530 Subject: [PATCH 2/6] tests added --- .../HtmlLogger.cs | 1 + .../HtmlLoggerTests.cs | 58 ++++++++++++++++++- 2 files changed, 58 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs index d9e65470b9..c7623a84cd 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs @@ -279,6 +279,7 @@ public void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) { var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework] ?? string.Empty; + framework = NuGetFramework.Parse(framework).GetShortFolderName(); logFilePrefixValue = logFilePrefixValue.Replace(".html", string.Empty) + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; this.HtmlFilePath = Path.Combine(TestResultsDirPath, logFilePrefixValue); } diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs index 9590a45617..6fb0b25c9e 100644 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs @@ -401,7 +401,7 @@ public void TestCompleteHandlerShouldKeepTackOfSummary() } [TestMethod] - public void TestCompleteHandlerShouldCreateCustumHtmlFileNameIfParameterDirectoryIsNull() + public void TestCompleteHandlerShouldCreateCustumHtmlFileNamewithLogFileNameKey() { var parameters = new Dictionary(); parameters[HtmlLoggerConstants.LogFileNameKey] = null; @@ -417,6 +417,62 @@ public void TestCompleteHandlerShouldCreateCustumHtmlFileNameIfParameterDirector Assert.IsTrue(this.htmlLogger.HtmlFilePath.Contains("TestResult")); } + [TestMethod] + public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefix() + { + var parameters = new Dictionary(); + parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample.html"; + parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; + parameters[DefaultLoggerParameterNames.TargetFramework] = "net451"; + + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + + this.htmlLogger.Initialize(new Mock().Object, parameters); + this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + Assert.IsTrue(this.htmlLogger.HtmlFilePath.Contains("sample_net451")); + } + + [TestMethod] + public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefixNull() + { + var parameters = new Dictionary(); + parameters[HtmlLoggerConstants.LogFilePrefixKey] = null; + parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; + parameters[DefaultLoggerParameterNames.TargetFramework] = "net451"; + + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + + this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => + { + }).Returns(new Mock().Object); + + this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + + this.mockFileHelper.Verify(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite), Times.Once); + } + + [TestMethod] + public void TestCompleteHandlerShouldThrowExceptionWithLogPrefixIfTargetFrameworkKeyIsNotPresent() + { + var parameters = new Dictionary(); + parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample.html"; + parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + + this.htmlLogger.Initialize(new Mock().Object, parameters); + + Assert.ThrowsException(() => this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero))); + } + [TestMethod] public void TestCompleteHandlerShouldCreateFileCorrectly() { From dffe5011c3bb0d7af5ed8fc3fa35d7d3abd8ce54 Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Tue, 1 Oct 2019 16:38:00 +0530 Subject: [PATCH 3/6] added error when both logfileprefix and logfilevalue is given --- .../HtmlLogger.cs | 22 +++++++++--- .../Resources/Resources.Designer.cs | 11 +++++- .../Resources/Resources.resx | 3 ++ .../Resources/xlf/Resources.cs.xlf | 5 +++ .../Resources/xlf/Resources.de.xlf | 5 +++ .../Resources/xlf/Resources.es.xlf | 5 +++ .../Resources/xlf/Resources.fr.xlf | 5 +++ .../Resources/xlf/Resources.it.xlf | 5 +++ .../Resources/xlf/Resources.ja.xlf | 5 +++ .../Resources/xlf/Resources.ko.xlf | 5 +++ .../Resources/xlf/Resources.pl.xlf | 5 +++ .../Resources/xlf/Resources.pt-BR.xlf | 5 +++ .../Resources/xlf/Resources.ru.xlf | 5 +++ .../Resources/xlf/Resources.tr.xlf | 5 +++ .../Resources/xlf/Resources.xlf | 5 +++ .../Resources/xlf/Resources.zh-Hans.xlf | 5 +++ .../Resources/xlf/Resources.zh-Hant.xlf | 5 +++ .../TrxLogger.cs | 9 +++-- .../HtmlLoggerTests.cs | 35 ++++++++++++------- .../TrxLoggerTests.cs | 1 - 20 files changed, 130 insertions(+), 21 deletions(-) diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs index c7623a84cd..8a641123af 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs @@ -138,6 +138,16 @@ public void Initialize(TestLoggerEvents events, Dictionary param } parametersDictionary = parameters; + + if (parameters.TryGetValue(HtmlLoggerConstants.LogFilePrefixKey, out string logFilePrefixValue) && parameters.TryGetValue(HtmlLoggerConstants.LogFileNameKey, out string logFileNameValue)) + { + var htmlParameterErrorMsg = string.Format(CultureInfo.CurrentCulture, + HtmlResource.PrefixAndNameProvidedError); + + EqtTrace.Error(htmlParameterErrorMsg); + throw new ArgumentException(htmlParameterErrorMsg); + } + this.Initialize(events, parameters[DefaultLoggerParameterNames.TestRunDirectory]); } @@ -278,16 +288,20 @@ public void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) if (this.parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFilePrefixKey, out string logFilePrefixValue) && !string.IsNullOrWhiteSpace(logFilePrefixValue)) { - var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework] ?? string.Empty; - framework = NuGetFramework.Parse(framework).GetShortFolderName(); - logFilePrefixValue = logFilePrefixValue.Replace(".html", string.Empty) + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; + var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework]; + if (framework != null) + { + framework = NuGetFramework.Parse(framework).GetShortFolderName(); + } + + logFilePrefixValue = logFilePrefixValue + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; this.HtmlFilePath = Path.Combine(TestResultsDirPath, logFilePrefixValue); } else { if (parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFileNameKey, out string logFileNameValue) && !string.IsNullOrWhiteSpace(logFileNameValue)) { - HtmlFilePath = Path.Combine(TestResultsDirPath, logFileNameValue); + this.HtmlFilePath = Path.Combine(TestResultsDirPath, logFileNameValue); } } diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.Designer.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.Designer.cs index 9c2bc33784..4c39a8ad6e 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.Designer.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.Designer.cs @@ -19,7 +19,7 @@ namespace Microsoft.VisualStudio.TestPlatform.Extensions.HtmlLogger.Resources { // class via a tool like ResGen or Visual Studio. // To add or remove a member, edit your .ResX file then rerun ResGen // with the /str option, or rebuild your VS project. - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] internal class Resources { @@ -77,5 +77,14 @@ internal static string HtmlLoggerError { return ResourceManager.GetString("HtmlLoggerError", resourceCulture); } } + + /// + /// Looks up a localized string similar to The parameters LogFileName and LogFilePrefix cannot be given together.. + /// + internal static string PrefixAndNameProvidedError { + get { + return ResourceManager.GetString("PrefixAndNameProvidedError", resourceCulture); + } + } } } diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.resx b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.resx index a176fb3154..8182657a80 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.resx +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/Resources.resx @@ -123,4 +123,7 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.cs.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.cs.xlf index e2c74fb485..9c35d137af 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.cs.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.cs.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.de.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.de.xlf index e619713ab4..e4e5775c07 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.de.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.de.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.es.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.es.xlf index e30f3238c0..1a20c91052 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.es.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.es.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.fr.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.fr.xlf index 77bccce168..dbd55eaf4a 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.fr.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.fr.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.it.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.it.xlf index e83fa1c5f4..ae97c425a4 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.it.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.it.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ja.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ja.xlf index b3b8dc2b79..21a82ea585 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ja.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ja.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ko.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ko.xlf index 1dbd75ab78..9d0392a0fe 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ko.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ko.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pl.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pl.xlf index 883494b43d..47523fea29 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pl.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pl.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pt-BR.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pt-BR.xlf index 80661f59cd..06e655db74 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pt-BR.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.pt-BR.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ru.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ru.xlf index 5b5d8d6dd8..da9d2b16d3 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ru.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.ru.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.tr.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.tr.xlf index 91e49c75ca..34166be4b2 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.tr.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.tr.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf index 5d613ff35f..7ac0207fec 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.xlf @@ -12,6 +12,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hans.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hans.xlf index abf17ca586..3eb50ce456 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hans.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hans.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hant.xlf b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hant.xlf index 3f148c56dd..d14245ee45 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hant.xlf +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/Resources/xlf/Resources.zh-Hant.xlf @@ -30,6 +30,11 @@ Html Logger Error : {0} + + The parameters LogFileName and LogFilePrefix cannot be given together. + The parameters LogFileName and LogFilePrefix cannot be given together. + + \ No newline at end of file diff --git a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs index f553556a24..9564d620ce 100644 --- a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs @@ -489,10 +489,13 @@ private void DeriveTrxFilePath() { if (!string.IsNullOrWhiteSpace(logFilePrefixValue)) { - var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework] ?? string.Empty; - framework = NuGetFramework.Parse(framework).GetShortFolderName(); + var framework = this.parametersDictionary[DefaultLoggerParameterNames.TargetFramework]; + if (framework != null) + { + framework = NuGetFramework.Parse(framework).GetShortFolderName(); + } - logFilePrefixValue = logFilePrefixValue.Replace(".trx", string.Empty) + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + this.trxFileExtension; + logFilePrefixValue = logFilePrefixValue + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + this.trxFileExtension; this.trxFilePath = Path.Combine(this.testResultsDirPath, logFilePrefixValue); return; diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs index 6fb0b25c9e..15dc6e7e35 100644 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs @@ -118,7 +118,7 @@ public void TestMessageHandlerShouldAddMessageWhenItIsInformation() [TestMethod] public void TestMessageHandlerShouldNotInitializelistForInformationErrorAndWarningMessages() { - Assert.AreEqual(this.htmlLogger.TestRunDetails.RunLevelMessageInformational,null); + Assert.AreEqual(this.htmlLogger.TestRunDetails.RunLevelMessageInformational, null); Assert.AreEqual(this.htmlLogger.TestRunDetails.RunLevelMessageErrorAndWarning, null); } @@ -162,7 +162,7 @@ public void TestResultHandlerShouldKeepTrackOfTotalResult() { var passTestCase1 = CreateTestCase("Pass1"); var passResult1 = new ObjectModel.TestResult(passTestCase1) { Outcome = TestOutcome.Passed }; - + this.htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); Assert.AreEqual(this.htmlLogger.TotalTests, 1, "Total Tests"); @@ -171,7 +171,7 @@ public void TestResultHandlerShouldKeepTrackOfTotalResult() [TestMethod] public void TestResultHandlerShouldKeepTrackOfPassedResult() { - var passTestCase2 = CreateTestCase("Pass2"); + var passTestCase2 = CreateTestCase("Pass2"); var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; this.htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); @@ -182,7 +182,7 @@ public void TestResultHandlerShouldKeepTrackOfPassedResult() [TestMethod] public void TestResultHandlerShouldKeepTrackOfSkippedResult() { - + var skipTestCase1 = CreateTestCase("Skip1"); var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; @@ -202,7 +202,7 @@ public void TestResultHandlerShouldSetDisplayNameIfDisplayNameIsNull() TestCase = { FullyQualifiedName = "abc" } }; - this.htmlLogger.TestResultHandler(new object(),new Mock(passTestResultExpected).Object); + this.htmlLogger.TestResultHandler(new object(), new Mock(passTestResultExpected).Object); Assert.AreEqual("abc", this.htmlLogger.TestRunDetails.ResultCollectionList.First().ResultList.First().DisplayName); } @@ -265,7 +265,7 @@ public void GetFormattedDurationStringShouldGiveCorrectFormat() TimeSpan ts3 = new TimeSpan(0, 0, 1, 0, 1); Assert.AreEqual(htmlLogger.GetFormattedDurationString(ts3), "1m"); -; + ; TimeSpan ts4 = new TimeSpan(0, 1, 0, 2, 3); Assert.AreEqual(htmlLogger.GetFormattedDurationString(ts4), "1h"); @@ -380,7 +380,7 @@ public void TestCompleteHandlerShouldKeepTackOfSummary() var passResult2 = new ObjectModel.TestResult(passTestCase2) { Outcome = TestOutcome.Passed }; var failResult1 = new ObjectModel.TestResult(failTestCase1) { Outcome = TestOutcome.Failed }; var skipResult1 = new ObjectModel.TestResult(skipTestCase1) { Outcome = TestOutcome.Skipped }; - + this.htmlLogger.TestResultHandler(new object(), new Mock(passResult1).Object); this.htmlLogger.TestResultHandler(new object(), new Mock(passResult2).Object); this.htmlLogger.TestResultHandler(new object(), new Mock(failResult1).Object); @@ -421,9 +421,9 @@ public void TestCompleteHandlerShouldCreateCustumHtmlFileNamewithLogFileNameKey( public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefix() { var parameters = new Dictionary(); - parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample.html"; + parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample"; parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - parameters[DefaultLoggerParameterNames.TargetFramework] = "net451"; + parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; var testCase1 = CreateTestCase("TestCase1"); var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; @@ -441,11 +441,11 @@ public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefixNull() var parameters = new Dictionary(); parameters[HtmlLoggerConstants.LogFilePrefixKey] = null; parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; - parameters[DefaultLoggerParameterNames.TargetFramework] = "net451"; + parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; var testCase1 = CreateTestCase("TestCase1"); var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; - var resultEventArg1 = new Mock(result1); + var resultEventArg1 = new Mock(result1); this.mockFileHelper.Setup(x => x.GetStream(It.IsAny(), FileMode.Create, FileAccess.ReadWrite)).Callback((x, y, z) => { @@ -473,6 +473,17 @@ public void TestCompleteHandlerShouldThrowExceptionWithLogPrefixIfTargetFramewor Assert.ThrowsException(() => this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero))); } + [TestMethod] + public void IntializeShouldThrowExceptionIfBothPrefixAndNameProvided() + { + this.parameters[HtmlLoggerConstants.LogFileNameKey] = "results.html"; + var trxPrefix = Path.Combine(Path.GetTempPath(), "results"); + this.parameters[HtmlLoggerConstants.LogFilePrefixKey] = "HtmlPrefix"; + this.parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + + Assert.ThrowsException(() => this.htmlLogger.Initialize(events.Object, this.parameters)); + } + [TestMethod] public void TestCompleteHandlerShouldCreateFileCorrectly() { @@ -554,5 +565,5 @@ private static TestCase CreateTestCase(string testCaseName) - + diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs index fa8fd8907e..a4a1affa9d 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs @@ -712,7 +712,6 @@ private void ValidateDateTimeInTrx(string trxFileName) [TestMethod] [DataRow("results")] - [DataRow("results.trx")] public void CustomTrxFileNameShouldBeConstructedFromRelativeLogFilePrefixParameter(string prefixName) { this.parameters.Remove(TrxLoggerConstants.LogFileNameKey); From 5c01fc5bb94a30da0e9216f89f573f0cdbcf4e28 Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Thu, 3 Oct 2019 10:19:37 +0530 Subject: [PATCH 4/6] filename edited when target framework is null --- .../HtmlLogger.cs | 3 ++- .../HtmlLoggerTests.cs | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs index 8a641123af..f798a0d5ec 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs @@ -292,9 +292,10 @@ public void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) if (framework != null) { framework = NuGetFramework.Parse(framework).GetShortFolderName(); + logFilePrefixValue = logFilePrefixValue + "_" + framework; } - logFilePrefixValue = logFilePrefixValue + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; + logFilePrefixValue = logFilePrefixValue + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + $".{HtmlLoggerConstants.HtmlFileExtension}"; this.HtmlFilePath = Path.Combine(TestResultsDirPath, logFilePrefixValue); } else diff --git a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs index 15dc6e7e35..3933ae0774 100644 --- a/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.HtmlLogger.UnitTests/HtmlLoggerTests.cs @@ -430,6 +430,24 @@ public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefix() var resultEventArg1 = new Mock(result1); this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + this.htmlLogger.Initialize(new Mock().Object, parameters); + this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); + Assert.IsFalse(this.htmlLogger.HtmlFilePath.Contains("__")); + } + + [TestMethod] + public void TestCompleteHandlerShouldCreateCustumHtmlFileNameWithLogPrefixIfTargetFrameworkIsNull() + { + var parameters = new Dictionary(); + parameters[HtmlLoggerConstants.LogFilePrefixKey] = "sample"; + parameters[DefaultLoggerParameterNames.TestRunDirectory] = "dsa"; + parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETFramework,Version=4.5.1"; + + var testCase1 = CreateTestCase("TestCase1"); + var result1 = new ObjectModel.TestResult(testCase1) { Outcome = TestOutcome.Failed }; + var resultEventArg1 = new Mock(result1); + this.htmlLogger.TestResultHandler(new object(), resultEventArg1.Object); + this.htmlLogger.Initialize(new Mock().Object, parameters); this.htmlLogger.TestRunCompleteHandler(new object(), new TestRunCompleteEventArgs(null, false, true, null, null, TimeSpan.Zero)); Assert.IsTrue(this.htmlLogger.HtmlFilePath.Contains("sample_net451")); From 8a56d48210c7bb21795e7a425b1a9f04ba6c6011 Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Fri, 4 Oct 2019 16:10:14 +0530 Subject: [PATCH 5/6] formatted --- .../HtmlLogger.cs | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs index f798a0d5ec..4523f7519e 100644 --- a/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.HtmlLogger/HtmlLogger.cs @@ -141,11 +141,9 @@ public void Initialize(TestLoggerEvents events, Dictionary param if (parameters.TryGetValue(HtmlLoggerConstants.LogFilePrefixKey, out string logFilePrefixValue) && parameters.TryGetValue(HtmlLoggerConstants.LogFileNameKey, out string logFileNameValue)) { - var htmlParameterErrorMsg = string.Format(CultureInfo.CurrentCulture, - HtmlResource.PrefixAndNameProvidedError); - + var htmlParameterErrorMsg = string.Format(CultureInfo.CurrentCulture, HtmlResource.PrefixAndNameProvidedError); EqtTrace.Error(htmlParameterErrorMsg); - throw new ArgumentException(htmlParameterErrorMsg); + throw new ArgumentException(htmlParameterErrorMsg); } this.Initialize(events, parameters[DefaultLoggerParameterNames.TestRunDirectory]); @@ -284,7 +282,6 @@ public void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) PassPercentage = (PassedTests * 100) / TotalTests, TotalRunTime = GetFormattedDurationString(e.ElapsedTimeInRunningTests), }; - if (this.parametersDictionary.TryGetValue(HtmlLoggerConstants.LogFilePrefixKey, out string logFilePrefixValue) && !string.IsNullOrWhiteSpace(logFilePrefixValue)) { From fc35261653161e17bc7b4d7b532637a646b06ba1 Mon Sep 17 00:00:00 2001 From: vineeth Hanumanthu Date: Tue, 22 Oct 2019 14:55:16 +0530 Subject: [PATCH 6/6] added framework null case in trxlogger --- src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs index 9564d620ce..121db656c1 100644 --- a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs @@ -493,11 +493,11 @@ private void DeriveTrxFilePath() if (framework != null) { framework = NuGetFramework.Parse(framework).GetShortFolderName(); + logFilePrefixValue = logFilePrefixValue + "_" + framework; } - logFilePrefixValue = logFilePrefixValue + "_" + framework + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + this.trxFileExtension; + logFilePrefixValue = logFilePrefixValue + DateTime.Now.ToString("_yyyyMMddHHmmss", DateTimeFormatInfo.InvariantInfo) + this.trxFileExtension; this.trxFilePath = Path.Combine(this.testResultsDirPath, logFilePrefixValue); - return; } }