From 617d2a9fffc4af3e7322bd496c72baf19e107d54 Mon Sep 17 00:00:00 2001 From: Arun Mahapatra Date: Thu, 11 Aug 2016 16:50:03 +0530 Subject: [PATCH 1/2] Add test script to run unit tests using local vstest.console runner. Fix data collector unit tests to depend on Task.Id instead of thread id. A task may or may not execute in new thread. Fix test run event tests to wait for logger events to get flushed before verification. All test projects now build for net46 and netcoreapp1.0. --- scripts/test.ps1 | 172 ++++++++++++++++++ .../Logging/TestLoggerManager.cs | 1 + .../project.json | 1 - src/vstest.console/Internal/ConsoleLogger.cs | 14 +- test.cmd | 6 + .../DesignModeTestHostLauncherFactoryTests.cs | 25 +-- .../project.json | 33 +++- .../TestPluginCacheTests.cs | 12 +- .../project.json | 33 +++- .../project.json | 31 +++- .../project.json | 31 +++- ...ProcDataCollectionExtensionManagerTests.cs | 1 - .../Hosting/DefaultTestHostManagerTests.cs | 14 +- .../project.json | 31 +++- .../project.json | 35 ++-- .../project.json | 33 +++- .../CodeCoverageDataAdapterUtilitiesTests.cs | 17 +- .../MSTestSettingsUtilitiesTests.cs | 17 +- .../project.json | 31 +++- .../project.json | 33 +++- .../DataCollectionCoordinatorTests.cs | 91 ++++----- test/datacollector.x86.UnitTests/project.json | 33 +++- test/testhost.UnitTests/project.json | 31 +++- .../Internal/ConsoleLoggerTests.cs | 35 ++-- test/vstest.console.UnitTests/project.json | 33 +++- 25 files changed, 565 insertions(+), 229 deletions(-) create mode 100644 scripts/test.ps1 create mode 100644 test.cmd diff --git a/scripts/test.ps1 b/scripts/test.ps1 new file mode 100644 index 0000000000..8a3cd05390 --- /dev/null +++ b/scripts/test.ps1 @@ -0,0 +1,172 @@ +# Copyright (c) Microsoft. All rights reserved. +# Build script for Test Platform. + +[CmdletBinding()] +Param( + [Parameter(Mandatory=$false)] + [ValidateSet("Debug", "Release")] + [Alias("c")] + [System.String] $Configuration = "Debug", + + # Only test sources matching the pattern are run. + # Use End2End to run E2E tests. Or to run any one assembly tests, use the + # assembly name. E.g. test -p Microsoft.TestPlatform.CoreUtilities.UnitTests + [Parameter(Mandatory=$false)] + [Alias("p")] + [System.String] $Pattern = "Unit", + + # Stop test run on first failure + [Parameter(Mandatory=$false)] + [Alias("ff")] + [Switch] $FailFast = $false +) + +$ErrorActionPreference = "Stop" + +# +# Variables +# +Write-Verbose "Setup environment variables." +$env:TP_ROOT_DIR = (Get-Item (Split-Path $MyInvocation.MyCommand.Path)).Parent.FullName +$env:TP_TOOLS_DIR = Join-Path $env:TP_ROOT_DIR "tools" +$env:TP_PACKAGES_DIR = Join-Path $env:TP_ROOT_DIR "packages" +$env:TP_OUT_DIR = Join-Path $env:TP_ROOT_DIR "artifacts" + +# +# Dotnet configuration +# +# Disable first run since we want to control all package sources +Write-Verbose "Setup dotnet configuration." +$env:DOTNET_SKIP_FIRST_TIME_EXPERIENCE = 1 +# Dotnet build doesn't support --packages yet. See https://github.com/dotnet/cli/issues/2712 +$env:NUGET_PACKAGES = $env:TP_PACKAGES_DIR + +# +# Test configuration +# +# Folders to build. TODO move to props +Write-Verbose "Setup build configuration." +$Script:TPT_Configuration = $Configuration +$Script:TPT_SourceFolders = @("test") +$Script:TPT_TargetFramework = "net46" +$Script:TPT_TargetRuntime = "win7-x64" +$Script:TPT_SkipProjects = @("Microsoft.TestPlatform.CoreUtilities.UnitTests") +$Script:TPT_Pattern = $Pattern +$Script:TPT_FailFast = $FailFast + +function Write-Log ([string] $message) +{ + $currentColor = $Host.UI.RawUI.ForegroundColor + $Host.UI.RawUI.ForegroundColor = "Green" + if ($message) + { + Write-Output "... $message" + } + $Host.UI.RawUI.ForegroundColor = $currentColor +} + +function Write-VerboseLog([string] $message) +{ + Write-Verbose $message +} + +function Invoke-Test +{ + $timer = Start-Timer + Write-Log "Invoke-Test: Start test." + $dotnetExe = Get-DotNetPath + + foreach ($src in $Script:TPT_SourceFolders) { + # Invoke test for each project.json since we want a custom output + # path. + $vstestConsolePath = Join-Path (Get-PackageDirectory) "vstest.console.exe" + if (!(Test-Path $vstestConsolePath)) { + Write-Log "Unable to find vstest.console.exe at $vstestConsolePath. Did you run build.cmd?" + Write-Error "Test aborted." + } + + foreach ($fx in $Script:TPT_TargetFramework) { + Get-ChildItem -Recurse -Path $src -Include "project.json" | ForEach-Object { + Write-Log ".. Test: Source: $_" + + # Tests are only built for x86 at the moment, though we don't have architecture requirement + $testContainerName = $_.Directory.Name + $testOutputPath = Join-Path $_.Directory.FullName "bin/$($Script:TPT_Configuration)/$($Script:TPT_TargetFramework)/win7-x86" + $testContainerPath = Join-Path $testOutputPath "$($testContainerName).dll" + + if ($Script:TPT_SkipProjects.Contains($testContainerName)) { + Write-Log ".. . $testContainerName is in skipped test list." + } elseif (!($testContainerName -match $Script:TPT_Pattern)) { + Write-Log ".. . $testContainerName doesn't match test container pattern '$($Script:TPT_Pattern)'. Skipped from run." + } else { + Write-Verbose "vstest.console.exe $testContainerPath /testAdapterPath:$testOutputPath" + $output = & $vstestConsolePath $testContainerPath /testAdapterPath:"$testOutputPath" + + #Write-Verbose "$dotnetExe test $_ --configuration $Configuration" + #& $dotnetExe test $_ --configuration $Configuration + + if ($output[-2].Contains("Test Run Successful.")) { + Write-Log ".. . $($output[-3])" + } else { + Write-Log ".. . $($output[-2])" + Write-Log ".. . Failed tests:" + Write-Log ".. . $($output -match '^Failed')" + + if ($Script:TPT_FailFast) { + Write-Log ".. Stop execution since fail fast is enabled." + continue + } + } + } + + Write-Log ".. Test: Complete." + } + } + #Write-Verbose "$dotnetExe test $src\**\project.json --configuration $Configuration" + #& $dotnetExe test $_ $src\**\project.json --configuration $Configuration + } + + Write-Log "Invoke-Test: Complete. {$(Get-ElapsedTime($timer))}" +} + +# +# Helper functions +# +function Get-DotNetPath +{ + $dotnetPath = Join-Path $env:TP_TOOLS_DIR "dotnet\dotnet.exe" + if (-not (Test-Path $dotnetPath)) { + Write-Error "Dotnet.exe not found at $dotnetPath. Did the dotnet cli installation succeed?" + } + + return $dotnetPath +} + +function Get-PackageDirectory +{ + return $(Join-Path $env:TP_OUT_DIR "$($Script:TPT_Configuration)\$($Script:TPT_TargetFramework)\$($Script:TPT_TargetRuntime)") +} + +function Start-Timer +{ + return [System.Diagnostics.Stopwatch]::StartNew() +} + +function Get-ElapsedTime([System.Diagnostics.Stopwatch] $timer) +{ + $timer.Stop() + return $timer.Elapsed +} + +# Execute build +$timer = Start-Timer +Write-Log "Build started: args = '$args'" +Write-Log "Test platform environment variables: " +Get-ChildItem env: | Where-Object -FilterScript { $_.Name.StartsWith("TP_") } | Format-Table + +Write-Log "Test run configuration: " +Get-Variable | Where-Object -FilterScript { $_.Name.StartsWith("TPT_") } | Format-Table + +Invoke-Test + +Write-Log "Build complete. {$(Get-ElapsedTime($timer))}" diff --git a/src/Microsoft.TestPlatform.Common/Logging/TestLoggerManager.cs b/src/Microsoft.TestPlatform.Common/Logging/TestLoggerManager.cs index f33df67691..5f75124fae 100644 --- a/src/Microsoft.TestPlatform.Common/Logging/TestLoggerManager.cs +++ b/src/Microsoft.TestPlatform.Common/Logging/TestLoggerManager.cs @@ -86,6 +86,7 @@ public static TestLoggerManager Instance } return testLoggerManager; } + protected set { testLoggerManager = value; diff --git a/src/Microsoft.TestPlatform.Extensions.TrxLogger/project.json b/src/Microsoft.TestPlatform.Extensions.TrxLogger/project.json index 739e003559..519fa6fec9 100644 --- a/src/Microsoft.TestPlatform.Extensions.TrxLogger/project.json +++ b/src/Microsoft.TestPlatform.Extensions.TrxLogger/project.json @@ -8,7 +8,6 @@ }, "dependencies": { - "Microsoft.TestPlatform.ObjectModel": "15.0.0-*", "Microsoft.TestPlatform.CoreUtilities": "15.0.0-*" }, diff --git a/src/vstest.console/Internal/ConsoleLogger.cs b/src/vstest.console/Internal/ConsoleLogger.cs index 5a636886b0..e928d6021f 100644 --- a/src/vstest.console/Internal/ConsoleLogger.cs +++ b/src/vstest.console/Internal/ConsoleLogger.cs @@ -37,8 +37,6 @@ internal class ConsoleLogger : ITestLogger #region Fields - private static IOutput output; - private TestOutcome testOutcome = TestOutcome.None; private int testsTotal = 0; private int testsPassed = 0; @@ -62,7 +60,7 @@ public ConsoleLogger() /// internal ConsoleLogger(IOutput output) { - ConsoleLogger.output = output; + ConsoleLogger.Output = output; } #endregion @@ -74,10 +72,8 @@ internal ConsoleLogger(IOutput output) /// Protected so this can be detoured for testing purposes. protected static IOutput Output { - get - { - return output; - } + get; + private set; } #endregion @@ -95,9 +91,9 @@ public void Initialize(TestLoggerEvents events, string testRunDirectory) throw new ArgumentNullException("events"); } - if (output == null) + if (ConsoleLogger.Output == null) { - output = ConsoleOutput.Instance; + ConsoleLogger.Output = ConsoleOutput.Instance; } // Register for the events. diff --git a/test.cmd b/test.cmd new file mode 100644 index 0000000000..67c2c09687 --- /dev/null +++ b/test.cmd @@ -0,0 +1,6 @@ +@echo off + +REM Copyright (c) Microsoft. All rights reserved. + +powershell -NoProfile -NoLogo -Command "%~dp0scripts\test.ps1 %*; exit $LastExitCode;" +if %errorlevel% neq 0 exit /b %errorlevel% diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs index 7a61192f6e..86e2b47407 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs +++ b/test/Microsoft.TestPlatform.Client.UnitTests/DesignMode/DesignModeTestHostLauncherFactoryTests.cs @@ -2,9 +2,12 @@ namespace Microsoft.VisualStudio.TestPlatform.Client.UnitTests.DesignMode { - using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; - using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; using Microsoft.VisualStudio.TestPlatform.ObjectModel; using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client.Interfaces; using Microsoft.VisualStudio.TestTools.UnitTesting; - using Moq; + using Microsoft.VisualStudio.TestPlatform.Client.DesignMode; + using Microsoft.VisualStudio.TestPlatform.Client.RequestHelper; + using Microsoft.VisualStudio.TestPlatform.ObjectModel; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + using Moq; [TestClass] public class DesignModeTestHostLauncherFactoryTests @@ -13,32 +16,20 @@ public class DesignModeTestHostLauncherFactoryTests public void DesignModeTestHostFactoryShouldReturnNonDebugLauncherIfDebuggingDisabled() { var mockDesignModeClient = new Mock(); - var testRunRequestPayload = new TestRunRequestPayload() { DebuggingEnabled = false }; + var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = false }; var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload); Assert.IsFalse(launcher.IsDebug, "Factory must not return debug launcher if debugging is disabled."); - - var testProcessStartInfo = new TestProcessStartInfo(); - - launcher.LaunchTestHost(testProcessStartInfo); - - mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo), Times.Once, "Launcher should use provided design mode client"); } [TestMethod] public void DesignModeTestHostFactoryShouldReturnDebugLauncherIfDebuggingEnabled() { var mockDesignModeClient = new Mock(); - var testRunRequestPayload = new TestRunRequestPayload() { DebuggingEnabled = true }; + var testRunRequestPayload = new TestRunRequestPayload { DebuggingEnabled = true }; var launcher = DesignModeTestHostLauncherFactory.GetCustomHostLauncherForTestRun(mockDesignModeClient.Object, testRunRequestPayload); Assert.IsTrue(launcher.IsDebug, "Factory must not return debug launcher if debugging is disabled."); - - var testProcessStartInfo = new TestProcessStartInfo(); - - launcher.LaunchTestHost(testProcessStartInfo); - - mockDesignModeClient.Verify(md => md.LaunchCustomHost(testProcessStartInfo), Times.Once, "Launcher should use provided design mode client"); } } } diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/project.json b/test/Microsoft.TestPlatform.Client.UnitTests/project.json index 57f3d781f1..00245336a9 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Client.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.Client": "15.0.0-*" @@ -27,9 +23,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" -} +} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs index 348940567a..8f33967857 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs +++ b/test/Microsoft.TestPlatform.Common.UnitTests/ExtensionFramework/TestPluginCacheTests.cs @@ -134,12 +134,18 @@ public void UpdateAdditionalExtensionsShouldResetExtensionsDiscoveredFlag() [TestMethod] public void GetDefaultResolutionPathsShouldReturnCurrentDirectoryByDefault() { - var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); - var currentDirectory = Path.GetDirectoryName(typeof(TestPluginCache).GetTypeInfo().Assembly.Location); + var defaultExtensionsDirectory = Path.Combine(currentDirectory, "Extensions"); + var expectedDirectories = new List { currentDirectory }; + if (Directory.Exists(defaultExtensionsDirectory)) + { + expectedDirectories.Add(defaultExtensionsDirectory); + } + + var resolutionPaths = TestPluginCache.Instance.GetDefaultResolutionPaths(); Assert.IsNotNull(resolutionPaths); - CollectionAssert.AreEqual(new List { currentDirectory }, resolutionPaths.ToList()); + CollectionAssert.AreEqual(expectedDirectories, resolutionPaths.ToList()); } [TestMethod] diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/project.json b/test/Microsoft.TestPlatform.Common.UnitTests/project.json index b12ef7b3dc..7abef37a51 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Common.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.Common": "15.0.0-*" @@ -27,9 +23,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" -} +} \ No newline at end of file diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json index eca8f0460b..565df3a692 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.CommunicationUtilities": "15.0.0-*" @@ -27,8 +23,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json index 6900b217a6..f042dc1712 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.CoreUtilities": "15.0.0-*" @@ -27,8 +23,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/InProcDataCollectionExtensionManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/InProcDataCollectionExtensionManagerTests.cs index 6684da3607..b0dcc0e82d 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/InProcDataCollectionExtensionManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Execution/InProcDataCollectionExtensionManagerTests.cs @@ -4,7 +4,6 @@ namespace TestPlatform.CrossPlatEngine.UnitTests.Execution using System; using System.Collections.ObjectModel; using System.Reflection; - using System.Runtime.Loader; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.EventHandlers; using Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.Execution; diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Hosting/DefaultTestHostManagerTests.cs b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Hosting/DefaultTestHostManagerTests.cs index 72efa73c79..b818d589a5 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Hosting/DefaultTestHostManagerTests.cs +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/Hosting/DefaultTestHostManagerTests.cs @@ -49,13 +49,8 @@ public void ConstructorShouldSetX86ProcessForX86Architecture() }; this.testHostManager.LaunchTestHost(new Dictionary(), new List()); - - var expectedProcessPath = - Path.Combine( - Path.GetDirectoryName(typeof(DefaultTestHostManagerTests).GetTypeInfo().Assembly.Location), - "testhost.x86.exe"); - Assert.AreEqual(expectedProcessPath, processPath); + StringAssert.EndsWith(processPath, "testhost.x86.exe"); Assert.AreEqual(1, times); } @@ -77,12 +72,7 @@ public void ConstructorShouldSetX64ProcessForX64Architecture() this.testHostManager.LaunchTestHost(new Dictionary(), new List()); - var expectedProcessPath = - Path.Combine( - Path.GetDirectoryName(typeof(DefaultTestHostManagerTests).GetTypeInfo().Assembly.Location), - "testhost.exe"); - - Assert.AreEqual(expectedProcessPath, processPath); + StringAssert.EndsWith(processPath, "testhost.exe"); Assert.AreEqual(1, times); } diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json index 35ebd037c8..9706aedb3e 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.CrossPlatEngine": "15.0.0-*", @@ -30,8 +26,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json index eac7795cc8..19191fe6cb 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json @@ -8,20 +8,16 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter.Dotnet": { + "version": "1.0.0-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", - "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.Client": "15.0.0-*", "Microsoft.TestPlatform.Extensions.TrxLogger": "15.0.0-*", - "Microsoft.TestPlatform.ObjectModel": "15.0.0-*" + "Microsoft.TestPlatform.ObjectModel": "15.0.0-*", + "moq.netcore": "4.4.0-beta8" }, "frameworks": { @@ -29,8 +25,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json index 0a55d85444..158a7b0b59 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json @@ -8,16 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", - "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.ObjectModel": "15.0.0-*" }, @@ -27,8 +22,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + }, + "moq.netcore": "4.4.0-beta8" + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAdapterUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAdapterUtilitiesTests.cs index b0d436e684..62f64df029 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAdapterUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/CodeCoverageDataAdapterUtilitiesTests.cs @@ -1,5 +1,7 @@ // Copyright (c) Microsoft. All rights reserved. +using System.Xml.XPath; + namespace Microsoft.TestPlatform.Utilities.Tests { using System.Xml; @@ -25,8 +27,7 @@ public void UpdateWithCodeCoverageSettingsIfNotConfiguredShouldNotUpdateIfStatic var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(runSettingsXml); - CodeCoverageDataAdapterUtilities.UpdateWithCodeCoverageSettingsIfNotConfigured( - xmlDocument.ToXPathNavigable()); + CodeCoverageDataAdapterUtilities.UpdateWithCodeCoverageSettingsIfNotConfigured(GetXPathNavigable(xmlDocument)); var expectedRunSettings = ""; @@ -48,12 +49,20 @@ public void UpdateWithCodeCoverageSettingsIfNotConfiguredShouldNotUpdateIfDynami var xmlDocument = new XmlDocument(); xmlDocument.LoadXml(runSettingsXml); - CodeCoverageDataAdapterUtilities.UpdateWithCodeCoverageSettingsIfNotConfigured( - xmlDocument.ToXPathNavigable()); + CodeCoverageDataAdapterUtilities.UpdateWithCodeCoverageSettingsIfNotConfigured(GetXPathNavigable(xmlDocument)); var expectedRunSettings = ""; Assert.AreEqual(expectedRunSettings, xmlDocument.OuterXml); } + + private static IXPathNavigable GetXPathNavigable(XmlDocument doc) + { +#if NET46 + return doc; +#else + return doc.ToXPathNavigable(); +#endif + } } } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs b/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs index 48d33e243b..cf37982e0b 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/MSTestSettingsUtilitiesTests.cs @@ -49,7 +49,7 @@ public void ImportShouldThrowIfNotLegacySettingsFile() () => MSTestSettingsUtilities.Import( "C:\\temp\\r.runsettings", - xmlDocument.ToXPathNavigable(), + GetXPathNavigable(xmlDocument), Architecture.X86, FrameworkVersion.Framework45); ExceptionUtilities.ThrowsException(action, "Unexpected settings file specified."); @@ -66,7 +66,7 @@ public void ImportShouldThrowIfDefaultRunSettingsIsIncorrect() () => MSTestSettingsUtilities.Import( "C:\\temp\\r.testsettings", - xmlDocument.ToXPathNavigable(), + GetXPathNavigable(xmlDocument), Architecture.X86, FrameworkVersion.Framework45); ExceptionUtilities.ThrowsException(action, "Could not find 'RunSettings' node."); @@ -80,7 +80,7 @@ public void ImportShouldEmbedTestSettingsInformation() xmlDocument.LoadXml(defaultRunSettingsXml); var finalxPath = MSTestSettingsUtilities.Import( "C:\\temp\\r.testsettings", - xmlDocument.ToXPathNavigable(), + GetXPathNavigable(xmlDocument), Architecture.X86, FrameworkVersion.Framework45); @@ -100,7 +100,7 @@ public void ImportShouldEmbedTestSettingsAndDefaultRunConfigurationInformation() xmlDocument.LoadXml(defaultRunSettingsXml); var finalxPath = MSTestSettingsUtilities.Import( "C:\\temp\\r.testsettings", - xmlDocument.ToXPathNavigable(), + GetXPathNavigable(xmlDocument), Architecture.X86, FrameworkVersion.Framework45); @@ -113,5 +113,14 @@ public void ImportShouldEmbedTestSettingsAndDefaultRunConfigurationInformation() } #endregion + + private static IXPathNavigable GetXPathNavigable(XmlDocument doc) + { +#if NET46 + return doc; +#else + return doc.ToXPathNavigable(); +#endif + } } } diff --git a/test/Microsoft.TestPlatform.Utilities.UnitTests/project.json b/test/Microsoft.TestPlatform.Utilities.UnitTests/project.json index f012bd59b7..7c2b297ace 100644 --- a/test/Microsoft.TestPlatform.Utilities.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Utilities.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "Microsoft.TestPlatform.Utilities": "15.0.0-*" }, @@ -25,8 +21,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json b/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json index cf5e667806..75115eb97b 100644 --- a/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.VsTestConsole.TranslationLayer": "15.0.0-*", @@ -29,9 +25,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" -} +} \ No newline at end of file diff --git a/test/datacollector.x86.UnitTests/DataCollectionCoordinatorTests.cs b/test/datacollector.x86.UnitTests/DataCollectionCoordinatorTests.cs index 7c7ec571ce..d3eab8da62 100644 --- a/test/datacollector.x86.UnitTests/DataCollectionCoordinatorTests.cs +++ b/test/datacollector.x86.UnitTests/DataCollectionCoordinatorTests.cs @@ -8,6 +8,7 @@ namespace Microsoft.VisualStudio.TestPlatform.DataCollector.UnitTests using System.Diagnostics; using System.Linq; using System.Threading; + using System.Threading.Tasks; using Microsoft.VisualStudio.TestPlatform.Common; using Microsoft.VisualStudio.TestPlatform.DataCollector.Interfaces; @@ -27,7 +28,7 @@ public void Initialize() { this.dummyDataCollectionManagerV1 = new DummyDataCollectionManager(); this.dummyDataCollectionManagerV2 = new DummyDataCollectionManager(); - this.dataCollectionCoordinator = new DataCollectionCoordinator(new[] { dummyDataCollectionManagerV1, dummyDataCollectionManagerV2 }); + this.dataCollectionCoordinator = new DataCollectionCoordinator(new IDataCollectionManager[] { dummyDataCollectionManagerV1, dummyDataCollectionManagerV2 }); } [TestMethod] @@ -35,15 +36,15 @@ public void BeforeTestRunStartShouldReturnBeforeTestRunStartResult() { var envVars = new Dictionary(); envVars.Add("key", "value"); - this.dummyDataCollectionManagerV1.envVariables = envVars; - this.dummyDataCollectionManagerV2.envVariables = new Dictionary(); + this.dummyDataCollectionManagerV1.EnvVariables = envVars; + this.dummyDataCollectionManagerV2.EnvVariables = new Dictionary(); var result = this.dataCollectionCoordinator.BeforeTestRunStart(settingsXml: string.Empty, resetDataCollectors: true, isRunStartingNow: true); - Assert.IsTrue(this.dummyDataCollectionManagerV1.isLoadCollectorsInvoked); - Assert.IsTrue(this.dummyDataCollectionManagerV2.isLoadCollectorsInvoked); - Assert.IsTrue(this.dummyDataCollectionManagerV1.isSessionStartedInvoked); - Assert.IsTrue(this.dummyDataCollectionManagerV2.isSessionStartedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV1.IsLoadCollectorsInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV2.IsLoadCollectorsInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV1.IsSessionStartedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV2.IsSessionStartedInvoked); Assert.AreEqual(1, result.EnvironmentVariables.Count); Assert.AreEqual(envVars.Keys.First(), result.EnvironmentVariables.Keys.First()); Assert.AreEqual(envVars.Values.First(), result.EnvironmentVariables.Values.First()); @@ -54,15 +55,15 @@ public void BeforeTestRunStartShouldLoadTwoDataCollectorsInParallel() { var envVars = new Dictionary(); envVars.Add("key", "value"); - this.dummyDataCollectionManagerV1.envVariables = envVars; - this.dummyDataCollectionManagerV2.envVariables = new Dictionary(); + this.dummyDataCollectionManagerV1.EnvVariables = envVars; + this.dummyDataCollectionManagerV2.EnvVariables = new Dictionary(); var result = this.dataCollectionCoordinator.BeforeTestRunStart(settingsXml: string.Empty, resetDataCollectors: true, isRunStartingNow: true); // Verify the two collectors are invoked in parallel - Assert.IsTrue(this.dummyDataCollectionManagerV1.ThreadId > 0); - Assert.IsTrue(this.dummyDataCollectionManagerV2.ThreadId > 0); - Assert.AreNotEqual(this.dummyDataCollectionManagerV1.ThreadId, this.dummyDataCollectionManagerV2.ThreadId); + Assert.IsTrue(this.dummyDataCollectionManagerV1.TaskId > 0); + Assert.IsTrue(this.dummyDataCollectionManagerV2.TaskId > 0); + Assert.AreNotEqual(this.dummyDataCollectionManagerV1.TaskId, this.dummyDataCollectionManagerV2.TaskId); } [TestMethod] @@ -78,7 +79,7 @@ public void BeforeTestRunStartShouldReturnNullIfNoDataCollectorManagersAreProvid [TestMethod] public void BeforeTestRunStartShouldThrowExceptionIfExceptionIsThrownByDataCollectionManager() { - this.dummyDataCollectionManagerV1.loadDataCollectorsThrowException = true; + this.dummyDataCollectionManagerV1.LoadDataCollectorsThrowException = true; Assert.ThrowsException( () => @@ -95,14 +96,14 @@ public void AfterTestRunEndShouldReturnAttachments() attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); attachments1.Add(attachmentset1); - this.dummyDataCollectionManagerV1.attachments = attachments1; - this.dummyDataCollectionManagerV2.attachments = attachments1; + this.dummyDataCollectionManagerV1.Attachments = attachments1; + this.dummyDataCollectionManagerV2.Attachments = attachments1; var result = this.dataCollectionCoordinator.AfterTestRunEnd(isCancelled: false); Assert.IsNotNull(result); - Assert.IsTrue(this.dummyDataCollectionManagerV1.isSessionEndedInvoked); - Assert.IsTrue(this.dummyDataCollectionManagerV2.isSessionEndedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV1.IsSessionEndedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV2.IsSessionEndedInvoked); Assert.AreEqual(2, result.Count()); } @@ -114,15 +115,15 @@ public void AfterTestRunEndShouldGetAttachmentsFromDataCollectorManagersInParall attachmentset1.Attachments.Add(new UriDataAttachment(new Uri("DataCollection://Attachment/v11"), "AttachmentV1-Attachment1")); attachments1.Add(attachmentset1); - this.dummyDataCollectionManagerV1.attachments = attachments1; - this.dummyDataCollectionManagerV2.attachments = attachments1; + this.dummyDataCollectionManagerV1.Attachments = attachments1; + this.dummyDataCollectionManagerV2.Attachments = attachments1; var result = this.dataCollectionCoordinator.AfterTestRunEnd(isCancelled: false); // Verify the two collectors are invoked in parallel - Assert.IsTrue(this.dummyDataCollectionManagerV1.ThreadId > 0); - Assert.IsTrue(this.dummyDataCollectionManagerV2.ThreadId > 0); - Assert.AreNotEqual(this.dummyDataCollectionManagerV1.ThreadId, this.dummyDataCollectionManagerV2.ThreadId); + Assert.IsTrue(this.dummyDataCollectionManagerV1.TaskId > 0); + Assert.IsTrue(this.dummyDataCollectionManagerV2.TaskId > 0); + Assert.AreNotEqual(this.dummyDataCollectionManagerV1.TaskId, this.dummyDataCollectionManagerV2.TaskId); } [TestMethod] @@ -138,7 +139,7 @@ public void AfterTestRunEndShouldReturnNullIfNoDataCollectorManagersAreProvided( [TestMethod] public void AfterTestRunEndShouldThrowExceptionIfExceptionIsThrownByDataCollectionManager() { - this.dummyDataCollectionManagerV1.sessionEndedThrowsException = true; + this.dummyDataCollectionManagerV1.SessionEndedThrowsException = true; Assert.ThrowsException( () => @@ -152,8 +153,8 @@ public void DisposeShouldCallDisposeOfDataCollectionManagers() { this.dataCollectionCoordinator.Dispose(); - Assert.IsTrue(this.dummyDataCollectionManagerV1.isDisposedInvoked); - Assert.IsTrue(this.dummyDataCollectionManagerV2.isDisposedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV1.IsDisposedInvoked); + Assert.IsTrue(this.dummyDataCollectionManagerV2.IsDisposedInvoked); } [TestMethod] @@ -167,32 +168,32 @@ public void DisposeShouldDisposeResourcesIfNoDataCollectionManagersAreProvided() internal class DummyDataCollectionManager : IDataCollectionManager { - public bool isLoadCollectorsInvoked; - public bool isSessionStartedInvoked; - public bool isSessionEndedInvoked; - public Dictionary envVariables; - public bool loadDataCollectorsThrowException; - public Collection attachments; - public bool sessionEndedThrowsException; - public bool isDisposedInvoked; - public int ThreadId; + public bool IsLoadCollectorsInvoked; + public bool IsSessionStartedInvoked; + public bool IsSessionEndedInvoked; + public Dictionary EnvVariables; + public bool LoadDataCollectorsThrowException; + public Collection Attachments; + public bool SessionEndedThrowsException; + public bool IsDisposedInvoked; + public int TaskId; public void Dispose() { - this.isDisposedInvoked = true; + this.IsDisposedInvoked = true; } public Dictionary LoadDataCollectors(RunSettings settingsXml) { - this.ThreadId = Thread.CurrentThread.ManagedThreadId; + this.TaskId = Task.CurrentId.Value; - if (this.loadDataCollectorsThrowException) + if (this.LoadDataCollectorsThrowException) { throw new Exception("DataCollectionManagerException"); } - this.isLoadCollectorsInvoked = true; - return this.envVariables; + this.IsLoadCollectorsInvoked = true; + return this.EnvVariables; } @@ -203,21 +204,21 @@ public void TestCaseStarted(TestCaseStartEventArgs testCaseStartEventArgs) public Collection SessionEnded(bool isCancelled) { - this.ThreadId = Thread.CurrentThread.ManagedThreadId; + this.TaskId = Task.CurrentId.Value; - if (this.sessionEndedThrowsException) + if (this.SessionEndedThrowsException) { throw new Exception("DataCollectionManagerException"); } - this.isSessionEndedInvoked = true; - return this.attachments; + this.IsSessionEndedInvoked = true; + return this.Attachments; } public bool SessionStarted() { - this.ThreadId = Thread.CurrentThread.ManagedThreadId; - this.isSessionStartedInvoked = true; + this.TaskId = Task.CurrentId.Value; + this.IsSessionStartedInvoked = true; return true; } diff --git a/test/datacollector.x86.UnitTests/project.json b/test/datacollector.x86.UnitTests/project.json index f023a24637..5c0e49140d 100644 --- a/test/datacollector.x86.UnitTests/project.json +++ b/test/datacollector.x86.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "datacollector": "15.0.0-*" @@ -27,9 +23,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" -} +} \ No newline at end of file diff --git a/test/testhost.UnitTests/project.json b/test/testhost.UnitTests/project.json index f66c69f3ad..5a85dc15a9 100644 --- a/test/testhost.UnitTests/project.json +++ b/test/testhost.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015" }, @@ -26,8 +22,25 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" diff --git a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs index e6e75a2bb6..865d0755ca 100644 --- a/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs +++ b/test/vstest.console.UnitTests/Internal/ConsoleLoggerTests.cs @@ -54,8 +54,7 @@ public void InitializeShouldThrowExceptionIfEventsIsNull() [TestMethod] public void InitializeShouldNotThrowExceptionIfEventsIsNotNull() { - var events = new Mock(); - this.consoleLogger.Initialize(events.Object, null); + this.consoleLogger.Initialize(new Mock().Object, null); } [TestMethod] @@ -71,17 +70,11 @@ public void TestMessageHandlerShouldThrowExceptionIfEventArgsIsNull() [TestMethod] public void TestMessageHandlerShouldWriteToConsoleIfTestRunEventsAreRaised() { - int count = 0; - this.mockOutput.Setup(o => o.WriteLine(It.IsAny(), It.IsAny())).Callback( - (s, o) => { count++; }); - // Raise events on mock object this.testRunRequest.Raise(m => m.TestRunMessage += null, new TestRunMessageEventArgs(TestMessageLevel.Informational, "Informational123")); this.testRunRequest.Raise(m => m.TestRunMessage += null, new TestRunMessageEventArgs(TestMessageLevel.Error, "Error123")); this.testRunRequest.Raise(m => m.TestRunMessage += null, new TestRunMessageEventArgs(TestMessageLevel.Warning, "Warning123")); - - // Added this for synchronization - SpinWait.SpinUntil(() => count == 3, 300); + this.FlushLoggerMessages(); this.mockOutput.Verify(o => o.WriteLine("Information: Informational123", OutputLevel.Information), Times.Once()); this.mockOutput.Verify(o => o.WriteLine("Warning: Warning123", OutputLevel.Warning), Times.Once()); @@ -107,6 +100,7 @@ public void TestResultHandlerShouldWriteToConsoleIfTestResultEventsAreRaised() // Raise an event on mock object this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); + this.FlushLoggerMessages(); this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.PassedTestIndicator, "TestName"), OutputLevel.Information), Times.Once()); this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.FailedTestIndicator, "TestName"), OutputLevel.Information), Times.Once()); @@ -144,7 +138,7 @@ public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsPass() public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsFail() { // Raise an event on mock object raised to register test case count and mark Outcome as Outcome.Failed - var eventArgs = new TestRunChangedEventArgs(null, GetTestResultObject(TestOutcome.Failed), null); + var eventArgs = new TestRunChangedEventArgs(null, this.GetTestResultObject(TestOutcome.Failed), null); this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); // Raise an event on mock object @@ -158,7 +152,7 @@ public void TestRunCompleteHandlerShouldWriteToConsoleIfTestsFail() public void PrintTimeHandlerShouldPrintElapsedTimeOnConsole() { // Raise an event on mock object raised to register test case count - var eventArgs = new TestRunChangedEventArgs(null, GetTestResultObject(TestOutcome.Passed), null); + var eventArgs = new TestRunChangedEventArgs(null, this.GetTestResultObject(TestOutcome.Passed), null); this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); // Raise events on mock object @@ -185,6 +179,7 @@ public void DisplayFullInformationShouldWriteErrorMessageAndStackTraceToConsole( // Raise an event on mock object this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); + this.FlushLoggerMessages(); this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, "{0}{1}", Resources.TestMessageFormattingPrefix, "ErrorMessage"), OutputLevel.Error), Times.Once()); this.mockOutput.Verify(o => o.Write(string.Format(CultureInfo.CurrentCulture, "{0}", "ErrorStackTrace"), OutputLevel.Error), Times.Once()); @@ -208,6 +203,7 @@ public void GetTestMessagesShouldWriteMessageAndStackTraceToConsole() // Raise an event on mock object this.testRunRequest.Raise(m => m.OnRunStatsChange += null, eventArgs); + this.FlushLoggerMessages(); // Added this for synchronization SpinWait.SpinUntil(() => count == 3, 300); @@ -226,20 +222,17 @@ public void GetTestMessagesShouldWriteMessageAndStackTraceToConsole() public void AttachmentInformationShouldBeWrittenToConsoleIfAttachmentsArePresent() { var attachmentSet = new AttachmentSet(new Uri("test://uri"), "myattachmentset"); - var uriDataAttachment = new UriDataAttachment(new Uri("file://server/filename.ext"), "description"); attachmentSet.Attachments.Add(uriDataAttachment); - var uriDataAttachment1 = new UriDataAttachment(new Uri("file://server/filename1.ext"), "description"); attachmentSet.Attachments.Add(uriDataAttachment1); - var attachmentSetList = new List(); attachmentSetList.Add(attachmentSet); - var testRunCompleteEventArgs = new TestRunCompleteEventArgs(null, false, false, null, new Collection(attachmentSetList), new TimeSpan(1, 0, 0, 0)); // Raise an event on mock object raised to register test case count and mark Outcome as Outcome.Failed this.testRunRequest.Raise(m => m.OnRunCompletion += null, testRunCompleteEventArgs); + this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.AttachmentOutputFormat, uriDataAttachment.Uri.LocalPath), OutputLevel.Information), Times.Once()); this.mockOutput.Verify(o => o.WriteLine(string.Format(CultureInfo.CurrentCulture, Resources.AttachmentOutputFormat, uriDataAttachment1.Uri.LocalPath), OutputLevel.Information), Times.Once()); } @@ -258,9 +251,9 @@ private void Setup() this.consoleLogger.Initialize(this.events.Object, null); DummyTestLoggerManager.Cleanup(); + // Create Instance of TestLoggerManager this.testLoggerManager = TestLoggerManager.Instance; - //Console.WriteLine(TestLoggerManager.Instance.GetHashCode()); this.testLoggerManager.AddLogger(new Uri(ConsoleLogger.ExtensionUri), new Dictionary()); this.testLoggerManager.EnableLogging(); @@ -268,6 +261,14 @@ private void Setup() this.testLoggerManager.RegisterTestRunEvents(this.testRunRequest.Object); } + private void FlushLoggerMessages() + { + // Raise a test run complete message to flush out any pending messages in queue + this.testRunRequest.Raise( + m => m.OnRunCompletion += null, + new TestRunCompleteEventArgs(stats: null, isCanceled: false, isAborted: false, error: null, attachmentSets: null, elapsedTime: new TimeSpan(1, 0, 0, 0))); + } + private List GetTestResultsObject() { var testcase = new TestCase("TestName", new Uri("some://uri"), "TestSource"); @@ -300,4 +301,4 @@ private void Setup() return testresultList; } } -} +} \ No newline at end of file diff --git a/test/vstest.console.UnitTests/project.json b/test/vstest.console.UnitTests/project.json index 9a5054f7ac..756e6ed959 100644 --- a/test/vstest.console.UnitTests/project.json +++ b/test/vstest.console.UnitTests/project.json @@ -8,15 +8,11 @@ }, "dependencies": { - "Microsoft.NETCore.App": { - "type": "platform", - "version": "1.0.0" - }, - "dotnet-test-mstest": { - "version": "1.0.1-preview", + "MSTest.TestFramework": "1.0.0-preview", + "MSTest.TestAdapter": { + "version": "1.0.3-preview", "exclude": "compile" }, - "MSTest.TestFramework": "1.0.0-preview", "moq.netcore": "4.4.0-beta8", "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "vstest.console": "15.0.0-*", @@ -28,9 +24,26 @@ "imports": [ "dnxcore50", "portable-net45+win8" - ] - } + ], + + "dependencies": { + "Microsoft.NETCore.App": { + "type": "platform", + "version": "1.0.0" + }, + "dotnet-test-mstest": { + "version": "1.0.1-preview", + "exclude": "compile" + } + } + }, + + "net46": { + "frameworkAssemblies": { + "System.Runtime": "" + } + } }, "testRunner": "mstest" -} +} \ No newline at end of file From f802f9244f91346440e2171d69aae10803b2902b Mon Sep 17 00:00:00 2001 From: Arun Mahapatra Date: Fri, 12 Aug 2016 09:51:30 +0530 Subject: [PATCH 2/2] Update to Moq 4.6.36. Use MSTest.TestAdapter package path for adapter. --- scripts/test.ps1 | 5 +++-- test/Microsoft.TestPlatform.Client.UnitTests/project.json | 5 ++--- test/Microsoft.TestPlatform.Common.UnitTests/project.json | 5 ++--- .../project.json | 5 ++--- .../project.json | 5 ++--- .../project.json | 5 ++--- .../project.json | 5 ++--- .../project.json | 6 ++---- .../project.json | 5 ++--- test/datacollector.x86.UnitTests/project.json | 5 ++--- test/testhost.UnitTests/project.json | 5 ++--- test/vstest.console.UnitTests/project.json | 5 ++--- 12 files changed, 25 insertions(+), 36 deletions(-) diff --git a/scripts/test.ps1 b/scripts/test.ps1 index 8a3cd05390..1cc14bb15b 100644 --- a/scripts/test.ps1 +++ b/scripts/test.ps1 @@ -90,6 +90,7 @@ function Invoke-Test Write-Log ".. Test: Source: $_" # Tests are only built for x86 at the moment, though we don't have architecture requirement + $testAdapterPath = "$env:TP_PACKAGES_DIR\MSTest.TestAdapter\1.0.3-preview\build\_common" $testContainerName = $_.Directory.Name $testOutputPath = Join-Path $_.Directory.FullName "bin/$($Script:TPT_Configuration)/$($Script:TPT_TargetFramework)/win7-x86" $testContainerPath = Join-Path $testOutputPath "$($testContainerName).dll" @@ -99,8 +100,8 @@ function Invoke-Test } elseif (!($testContainerName -match $Script:TPT_Pattern)) { Write-Log ".. . $testContainerName doesn't match test container pattern '$($Script:TPT_Pattern)'. Skipped from run." } else { - Write-Verbose "vstest.console.exe $testContainerPath /testAdapterPath:$testOutputPath" - $output = & $vstestConsolePath $testContainerPath /testAdapterPath:"$testOutputPath" + Write-Verbose "vstest.console.exe $testContainerPath /testAdapterPath:$testAdapterPath" + $output = & $vstestConsolePath $testContainerPath /testAdapterPath:"$testAdapterPath" #Write-Verbose "$dotnetExe test $_ --configuration $Configuration" #& $dotnetExe test $_ --configuration $Configuration diff --git a/test/Microsoft.TestPlatform.Client.UnitTests/project.json b/test/Microsoft.TestPlatform.Client.UnitTests/project.json index 00245336a9..692fc0dfb8 100644 --- a/test/Microsoft.TestPlatform.Client.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Client.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.Client": "15.0.0-*" }, @@ -45,4 +44,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Common.UnitTests/project.json b/test/Microsoft.TestPlatform.Common.UnitTests/project.json index 7abef37a51..a832196f9b 100644 --- a/test/Microsoft.TestPlatform.Common.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Common.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.Common": "15.0.0-*" }, @@ -45,4 +44,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json index 565df3a692..6b9e68f0c6 100644 --- a/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CommunicationUtilities.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.CommunicationUtilities": "15.0.0-*" }, @@ -45,4 +44,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json index f042dc1712..5f382f4384 100644 --- a/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CoreUtilities.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.CoreUtilities": "15.0.0-*" }, @@ -45,4 +44,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json index 9706aedb3e..636335e911 100644 --- a/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.CrossPlatEngine.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.CrossPlatEngine": "15.0.0-*", "Microsoft.TestPlatform.ObjectModel": "15.0.0-*", "Microsoft.TestPlatform.Common": "15.0.0-*", @@ -48,4 +47,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json index 19191fe6cb..329ffa3937 100644 --- a/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.Extensions.TrxLogger.UnitTests/project.json @@ -13,11 +13,10 @@ "version": "1.0.0-preview", "exclude": "compile" }, - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.Client": "15.0.0-*", "Microsoft.TestPlatform.Extensions.TrxLogger": "15.0.0-*", "Microsoft.TestPlatform.ObjectModel": "15.0.0-*", - "moq.netcore": "4.4.0-beta8" + "Moq": "4.6.36-*" }, "frameworks": { @@ -47,4 +46,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json index 158a7b0b59..578fad9187 100644 --- a/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.ObjectModel.UnitTests/project.json @@ -13,7 +13,6 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", "Microsoft.TestPlatform.ObjectModel": "15.0.0-*" }, @@ -32,8 +31,7 @@ "dotnet-test-mstest": { "version": "1.0.1-preview", "exclude": "compile" - }, - "moq.netcore": "4.4.0-beta8" + } } }, @@ -45,4 +43,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json b/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json index 75115eb97b..d3dca8acdf 100644 --- a/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json +++ b/test/Microsoft.TestPlatform.VsTestConsole.TranslationLayer.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "Microsoft.TestPlatform.VsTestConsole.TranslationLayer": "15.0.0-*", "Microsoft.TestPlatform.CommunicationUtilities": "15.0.0-*", "Microsoft.TestPlatform.ObjectModel": "15.0.0-*" @@ -47,4 +46,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/datacollector.x86.UnitTests/project.json b/test/datacollector.x86.UnitTests/project.json index 5c0e49140d..fa5bf1e1a9 100644 --- a/test/datacollector.x86.UnitTests/project.json +++ b/test/datacollector.x86.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "datacollector": "15.0.0-*" }, @@ -45,4 +44,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/testhost.UnitTests/project.json b/test/testhost.UnitTests/project.json index 5a85dc15a9..f8c840e75d 100644 --- a/test/testhost.UnitTests/project.json +++ b/test/testhost.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015" + "Moq": "4.6.36-*" }, "frameworks": { @@ -44,4 +43,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +} diff --git a/test/vstest.console.UnitTests/project.json b/test/vstest.console.UnitTests/project.json index 756e6ed959..fc1fea0893 100644 --- a/test/vstest.console.UnitTests/project.json +++ b/test/vstest.console.UnitTests/project.json @@ -13,8 +13,7 @@ "version": "1.0.3-preview", "exclude": "compile" }, - "moq.netcore": "4.4.0-beta8", - "System.Diagnostics.TraceSource": "4.0.0-rc2-24015", + "Moq": "4.6.36-*", "vstest.console": "15.0.0-*", "Microsoft.TestPlatform.Client": "15.0.0-*" }, @@ -46,4 +45,4 @@ }, "testRunner": "mstest" -} \ No newline at end of file +}