Merge pull request #9302 from mayankbansal018/dotnetvstestargs

Multiple Logger/TestAdapter inputs from dotnet CLI
This commit is contained in:
Peter Huene 2018-05-17 10:41:01 -07:00 committed by GitHub
commit 7be6af8c3b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 38 additions and 5 deletions

View file

@ -40,19 +40,19 @@ namespace Microsoft.DotNet.Cli
Create.Option(
"-a|--test-adapter-path",
LocalizableStrings.CmdTestAdapterPathDescription,
Accept.ExactlyOneArgument()
Accept.OneOrMoreArguments()
.With(name: LocalizableStrings.CmdTestAdapterPath)
.ForwardAsSingle(o => $"-property:VSTestTestAdapterPath={o.Arguments.Single()}")),
.ForwardAsSingle(o => $"-property:VSTestTestAdapterPath=\"{string.Join(";", o.Arguments)}\"")),
Create.Option(
"-l|--logger",
LocalizableStrings.CmdLoggerDescription,
Accept.ExactlyOneArgument()
Accept.OneOrMoreArguments()
.With(name: LocalizableStrings.CmdLoggerOption)
.ForwardAsSingle(o =>
{
var loggersString = string.Join(";", GetSemiColonEscapedArgs(o.Arguments));
return $"-property:VSTestLogger={loggersString}";
return $"-property:VSTestLogger=\"{loggersString}\"";
})),
CommonOptions.ConfigurationOption(),
CommonOptions.FrameworkOption(),
@ -116,4 +116,4 @@ namespace Microsoft.DotNet.Cli
return array;
}
}
}
}

View file

@ -131,6 +131,39 @@ namespace Microsoft.DotNet.Cli.Test.Tests
}
}
[Fact]
public void ItAcceptsMultipleLoggersAsCliArguments()
{
// Copy and restore VSTestCore project in output directory of project dotnet-vstest.Tests
var testProjectDirectory = this.CopyAndRestoreVSTestDotNetCoreTestApp("10");
string trxLoggerDirectory = Path.Combine(testProjectDirectory, "RD");
// Delete trxLoggerDirectory if it exist
if (Directory.Exists(trxLoggerDirectory))
{
Directory.Delete(trxLoggerDirectory, true);
}
// Call test with logger enable
CommandResult result = new DotnetTestCommand()
.WithWorkingDirectory(testProjectDirectory)
.ExecuteWithCapturedOutput("--logger \"trx;logfilename=custom.trx\" --logger console;verbosity=normal -- RunConfiguration.ResultsDirectory=" + trxLoggerDirectory);
// Verify
var trxFilePath = Path.Combine(trxLoggerDirectory, "custom.trx");
Assert.True(File.Exists(trxFilePath));
result.StdOut.Should().Contain(trxFilePath);
result.StdOut.Should().Contain("Passed VSTestPassTest");
result.StdOut.Should().Contain("Failed VSTestFailTest");
// Cleanup trxLoggerDirectory if it exist
if (Directory.Exists(trxLoggerDirectory))
{
Directory.Delete(trxLoggerDirectory, true);
}
}
[Fact]
public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven()
{