diff --git a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs index 2518d53e9c..545531f35a 100644 --- a/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.TrxLogger/TrxLogger.cs @@ -536,7 +536,18 @@ private string SetDefaultTrxFilePath() TPDebug.Assert(LoggerTestRun != null, "LoggerTestRun is null"); TPDebug.Assert(LoggerTestRun.RunConfiguration != null, "LoggerTestRun.RunConfiguration is null"); TPDebug.Assert(IsInitialized, "Logger is not initialized"); - var defaultTrxFileName = LoggerTestRun.RunConfiguration.RunDeploymentRootDirectory + ".trx"; + + var baseName = LoggerTestRun.RunConfiguration.RunDeploymentRootDirectory; + + if (_parametersDictionary is not null + && _parametersDictionary.TryGetValue(DefaultLoggerParameterNames.TargetFramework, out var framework) + && !framework.IsNullOrWhiteSpace()) + { + var shortName = Framework.FromString(framework)?.ShortName ?? framework; + baseName = baseName + "_" + shortName; + } + + var defaultTrxFileName = baseName + ".trx"; return TrxFileHelper.GetNextIterationFileName(_testResultsDirPath, defaultTrxFileName, false); } diff --git a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs index a7b21ca6d5..0f296846c5 100644 --- a/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs +++ b/test/Microsoft.TestPlatform.Acceptance.IntegrationTests/ArgumentProcessorTests.cs @@ -18,7 +18,8 @@ public void PassingNoArgumentsToVsTestConsoleShouldPrintHelpMessage(RunnerInfo r { SetTestEnvironment(_testEnvironment, runnerInfo); - InvokeVsTest(null); + // Don't add --diag, it changes the output and prevents help from showing. + InvokeVsTest(null, collectDiagnostics: false); //Check for help usage, description and arguments text. StdOutputContains("Usage: vstest.console.exe"); diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs index 4a1bf95e4f..1847a6ae70 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/TrxLoggerTests.cs @@ -630,6 +630,49 @@ public void DefaultTrxFileShouldCreateIfLogFileNameParameterNotPassed() Assert.IsFalse(string.IsNullOrWhiteSpace(_testableTrxLogger.TrxFile)); } + [TestMethod] + public void DefaultTrxFileNameShouldIncludeFrameworkWhenAvailable() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _parameters[DefaultLoggerParameterNames.TargetFramework] = ".NETCoreApp,Version=v10.0"; + _testableTrxLogger.Initialize(_events.Object, _parameters); + + MakeTestRunComplete(); + + var fileName = Path.GetFileName(_testableTrxLogger.TrxFile); + Assert.IsNotNull(fileName); + Assert.Contains("_net10.0", fileName, $"Expected TFM 'net10.0' in filename but got: {fileName}"); + Assert.EndsWith(".trx", fileName, $"Expected .trx extension but got: {fileName}"); + } + + [TestMethod] + public void DefaultTrxFileNameShouldWorkWithoutFramework() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _testableTrxLogger.Initialize(_events.Object, _parameters); + + MakeTestRunComplete(); + + var fileName = Path.GetFileName(_testableTrxLogger.TrxFile); + Assert.IsNotNull(fileName); + Assert.EndsWith(".trx", fileName, $"Expected .trx extension but got: {fileName}"); + } + + [TestMethod] + public void DefaultTrxFileNameShouldUseRawStringWhenFrameworkCannotBeParsed() + { + _parameters.Remove(TrxLoggerConstants.LogFileNameKey); + _parameters[DefaultLoggerParameterNames.TargetFramework] = "SomeCustomFramework"; + _testableTrxLogger.Initialize(_events.Object, _parameters); + + MakeTestRunComplete(); + + var fileName = Path.GetFileName(_testableTrxLogger.TrxFile); + Assert.IsNotNull(fileName); + Assert.Contains("_SomeCustomFramework", fileName, $"Expected raw framework string in filename but got: {fileName}"); + Assert.EndsWith(".trx", fileName, $"Expected .trx extension but got: {fileName}"); + } + [TestMethod] public void DefaultTrxFileNameVerification() {