Insert Microsoft.TestPlatform.cli for update3 preview1 (#6420)

* Fix test issue failing with PathTooLongIssue

(cherry picked from commit 340254f7742201c74ed1a5c349bdca89113bd5dc)

* fix for issues:
1) https://github.com/Microsoft/vstest/issues/755
2) https://github.com/Microsoft/vstest/issues/687
3) https://github.com/Microsoft/vstest/issues/737

(cherry picked from commit 0e93b2a5d4734637538781fa5401ed81a31eea0f)

* use new version

* Update version

* Fix pathtoolong issue

* Fix test
This commit is contained in:
Faizan2304 2017-05-02 21:30:51 -07:00 committed by Livar
parent a551ae77b0
commit b90b191ef0
16 changed files with 93 additions and 51 deletions

View file

@ -2,7 +2,6 @@
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" /> <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), testAsset.props))\testAsset.props" />
<PropertyGroup> <PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>net46;netcoreapp2.0</TargetFrameworks> <TargetFrameworks>net46;netcoreapp2.0</TargetFrameworks>
</PropertyGroup> </PropertyGroup>

View file

@ -7,7 +7,7 @@
<CLI_NETSDK_Version>2.0.0-alpha-20170502-2</CLI_NETSDK_Version> <CLI_NETSDK_Version>2.0.0-alpha-20170502-2</CLI_NETSDK_Version>
<CLI_NuGet_Version>4.3.0-beta1-2418</CLI_NuGet_Version> <CLI_NuGet_Version>4.3.0-beta1-2418</CLI_NuGet_Version>
<CLI_WEBSDK_Version>1.0.0-rel-20170501-473</CLI_WEBSDK_Version> <CLI_WEBSDK_Version>1.0.0-rel-20170501-473</CLI_WEBSDK_Version>
<CLI_TestPlatform_Version>15.1.0-preview-20170414-04</CLI_TestPlatform_Version> <CLI_TestPlatform_Version>15.3.0-preview-20170502-03</CLI_TestPlatform_Version>
<SharedFrameworkVersion>$(CLI_SharedFrameworkVersion)</SharedFrameworkVersion> <SharedFrameworkVersion>$(CLI_SharedFrameworkVersion)</SharedFrameworkVersion>
<SharedHostVersion>$(CLI_SharedFrameworkVersion)</SharedHostVersion> <SharedHostVersion>$(CLI_SharedFrameworkVersion)</SharedHostVersion>
<HostFxrVersion>$(CLI_SharedFrameworkVersion)</HostFxrVersion> <HostFxrVersion>$(CLI_SharedFrameworkVersion)</HostFxrVersion>

View file

@ -37,7 +37,8 @@ namespace Microsoft.DotNet.Tools.Test
public const string CmdLoggerOption = "LoggerUri/FriendlyName"; public const string CmdLoggerOption = "LoggerUri/FriendlyName";
public const string CmdLoggerDescription = @"Specify a logger for test results. public const string CmdLoggerDescription = @"Specify a logger for test results.
Example: --logger ""trx[;LogFileName=<Defaults to unique file name>]"""; Example: --logger ""trx[;LogFileName=<Defaults to unique file name>]""
More info on logger arguments support:https://aka.ms/vstest-report";
public const string CmdConfiguration = "CONFIGURATION"; public const string CmdConfiguration = "CONFIGURATION";
@ -58,12 +59,22 @@ namespace Microsoft.DotNet.Tools.Test
public const string CmdNoBuildDescription = @"Do not build project before testing."; public const string CmdNoBuildDescription = @"Do not build project before testing.";
public const string RunSettingsArgsHelpText = @"Any extra command-line runsettings arguments that should be passed to vstest. See 'dotnet vstest --help' for available options.
Example: -- RunConfiguration.ResultsDirectory=""C:\users\user\desktop\Results Directory"" MSTest.DeploymentEnabled=false";
public const string CmdResultsDirectoryDescription = @"The directory where the test results are going to be placed. The specified directory will be created if it does not exist. public const string CmdResultsDirectoryDescription = @"The directory where the test results are going to be placed. The specified directory will be created if it does not exist.
Example: --results-directory <PATH_TO_RESULTS_DIRECTORY>"; Example: --results-directory <PATH_TO_RESULTS_DIRECTORY>";
public const string CmdPathToResultsDirectory = "PATH_TO_RESULTS_DIRECTORY"; public const string CmdPathToResultsDirectory = "PATH_TO_RESULTS_DIRECTORY";
public const string RunSettingsArgumentsDescription = @"
RunSettings arguments:
Arguments to pass runsettings configurations through commandline. Arguments may be specified as name-value pair of the form [name]=[value] after ""-- "". Note the space after --.
Use a space to separate multiple[name] =[value].
More info on RunSettings arguments support: https://aka.ms/vstest-runsettings-arguments
Example: dotnet test -- MSTest.DeploymentEnabled=false MSTest.MapInconclusiveToFailed=True";
public const string cmdCollectFriendlyName = "DATA_COLLECTOR_FRIENDLY_NAME";
public const string cmdCollectDescription = @"Enables data collector for the test run.
More info here : https://aka.ms/vstest-collect";
} }
} }

View file

@ -21,7 +21,7 @@ namespace Microsoft.DotNet.Tools.Test
{ {
} }
public static TestCommand FromArgs(string[] args, string msbuildPath=null) public static TestCommand FromArgs(string[] args, string msbuildPath = null)
{ {
var msbuildArgs = new List<string>() var msbuildArgs = new List<string>()
{ {
@ -34,6 +34,7 @@ namespace Microsoft.DotNet.Tools.Test
var result = parser.ParseFrom("dotnet test", args); var result = parser.ParseFrom("dotnet test", args);
UpdateRunSettingsArgumentsText();
result.ShowHelpOrErrorIfAppropriate(); result.ShowHelpOrErrorIfAppropriate();
var parsedTest = result["dotnet"]["test"]; var parsedTest = result["dotnet"]["test"];
@ -53,6 +54,17 @@ namespace Microsoft.DotNet.Tools.Test
msbuildArgs.Add($"/p:VSTestCLIRunSettings=\"{runSettingsArg}\""); msbuildArgs.Add($"/p:VSTestCLIRunSettings=\"{runSettingsArg}\"");
} }
var verbosityArg = msbuildArgs.LastOrDefault(arg => arg.StartsWith("/verbosity"));
if (!string.IsNullOrEmpty(verbosityArg))
{
var verbosity = verbosityArg.Split(':');
if (verbosity.Length == 2)
{
msbuildArgs.Add($"/p:VSTestVerbosity={verbosity[1]}");
}
}
return new TestCommand(msbuildArgs, msbuildPath); return new TestCommand(msbuildArgs, msbuildPath);
} }
@ -96,5 +108,11 @@ namespace Microsoft.DotNet.Tools.Test
return array; return array;
} }
private static void UpdateRunSettingsArgumentsText()
{
DefaultHelpViewText.Synopsis.AdditionalArguments = " [[--] <RunSettings arguments>...]]";
DefaultHelpViewText.AdditionalArgumentsSection = LocalizableStrings.RunSettingsArgumentsDescription;
}
} }
} }

View file

@ -14,6 +14,7 @@ namespace Microsoft.DotNet.Cli
Accept.ZeroOrMoreArguments() Accept.ZeroOrMoreArguments()
.With(name: LocalizableStrings.CmdArgProject, .With(name: LocalizableStrings.CmdArgProject,
description: LocalizableStrings.CmdArgDescription), description: LocalizableStrings.CmdArgDescription),
false,
CommonOptions.HelpOption(), CommonOptions.HelpOption(),
Create.Option( Create.Option(
"-s|--settings", "-s|--settings",
@ -74,6 +75,12 @@ namespace Microsoft.DotNet.Cli
Accept.ExactlyOneArgument() Accept.ExactlyOneArgument()
.With(name: LocalizableStrings.CmdPathToResultsDirectory) .With(name: LocalizableStrings.CmdPathToResultsDirectory)
.ForwardAsSingle(o => $"/p:VSTestResultsDirectory={o.Arguments.Single()}")), .ForwardAsSingle(o => $"/p:VSTestResultsDirectory={o.Arguments.Single()}")),
Create.Option(
"--collect",
LocalizableStrings.cmdCollectDescription,
Accept.OneOrMoreArguments()
.With(name: LocalizableStrings.cmdCollectFriendlyName)
.ForwardAsSingle(o => $"/p:VSTestCollect=\"{string.Join(";", o.Arguments)}\"")),
CommonOptions.VerbosityOption()); CommonOptions.VerbosityOption());
private static string GetSemiColonEsacpedstring(string arg) private static string GetSemiColonEsacpedstring(string arg)

View file

@ -73,7 +73,7 @@ namespace Microsoft.DotNet.Restore.Tests
[Fact] [Fact]
public void ItRestoresTestAppToSpecificDirectory() public void ItRestoresTestAppToSpecificDirectory()
{ {
var rootPath = TestAssets.Get("VSTestDotNetCore").CreateInstance().WithSourceFiles().Root.FullName; var rootPath = TestAssets.Get("VSTestCore").CreateInstance().WithSourceFiles().Root.FullName;
string dir = "pkgs"; string dir = "pkgs";
string fullPath = Path.GetFullPath(Path.Combine(rootPath, dir)); string fullPath = Path.GetFullPath(Path.Combine(rootPath, dir));

View file

@ -12,11 +12,11 @@ namespace Microsoft.DotNet.Cli.Test.Tests
{ {
public class GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM : TestBase public class GivenDotnetTestBuildsAndRunsTestFromCsprojForMultipleTFM : TestBase
{ {
[WindowsOnlyFact(Skip="https://github.com/dotnet/cli/issues/4616")] [WindowsOnlyFact]
public void MStestMultiTFM() public void MStestMultiTFM()
{ {
var testProjectDirectory = TestAssets.Get("VSTestDesktopAndNetCore") var testProjectDirectory = TestAssets.Get("VSTestMulti")
.CreateInstance() .CreateInstance("1")
.WithSourceFiles() .WithSourceFiles()
.WithNuGetConfig(new RepoDirectoriesProvider().TestPackages) .WithNuGetConfig(new RepoDirectoriesProvider().TestPackages)
.Root; .Root;
@ -45,15 +45,15 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[WindowsOnlyFact] [WindowsOnlyFact]
public void XunitMultiTFM() public void XunitMultiTFM()
{ {
// Copy VSTestXunitDesktopAndNetCore project in output directory of project dotnet-test.Tests // Copy XunitMulti project in output directory of project dotnet-test.Tests
string testAppName = "VSTestXunitDesktopAndNetCore"; string testAppName = "XunitMulti";
var testInstance = TestAssets.Get(testAppName) var testInstance = TestAssets.Get(testAppName)
.CreateInstance() .CreateInstance("2")
.WithSourceFiles(); .WithSourceFiles();
var testProjectDirectory = testInstance.Root.FullName; var testProjectDirectory = testInstance.Root.FullName;
// Restore project VSTestXunitDesktopAndNetCore // Restore project XunitMulti
new RestoreCommand() new RestoreCommand()
.WithWorkingDirectory(testProjectDirectory) .WithWorkingDirectory(testProjectDirectory)
.Execute() .Execute()

View file

@ -17,20 +17,7 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[Fact] [Fact]
public void MSTestSingleTFM() public void MSTestSingleTFM()
{ {
// Copy VSTestDotNetCore project in output directory of project dotnet-vstest.Tests var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("3");
string testAppName = "VSTestDotNetCore";
var testInstance = TestAssets.Get(testAppName)
.CreateInstance()
.WithSourceFiles();
var testProjectDirectory = testInstance.Root.FullName;
// Restore project VSTestDotNetCore
new RestoreCommand()
.WithWorkingDirectory(testProjectDirectory)
.Execute()
.Should()
.Pass();
// Call test // Call test
CommandResult result = new DotnetTestCommand() CommandResult result = new DotnetTestCommand()
@ -47,15 +34,15 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[Fact] [Fact]
public void XunitSingleTFM() public void XunitSingleTFM()
{ {
// Copy VSTestXunitDotNetCore project in output directory of project dotnet-vstest.Tests // Copy XunitCore project in output directory of project dotnet-vstest.Tests
string testAppName = "VSTestXunitDotNetCore"; string testAppName = "XunitCore";
var testInstance = TestAssets.Get(testAppName) var testInstance = TestAssets.Get(testAppName)
.CreateInstance() .CreateInstance("4")
.WithSourceFiles(); .WithSourceFiles();
var testProjectDirectory = testInstance.Root.FullName; var testProjectDirectory = testInstance.Root.FullName;
// Restore project VSTestXunitDotNetCore // Restore project XunitCore
new RestoreCommand() new RestoreCommand()
.WithWorkingDirectory(testProjectDirectory) .WithWorkingDirectory(testProjectDirectory)
.Execute() .Execute()
@ -77,11 +64,11 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[Fact] [Fact]
public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven() public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven()
{ {
// Copy and restore VSTestDotNetCore project in output directory of project dotnet-vstest.Tests // Copy and restore VSTestCore project in output directory of project dotnet-vstest.Tests
var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp(); var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("5");
string configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug"; string configuration = Environment.GetEnvironmentVariable("CONFIGURATION") ?? "Debug";
string expectedError = Path.Combine(testProjectDirectory, "bin", string expectedError = Path.Combine(testProjectDirectory, "bin",
configuration, "netcoreapp2.0", "VSTestDotNetCore.dll"); configuration, "netcoreapp2.0", "VSTestCore.dll");
expectedError = "The test source file " + "\"" + expectedError + "\"" + " provided was not found."; expectedError = "The test source file " + "\"" + expectedError + "\"" + " provided was not found.";
// Call test // Call test
@ -96,10 +83,10 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[Fact] [Fact]
public void TestWillCreateTrxLoggerInTheSpecifiedResultsDirectoryBySwitch() public void TestWillCreateTrxLoggerInTheSpecifiedResultsDirectoryBySwitch()
{ {
// Copy and restore VSTestDotNetCore project in output directory of project dotnet-vstest.Tests // Copy and restore VSTestCore project in output directory of project dotnet-vstest.Tests
var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp(); var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("6");
string trxLoggerDirectory = Path.Combine(testProjectDirectory, "TestResults", "netcoreappx.y"); string trxLoggerDirectory = Path.Combine(testProjectDirectory, "TR", "x.y");
// Delete trxLoggerDirectory if it exist // Delete trxLoggerDirectory if it exist
if (Directory.Exists(trxLoggerDirectory)) if (Directory.Exists(trxLoggerDirectory))
@ -127,10 +114,10 @@ namespace Microsoft.DotNet.Cli.Test.Tests
[Fact] [Fact]
public void ItCreatesTrxReportInTheSpecifiedResultsDirectoryByArgs() public void ItCreatesTrxReportInTheSpecifiedResultsDirectoryByArgs()
{ {
// Copy and restore VSTestDotNetCore project in output directory of project dotnet-vstest.Tests // Copy and restore VSTestCore project in output directory of project dotnet-vstest.Tests
var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp(); var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("7");
string trxLoggerDirectory = Path.Combine(testProjectDirectory, "ResultsDirectory"); string trxLoggerDirectory = Path.Combine(testProjectDirectory, "RD");
// Delete trxLoggerDirectory if it exist // Delete trxLoggerDirectory if it exist
if (Directory.Exists(trxLoggerDirectory)) if (Directory.Exists(trxLoggerDirectory))
@ -155,12 +142,14 @@ namespace Microsoft.DotNet.Cli.Test.Tests
} }
} }
[Fact(Skip = "https://github.com/dotnet/cli/issues/5035")] [Fact]
public void ItBuildsAndTestsAppWhenRestoringToSpecificDirectory() public void ItBuildsAndTestsAppWhenRestoringToSpecificDirectory()
{ {
var rootPath = TestAssets.Get("VSTestDotNetCore").CreateInstance().WithSourceFiles().Root.FullName; // Creating folder with name short name "RestoreTest" to avoid PathTooLongException
var rootPath = TestAssets.Get("VSTestCore").CreateInstance("8").WithSourceFiles().Root.FullName;
string dir = "pkgs"; // Moving pkgs folder on top to avoid PathTooLongException
string dir = @"..\..\..\..\pkgs";
string fullPath = Path.GetFullPath(Path.Combine(rootPath, dir)); string fullPath = Path.GetFullPath(Path.Combine(rootPath, dir));
string args = $"--packages \"{dir}\""; string args = $"--packages \"{dir}\"";
@ -186,17 +175,35 @@ namespace Microsoft.DotNet.Cli.Test.Tests
result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest"); result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest");
} }
[Fact]
public void ItUsesVerbosityPassedToDefineVerbosityOfConsoleLoggerOfTheTests()
{
// Copy and restore VSTestCore project in output directory of project dotnet-vstest.Tests
var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("9");
// Call test
CommandResult result = new DotnetTestCommand()
.WithWorkingDirectory(testProjectDirectory)
.ExecuteWithCapturedOutput("-v q");
// Verify
result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.");
result.StdOut.Should().NotContain("Passed TestNamespace.VSTestTests.VSTestPassTest");
result.StdOut.Should().NotContain("Failed TestNamespace.VSTestTests.VSTestFailTest");
result.ExitCode.Should().Be(1);
}
private string CopyAndRestoreVSTestDotNetCoreTestApp([CallerMemberName] string callingMethod = "") private string CopyAndRestoreVSTestDotNetCoreTestApp([CallerMemberName] string callingMethod = "")
{ {
// Copy VSTestDotNetCore project in output directory of project dotnet-vstest.Tests // Copy VSTestCore project in output directory of project dotnet-vstest.Tests
string testAppName = "VSTestDotNetCore"; string testAppName = "VSTestCore";
var testInstance = TestAssets.Get(testAppName) var testInstance = TestAssets.Get(testAppName)
.CreateInstance(callingMethod) .CreateInstance(callingMethod)
.WithSourceFiles(); .WithSourceFiles();
var testProjectDirectory = testInstance.Root.FullName; var testProjectDirectory = testInstance.Root.FullName;
// Restore project VSTestDotNetCore // Restore project VSTestCore
new RestoreCommand() new RestoreCommand()
.WithWorkingDirectory(testProjectDirectory) .WithWorkingDirectory(testProjectDirectory)
.Execute() .Execute()

View file

@ -16,7 +16,7 @@ namespace Microsoft.DotNet.Cli.VSTest.Tests
[Fact] [Fact]
public void TestsFromAGivenContainerShouldRunWithExpectedOutput() public void TestsFromAGivenContainerShouldRunWithExpectedOutput()
{ {
var testAppName = "VSTestDotNetCore"; var testAppName = "VSTestCore";
var testRoot = TestAssets.Get(testAppName) var testRoot = TestAssets.Get(testAppName)
.CreateInstance() .CreateInstance()
.WithSourceFiles() .WithSourceFiles()