diff --git a/NuGet.config b/NuGet.config index 87909589d8..12ce55053a 100644 --- a/NuGet.config +++ b/NuGet.config @@ -23,4 +23,5 @@ + diff --git a/eng/Version.Details.xml b/eng/Version.Details.xml index 0bd729be70..bb37ef4000 100644 --- a/eng/Version.Details.xml +++ b/eng/Version.Details.xml @@ -3,25 +3,25 @@ - + https://github.com/dotnet/arcade - 2e804f8d57972faf64a19a7295728dc7bfcb5fce + 84cd401ce792220bdb17c5587f9b39265170c03f - + https://github.com/dotnet/arcade - 2e804f8d57972faf64a19a7295728dc7bfcb5fce + 84cd401ce792220bdb17c5587f9b39265170c03f - + https://github.com/dotnet/arcade - 2e804f8d57972faf64a19a7295728dc7bfcb5fce + 84cd401ce792220bdb17c5587f9b39265170c03f - + https://github.com/dotnet/arcade - 2e804f8d57972faf64a19a7295728dc7bfcb5fce + 84cd401ce792220bdb17c5587f9b39265170c03f - + https://github.com/dotnet/arcade - 2e804f8d57972faf64a19a7295728dc7bfcb5fce + 84cd401ce792220bdb17c5587f9b39265170c03f https://github.com/dotnet/arcade-services diff --git a/eng/Versions.props b/eng/Versions.props index c154fd1efd..cf2f683048 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -60,8 +60,8 @@ 2.4.1 2.0.3 2.4.1 - 2.2.0-beta.20411.9 - 1.0.0-beta.20411.9 + 2.2.0-beta.20427.6 + 1.0.0-beta.20427.6 1.22.0 1.1.2 2.0.0 @@ -73,7 +73,7 @@ 1.7.0 1.1.0-beta.19556.4 1.0.0-beta2-19554-01 - 1.0.0-beta.20411.9 + 1.0.0-beta.20427.6 1.0.0-beta.20055.1 diff --git a/eng/common/darc-init.sh b/eng/common/darc-init.sh index 242429bca6..06b6534252 100644 --- a/eng/common/darc-init.sh +++ b/eng/common/darc-init.sh @@ -2,8 +2,8 @@ source="${BASH_SOURCE[0]}" darcVersion='' -versionEndpoint="https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16" -verbosity=m +versionEndpoint='https://maestro-prod.westus2.cloudapp.azure.com/api/assets/darc-version?api-version=2019-01-16' +verbosity='minimal' while [[ $# > 0 ]]; do opt="$(echo "$1" | awk '{print tolower($0)}')" @@ -20,6 +20,10 @@ while [[ $# > 0 ]]; do verbosity=$2 shift ;; + --toolpath) + toolpath=$2 + shift + ;; *) echo "Invalid argument: $1" usage @@ -52,17 +56,27 @@ function InstallDarcCli { InitializeDotNetCli local dotnet_root=$_InitializeDotNetCli - local uninstall_command=`$dotnet_root/dotnet tool uninstall $darc_cli_package_name -g` - local tool_list=$($dotnet_root/dotnet tool list -g) - if [[ $tool_list = *$darc_cli_package_name* ]]; then - echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) + if [ -z "$toolpath" ]; then + local tool_list=$($dotnet_root/dotnet tool list -g) + if [[ $tool_list = *$darc_cli_package_name* ]]; then + echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name -g) + fi + else + local tool_list=$($dotnet_root/dotnet tool list --tool-path "$toolpath") + if [[ $tool_list = *$darc_cli_package_name* ]]; then + echo $($dotnet_root/dotnet tool uninstall $darc_cli_package_name --tool-path "$toolpath") + fi fi - local arcadeServicesSource="https://dotnetfeed.blob.core.windows.net/dotnet-core/index.json" + local arcadeServicesSource="https://pkgs.dev.azure.com/dnceng/public/_packaging/dotnet-eng/nuget/v3/index.json" echo "Installing Darc CLI version $darcVersion..." echo "You may need to restart your command shell if this is the first dotnet tool you have installed." - echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) + if [ -z "$toolpath" ]; then + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity -g) + else + echo $($dotnet_root/dotnet tool install $darc_cli_package_name --version $darcVersion --add-source "$arcadeServicesSource" -v $verbosity --tool-path "$toolpath") + fi } InstallDarcCli diff --git a/global.json b/global.json index c43398e67e..ee8ab86fd2 100644 --- a/global.json +++ b/global.json @@ -9,7 +9,7 @@ "dotnet": "5.0.100-rc.1.20380.12" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.20411.9", - "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.20411.9" + "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.20427.6", + "Microsoft.DotNet.Helix.Sdk": "2.0.0-beta.20427.6" } } diff --git a/scripts/build.ps1 b/scripts/build.ps1 index f5beb59f84..a2bf383069 100644 --- a/scripts/build.ps1 +++ b/scripts/build.ps1 @@ -717,7 +717,7 @@ function Create-NugetPackages # Additional external dependency folders $microsoftFakesVersion = ([xml](Get-Content $env:TP_ROOT_DIR\scripts\build\TestPlatform.Dependencies.props)).Project.PropertyGroup.MicrosoftFakesVersion - $FakesPackageDir = Join-Path $env:TP_PACKAGES_DIR "Microsoft.VisualStudio.TestPlatform.Fakes\$microsoftFakesVersion\lib" + $FakesPackageDir = Join-Path $env:TP_PACKAGES_DIR "Microsoft.QualityTools.Testing.Fakes.TestRunnerHarness\$microsoftFakesVersion\contentFiles" # package them from stagingDir foreach ($file in $nuspecFiles) { diff --git a/scripts/build/TestPlatform.Dependencies.props b/scripts/build/TestPlatform.Dependencies.props index 6c775999d0..e324c3fe1d 100644 --- a/scripts/build/TestPlatform.Dependencies.props +++ b/scripts/build/TestPlatform.Dependencies.props @@ -32,7 +32,7 @@ 9.0.1 4.7.63 16.8.0-preview-3968212 - 16.6.3-beta.20221.2 + 16.8.0-beta.20420.2 16.0.461 $(MicrosoftBuildPackageVersion) diff --git a/scripts/verify-nupkgs.ps1 b/scripts/verify-nupkgs.ps1 index de298b360c..ca4fe4fbf0 100644 --- a/scripts/verify-nupkgs.ps1 +++ b/scripts/verify-nupkgs.ps1 @@ -15,7 +15,7 @@ function Verify-Nuget-Packages($packageDirectory) $expectedNumOfFiles = @{ "Microsoft.CodeCoverage" = 29; "Microsoft.NET.Test.Sdk" = 13; - "Microsoft.TestPlatform" = 469; + "Microsoft.TestPlatform" = 477; "Microsoft.TestPlatform.Build" = 19; "Microsoft.TestPlatform.CLI" = 350; "Microsoft.TestPlatform.Extensions.TrxLogger" = 33; diff --git a/scripts/vsts-prebuild.ps1 b/scripts/vsts-prebuild.ps1 index ba170867ad..9fe4025d54 100644 --- a/scripts/vsts-prebuild.ps1 +++ b/scripts/vsts-prebuild.ps1 @@ -41,5 +41,5 @@ $JsonNetVersion = ([xml](Get-Content $TP_ROOT_DIR\scripts\build\TestPlatform.Dep Write-Host "##vso[task.setvariable variable=JsonNetVersion;]$JsonNetVersion" $microsoftFakesVersion = ([xml](Get-Content $TP_ROOT_DIR\scripts\build\TestPlatform.Dependencies.props)).Project.PropertyGroup.MicrosoftFakesVersion -$FakesPackageDir = Join-Path $TP_ROOT_DIR "packages\Microsoft.VisualStudio.TestPlatform.Fakes\$microsoftFakesVersion\lib" +$FakesPackageDir = Join-Path $TP_ROOT_DIR "packages\Microsoft.QualityTools.Testing.Fakes.TestRunnerHarness\$microsoftFakesVersion\contentFiles" Write-Host "##vso[task.setvariable variable=FakesPackageDir;]$FakesPackageDir" diff --git a/src/Microsoft.TestPlatform.Common/Utilities/RunSettingsProviderExtensions.cs b/src/Microsoft.TestPlatform.Common/Utilities/RunSettingsProviderExtensions.cs index 99f6909bdd..c6e981289d 100644 --- a/src/Microsoft.TestPlatform.Common/Utilities/RunSettingsProviderExtensions.cs +++ b/src/Microsoft.TestPlatform.Common/Utilities/RunSettingsProviderExtensions.cs @@ -95,7 +95,7 @@ public static void UpdateRunSettingsNode(this IRunSettingsProvider runSettingsPr /// public static Match GetTestRunParameterNodeMatch(this IRunSettingsProvider runSettingsProvider, string node) { - var attrName = $"(?<{AttributeNameString}>\\w+)"; + var attrName = $"(?<{AttributeNameString}>[\\w.:-]+)"; var attrValue = $"(?<{AttributeValueString}>.+)"; Regex regex = new Regex($"{Constants.TestRunParametersName}.{ParameterString}\\(name\\s*=\\s*\"{attrName}\"\\s*,\\s*value\\s*=\\s*\"{attrValue}\"\\)"); Match match = regex.Match(node); diff --git a/src/Microsoft.TestPlatform.CommunicationUtilities/Interfaces/Communication/CommunicationException.cs b/src/Microsoft.TestPlatform.CommunicationUtilities/Interfaces/Communication/CommunicationException.cs index c9a11aeada..4dcfebff5d 100644 --- a/src/Microsoft.TestPlatform.CommunicationUtilities/Interfaces/Communication/CommunicationException.cs +++ b/src/Microsoft.TestPlatform.CommunicationUtilities/Interfaces/Communication/CommunicationException.cs @@ -11,28 +11,28 @@ namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces public class CommunicationException : Exception { /// - /// Initializes a new instance of class. + /// Initializes a new instance of the class. /// public CommunicationException() { } /// - /// Initializes a new instance of class with provided + /// Initializes a new instance of the class with provided /// message. /// - /// Message describing the error. + /// Message describing the error. public CommunicationException(string message) : base(message) { } /// - /// Initializes a new instance of class with provided + /// Initializes a new instance of the class with provided /// message and inner exception. /// - /// Message describing the error. - /// Inner exception. + /// Message describing the error. + /// Inner exception. public CommunicationException(string message, Exception inner) : base(message, inner) { diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameCollector.cs b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameCollector.cs index 834b410510..3f8ad9bcd3 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameCollector.cs +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameCollector.cs @@ -46,7 +46,6 @@ public class BlameCollector : DataCollector, ITestExecutionEnvironmentSpecifier private IInactivityTimer inactivityTimer; private TimeSpan inactivityTimespan = TimeSpan.FromMinutes(DefaultInactivityTimeInMinutes); private int testHostProcessId; - private bool dumpWasCollectedByHangDumper; private string targetFramework; private List> environmentVariables = new List>(); private bool uploadDumpFiles; @@ -223,7 +222,7 @@ private void CollectDumpAndAbortTesthost() } catch (Exception ex) { - ConsoleOutput.Instance.Error(true, $"Blame: Creating hang dump failed with error {ex}."); + this.logger.LogError(this.context.SessionDataCollectionContext, $"Blame: Creating hang dump failed with error.", ex); } if (this.collectProcessDumpOnTrigger) @@ -244,7 +243,6 @@ private void CollectDumpAndAbortTesthost() { if (!string.IsNullOrEmpty(dumpFile)) { - this.dumpWasCollectedByHangDumper = true; var fileTransferInformation = new FileTransferInformation(this.context.SessionDataCollectionContext, dumpFile, true, this.fileHelper); this.dataCollectionSink.SendFileAsync(fileTransferInformation); } @@ -263,7 +261,7 @@ private void CollectDumpAndAbortTesthost() } catch (Exception ex) { - ConsoleOutput.Instance.Error(true, $"Blame: Collecting hang dump failed with error {ex}."); + this.logger.LogError(this.context.SessionDataCollectionContext, $"Blame: Collecting hang dump failed with error.", ex); } } else @@ -452,47 +450,37 @@ private void SessionEndedHandler(object sender, SessionEndEventArgs args) this.logger.LogWarning(this.context.SessionDataCollectionContext, Resources.Resources.NotGeneratingSequenceFile); } - if (this.collectProcessDumpOnTrigger) + if (this.uploadDumpFiles) { - // If there was a test case crash or if we need to collect dump on process exit. - // - // Do not try to collect dump when we already collected one from the hang dump - // we won't dump the killed process again and that would just show a warning on the command line - if ((this.testStartCount > this.testEndCount || this.collectDumpAlways) && !this.dumpWasCollectedByHangDumper) + try { - if (this.uploadDumpFiles) + var dumpFiles = this.processDumpUtility.GetDumpFiles(); + foreach (var dumpFile in dumpFiles) { - try + if (!string.IsNullOrEmpty(dumpFile)) { - var dumpFiles = this.processDumpUtility.GetDumpFiles(); - foreach (var dumpFile in dumpFiles) + try { - if (!string.IsNullOrEmpty(dumpFile)) - { - try - { - var fileTranferInformation = new FileTransferInformation(this.context.SessionDataCollectionContext, dumpFile, true); - this.dataCollectionSink.SendFileAsync(fileTranferInformation); - } - catch (FileNotFoundException ex) - { - EqtTrace.Warning(ex.ToString()); - this.logger.LogWarning(args.Context, ex.ToString()); - } - } + var fileTranferInformation = new FileTransferInformation(this.context.SessionDataCollectionContext, dumpFile, true); + this.dataCollectionSink.SendFileAsync(fileTranferInformation); + } + catch (FileNotFoundException ex) + { + EqtTrace.Warning(ex.ToString()); + this.logger.LogWarning(args.Context, ex.ToString()); } } - catch (FileNotFoundException ex) - { - EqtTrace.Warning(ex.ToString()); - this.logger.LogWarning(args.Context, ex.ToString()); - } - } - else - { - EqtTrace.Info("BlameCollector.CollectDumpAndAbortTesthost: Custom path to dump directory was provided via VSTEST_DUMP_PATH. Skipping attachment upload, the caller is responsible for collecting and uploading the dumps themselves."); } } + catch (FileNotFoundException ex) + { + EqtTrace.Warning(ex.ToString()); + this.logger.LogWarning(args.Context, ex.ToString()); + } + } + else + { + EqtTrace.Info("BlameCollector.CollectDumpAndAbortTesthost: Custom path to dump directory was provided via VSTEST_DUMP_PATH. Skipping attachment upload, the caller is responsible for collecting and uploading the dumps themselves."); } } finally diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameLogger.cs b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameLogger.cs index 255e4451ae..3874282614 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameLogger.cs +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/BlameLogger.cs @@ -112,15 +112,13 @@ private void TestRunCompleteHandler(object sender, TestRunCompleteEventArgs e) return; } - this.output.Error(false, Resources.Resources.AbortedTestRun); - StringBuilder sb = new StringBuilder(); foreach (var tcn in testCaseNames) { sb.Append(tcn).Append(Environment.NewLine); } - this.output.Error(false, sb.ToString()); + this.output.Error(false, Resources.Resources.AbortedTestRun, sb.ToString()); } #endregion diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/CrashDumperFactory.cs b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/CrashDumperFactory.cs index 06d5eda6a4..469885579b 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/CrashDumperFactory.cs +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/CrashDumperFactory.cs @@ -37,6 +37,20 @@ public ICrashDumper Create(string targetFramework) return new ProcDumpCrashDumper(); } + // On net5.0 we don't have the capability to crash dump on exit, which is useful in rare cases + // like when user exits the testhost process with a random exit code, adding this evn variable + // to force using procdump. This relies on netclient dumper actualy doing all it's work in blame collector + // where it sets all the environment variables, so in effect we will have two crash dumpers active at the same time. + // This proven to be working okay while net5.0 could not create dumps from Task.Run, and I was using this same technique + // to get dump of testhost. This needs PROCDUMP_PATH set to directory with procdump.exe, or having it in path. + var procdumpOverride = Environment.GetEnvironmentVariable("VSTEST_DUMP_FORCEPROCDUMP")?.Trim(); + var forceUsingProcdump = !string.IsNullOrWhiteSpace(procdumpOverride) && procdumpOverride != "0"; + if (forceUsingProcdump) + { + EqtTrace.Info($"CrashDumperFactory: This is Windows on {targetFramework}. Forcing the use of ProcDumpCrashDumper that uses ProcDump utility, via VSTEST_DUMP_FORCEPROCDUMP={procdumpOverride}."); + return new ProcDumpCrashDumper(); + } + EqtTrace.Info($"CrashDumperFactory: This is Windows on {targetFramework}, returning the .NETClient dumper which uses env variables to collect crashdumps of testhost and any child process."); return new NetClientCrashDumper(); } diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/NetClientHangDumper.cs b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/NetClientHangDumper.cs index 2a7d0e16d6..3d0d52d6a6 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/NetClientHangDumper.cs +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/NetClientHangDumper.cs @@ -4,9 +4,12 @@ namespace Microsoft.TestPlatform.Extensions.BlameDataCollector { using System; + using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; + using System.Threading; + using System.Threading.Tasks; using Microsoft.Diagnostics.NETCore.Client; using Microsoft.VisualStudio.TestPlatform.ObjectModel; using Microsoft.VisualStudio.TestPlatform.Utilities; @@ -40,35 +43,45 @@ public void Dump(int processId, string outputDirectory, DumpTypeOption type) var bottomUpTree = processTree.OrderByDescending(t => t.Level).Select(t => t.Process); + // Do not suspend processes with NetClient dumper it stops the diagnostic thread running in + // them and hang dump request will get stuck forever, because the process is not co-operating. + // Instead we start one task per dump asynchronously, and hope that the parent process will start dumping + // before the child process is done dumping. This way if the parent is waiting for the children to exit, + // we will be dumping it before it observes the child exiting and we get a more accurate results. If we did not + // do this, then parent that is awaiting child might exit before we get to dumping it. + var tasks = new List(); + var timeout = new CancellationTokenSource(); + timeout.CancelAfter(TimeSpan.FromMinutes(5)); foreach (var p in bottomUpTree) { - try - { - p.Suspend(); - } - catch (Exception ex) + tasks.Add(Task.Run( + () => { - EqtTrace.Error($"NetClientHangDumper.Dump: Error suspending process {p.Id} - {p.ProcessName}: {ex}."); - } - } + try + { + var outputFile = Path.Combine(outputDirectory, $"{p.ProcessName}_{p.Id}_{DateTime.Now:yyyyMMddTHHmmss}_hangdump.dmp"); + EqtTrace.Verbose($"NetClientHangDumper.CollectDump: Selected dump type {type}. Dumping {process.Id} - {process.ProcessName} in {outputFile}. "); - foreach (var p in bottomUpTree) - { - try - { - var outputFile = Path.Combine(outputDirectory, $"{p.ProcessName}_{p.Id}_{DateTime.Now:yyyyMMddTHHmmss}_hangdump.dmp"); - EqtTrace.Verbose($"NetClientHangDumper.CollectDump: Selected dump type {type}. Dumping {process.Id} - {process.ProcessName} in {outputFile}. "); + var client = new DiagnosticsClient(p.Id); - var client = new DiagnosticsClient(p.Id); + // Connecting the dump generation logging to verbose output to avoid changing the interfaces again -> EqtTrace.IsVerboseEnabled + // before we test this on some big repo. + client.WriteDump(type == DumpTypeOption.Full ? DumpType.Full : DumpType.Normal, outputFile, logDumpGeneration: false); + } + catch (Exception ex) + { + EqtTrace.Error($"NetClientHangDumper.Dump: Error dumping process {p.Id} - {p.ProcessName}: {ex}."); + } + }, timeout.Token)); + } - // Connecting the dump generation logging to verbose output to avoid changing the interfaces again -> EqtTrace.IsVerboseEnabled - // before we test this on some big repo. - client.WriteDump(type == DumpTypeOption.Full ? DumpType.Full : DumpType.Normal, outputFile, logDumpGeneration: false); - } - catch (Exception ex) - { - EqtTrace.Error($"NetClientHangDumper.Dump: Error dumping process {p.Id} - {p.ProcessName}: {ex}."); - } + try + { + Task.WhenAll(tasks).GetAwaiter().GetResult(); + } + catch (TaskCanceledException) + { + EqtTrace.Error($"NetClientHangDumper.Dump: Hang dump timed out."); } foreach (var p in bottomUpTree) diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.Designer.cs b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.Designer.cs index 53cf4ade1e..e34c6b30ba 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.Designer.cs +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.Designer.cs @@ -61,7 +61,10 @@ internal class Resources { } /// - /// Looks up a localized string similar to The active Test Run was aborted because the host process exited unexpectedly while executing following test(s):. + /// Looks up a localized string similar to The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. + ///The test running when the crash occurred: + ///{0} + ///This test may, or may not be the source of the crash.. /// internal static string AbortedTestRun { get { diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.resx b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.resx index a500d52c84..4d5c69c20d 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.resx +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/Resources.resx @@ -118,7 +118,11 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. The blame parameter key specified {0} is not valid. Ignoring this key. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.cs.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.cs.xlf index 7f9f38e301..e70ff548d3 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.cs.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.cs.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - Aktivní testovací běh byl přerušen, protože hostitelský proces byl neočekávaně ukončen při provádění následujících testů: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + Aktivní testovací běh byl přerušen, protože hostitelský proces byl neočekávaně ukončen při provádění následujících testů: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.de.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.de.xlf index 9df340f2a0..a1235bf501 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.de.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.de.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - Der aktive Testlauf wurde abgebrochen, weil der Hostprozess beim Ausführen der folgenden Tests unerwartet beendet wurde: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + Der aktive Testlauf wurde abgebrochen, weil der Hostprozess beim Ausführen der folgenden Tests unerwartet beendet wurde: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.es.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.es.xlf index 7f7b152970..2774c34d0f 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.es.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.es.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - La serie de pruebas activa se anuló porque el proceso del host se cerró inesperadamente al ejecutar las pruebas siguientes: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + La serie de pruebas activa se anuló porque el proceso del host se cerró inesperadamente al ejecutar las pruebas siguientes: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.fr.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.fr.xlf index 4b02e78d1c..7f13e124fb 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.fr.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.fr.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - La série de tests active a été abandonnée, car le processus hôte s'est arrêté de manière inattendue durant l'exécution du ou des tests suivants : - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + La série de tests active a été abandonnée, car le processus hôte s'est arrêté de manière inattendue durant l'exécution du ou des tests suivants : + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.it.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.it.xlf index f7c63ec22f..e16e7fb09c 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.it.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.it.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - L'esecuzione dei test attiva è stata interrotta perché il processo host è stato terminato in modo imprevisto durante l'esecuzione del test o dei test seguenti: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + L'esecuzione dei test attiva è stata interrotta perché il processo host è stato terminato in modo imprevisto durante l'esecuzione del test o dei test seguenti: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ja.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ja.xlf index f72bb9bcb9..c2d6bd1575 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ja.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ja.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - 以下のテストの実行中にホスト プロセスが予期せず終了したため、アクティブなテスト実行が中止されました: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + 以下のテストの実行中にホスト プロセスが予期せず終了したため、アクティブなテスト実行が中止されました: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ko.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ko.xlf index 921bebc97b..cbc85432d1 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ko.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ko.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - 다음 테스트를 실행하는 동안 호스트 프로세스가 예기치 않게 종료되어 활성 테스트 실행이 중단되었습니다. - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + 다음 테스트를 실행하는 동안 호스트 프로세스가 예기치 않게 종료되어 활성 테스트 실행이 중단되었습니다. + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pl.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pl.xlf index 5f6203d752..6e0651cf89 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pl.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pl.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - Aktywny przebieg testu został przerwany, ponieważ proces hosta nieoczekiwanie zakończył działanie podczas wykonywania następujących testów: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + Aktywny przebieg testu został przerwany, ponieważ proces hosta nieoczekiwanie zakończył działanie podczas wykonywania następujących testów: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pt-BR.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pt-BR.xlf index 4f074f78ff..6aa314fdc7 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pt-BR.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.pt-BR.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - A Execução de Teste ativa foi anulada pois o processo do host saiu inesperadamente ao executar os seguintes testes: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + A Execução de Teste ativa foi anulada pois o processo do host saiu inesperadamente ao executar os seguintes testes: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ru.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ru.xlf index 31dc3a8f86..0a710dd9c9 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ru.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.ru.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - Активный тестовый запуск прерван, так как хост-процесс завершил работу непредвиденным образом при выполнении следующих тестов: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + Активный тестовый запуск прерван, так как хост-процесс завершил работу непредвиденным образом при выполнении следующих тестов: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.tr.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.tr.xlf index fda57e82e4..23c3668e97 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.tr.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.tr.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - Aşağıdaki testler yürütülürken konak işleminden beklenmedik bir şekilde çıkıldığından etkin Test Çalıştırması iptal edildi: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + Aşağıdaki testler yürütülürken konak işleminden beklenmedik bir şekilde çıkıldığından etkin Test Çalıştırması iptal edildi: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf index adde775921..9667764550 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.xlf @@ -3,9 +3,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. The active Test Run was aborted because the host process exited unexpectedly while executing test - + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hans.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hans.xlf index 5bdd34c08c..55fd327124 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hans.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hans.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - 执行以下测试时主机进程意外退出,活动的测试运行已中止: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + 执行以下测试时主机进程意外退出,活动的测试运行已中止: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hant.xlf b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hant.xlf index c5cf368aa6..9be9aec885 100644 --- a/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hant.xlf +++ b/src/Microsoft.TestPlatform.Extensions.BlameDataCollector/Resources/xlf/Resources.zh-Hant.xlf @@ -21,9 +21,12 @@ - The active Test Run was aborted because the host process exited unexpectedly while executing following test(s): - 因為主機處理序在執行下列測試時未預期地結束,所以使用中的測試回合已中止: - + The active Test Run was aborted because the host process exited unexpectedly. Please inspect the call stack above, if available, to get more information about where the exception originated from. +The test running when the crash occurred: +{0} +This test may, or may not be the source of the crash. + 因為主機處理序在執行下列測試時未預期地結束,所以使用中的測試回合已中止: + {0} is a single test (or in rare cases multiple tests) that were running when test host crashed. Required environment variable PROCDUMP_PATH was null or empty. Set PROCDUMP_PATH to path of folder containing appropriate procdump executable. diff --git a/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/IEnvironment.cs b/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/IEnvironment.cs index 950b7218a0..5ddff59101 100644 --- a/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/IEnvironment.cs +++ b/src/Microsoft.TestPlatform.PlatformAbstractions/Interfaces/System/IEnvironment.cs @@ -9,17 +9,17 @@ namespace Microsoft.VisualStudio.TestPlatform.PlatformAbstractions.Interfaces public interface IEnvironment { /// - /// Operating System architecture. + /// Gets the Operating System architecture. /// PlatformArchitecture Architecture { get; } /// - /// Operating System name. + /// Gets the Operating System name. /// PlatformOperatingSystem OperatingSystem { get; } /// - /// Operating System Version + /// Gets the Operating System Version /// string OperatingSystemVersion { get; } diff --git a/src/package/external/external.csproj b/src/package/external/external.csproj index 9224602d52..87a409c7b2 100644 --- a/src/package/external/external.csproj +++ b/src/package/external/external.csproj @@ -89,7 +89,7 @@ 16.3.23 All - + $(MicrosoftFakesVersion) All diff --git a/src/package/nuspec/Microsoft.TestPlatform.nuspec b/src/package/nuspec/Microsoft.TestPlatform.nuspec index c473e1bcd5..61a9b3531e 100644 --- a/src/package/nuspec/Microsoft.TestPlatform.nuspec +++ b/src/package/nuspec/Microsoft.TestPlatform.nuspec @@ -245,7 +245,7 @@ - + @@ -404,7 +404,7 @@ - + @@ -489,6 +489,17 @@ - + + + + + + + + + + + + diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs index 82e834be78..ffb741dbed 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/Utilities/RunSettingsProviderExtensionsTests.cs @@ -134,13 +134,7 @@ public void UpdateRunSettingsNodeShouldAddNewKeyIfNotPresent() [TestMethod] public void UpdateTestRunParameterSettingsNodeShouldAddNewKeyIfNotPresent() { - var match = this.runSettingsProvider.GetTestRunParameterNodeMatch("TestRunParameters.Parameter(name=\"weburl\",value=\"http://localhost//abc\")"); - var runSettingsWithTestRunParameters = "\r\n\r\n \r\n \r\n \r\n"; - - this.runSettingsProvider.UpdateRunSettings("\r\n "); - this.runSettingsProvider.UpdateTestRunParameterSettingsNode(match); - - Assert.AreEqual(runSettingsWithTestRunParameters, this.runSettingsProvider.ActiveRunSettings.SettingsXml); + this.CheckRunSettingsAreUpdated("weburl", @"http://localhost//abc"); } [TestMethod] @@ -156,6 +150,24 @@ public void UpdateTetsRunParameterSettingsNodeShouldOverrideValueIfKeyIsAlreadyP Assert.AreEqual(runSettingsWithTestRunParametersOverrode, this.runSettingsProvider.ActiveRunSettings.SettingsXml); } + [TestMethod] + public void TestRunParameterSettingsNodeCanContainSpecialCharacters() + { + this.CheckRunSettingsAreUpdated("weburl:name", @"http://localhost//abc"); + } + + [TestMethod] + public void TestRunParameterSettingsNodeCanBeJustASingleCharacter() + { + this.CheckRunSettingsAreUpdated("a", @"http://localhost//abc"); + } + + [TestMethod] + public void TestRunParameterSettingsNodeCanMixSpecialCharacters() + { + this.CheckRunSettingsAreUpdated("___this_Should:be-valid.2", @"http://localhost//abc"); + } + [TestMethod] public void UpdateRunSettingsNodeShouldUpdateKeyIfAlreadyPresent() { @@ -230,6 +242,25 @@ public void QueryRunSettingsNodeShouldReturnCorrectValue() Assert.AreEqual("x86", this.runSettingsProvider.QueryRunSettingsNode("RunConfiguration.TargetPlatform")); } + private void CheckRunSettingsAreUpdated(string parameterName, string parameterValue) + { + var match = this.runSettingsProvider.GetTestRunParameterNodeMatch( + $@"TestRunParameters.Parameter(name=""{parameterName}"",value=""{parameterValue}"")"); + var runSettingsWithTestRunParameters = string.Join( + Environment.NewLine, + $@"", + $@"", + $@" ", + $@" ", + $@" ", + $@""); + + this.runSettingsProvider.UpdateRunSettings("\r\n "); + this.runSettingsProvider.UpdateTestRunParameterSettingsNode(match); + + Assert.AreEqual(runSettingsWithTestRunParameters, this.runSettingsProvider.ActiveRunSettings.SettingsXml); + } + private class TestableRunSettingsProvider : IRunSettingsProvider { public RunSettings ActiveRunSettings diff --git a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs index fffd563384..880e742290 100644 --- a/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs +++ b/test/Microsoft.TestPlatform.Extensions.BlameDataCollector.UnitTests/BlameCollectorTests.cs @@ -403,33 +403,6 @@ public void TriggerSessionEndedHandlerShouldEnsureProcDumpProcessIsTerminated() this.mockProcessDumpUtility.Verify(x => x.DetachFromTargetProcess(It.IsAny()), Times.Once); } - /// - /// The trigger session ended handler should not dump files if proc dump was enabled and test host did not crash - /// - [TestMethod] - public void TriggerSessionEndedHandlerShouldNotGetDumpFileIfNoCrash() - { - // Initializing Blame Data Collector - this.blameDataCollector.Initialize( - this.GetDumpConfigurationElement(), - this.mockDataColectionEvents.Object, - this.mockDataCollectionSink.Object, - this.mockLogger.Object, - this.context); - - // Setup - this.mockProcessDumpUtility.Setup(x => x.GetDumpFiles()).Returns(new[] { this.filepath }); - this.mockBlameReaderWriter.Setup(x => x.WriteTestSequence(It.IsAny>(), It.IsAny>(), It.IsAny())) - .Returns(this.filepath); - - // Raise - this.mockDataColectionEvents.Raise(x => x.TestHostLaunched += null, new TestHostLaunchedEventArgs(this.dataCollectionContext, 1234)); - this.mockDataColectionEvents.Raise(x => x.SessionEnd += null, new SessionEndEventArgs(this.dataCollectionContext)); - - // Verify GetDumpFiles Call - this.mockProcessDumpUtility.Verify(x => x.GetDumpFiles(), Times.Never); - } - /// /// The trigger session ended handler should get dump files if collect dump on exit was enabled irrespective of completed test case count ///