Merge pull request #9306 from dotnet/merges/release/2.1.4xx-to-master

Merge release/2.1.4xx to master
This commit is contained in:
Livar 2018-05-17 13:41:23 -07:00 committed by GitHub
commit e338e46e10
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
21 changed files with 117 additions and 19 deletions

View file

@ -39,7 +39,7 @@
<VersionPrefix>$(CliVersionPrefix)</VersionPrefix> <VersionPrefix>$(CliVersionPrefix)</VersionPrefix>
<VersionSuffix>$(VersionSuffix)</VersionSuffix> <VersionSuffix>$(VersionSuffix)</VersionSuffix>
<Clean>False</Clean> <Clean>False</Clean>
<MsbuildArgs>/p:TargetFramework=netstandard2.0</MsbuildArgs> <MsbuildArgs>/p:TargetFramework=netstandard2.0 /p:NoWarn=NU5104</MsbuildArgs>
</BaseTestPackageProject> </BaseTestPackageProject>
<BaseTestPackageProject Include="src/Microsoft.DotNet.InternalAbstractions"> <BaseTestPackageProject Include="src/Microsoft.DotNet.InternalAbstractions">
<Name>Microsoft.DotNet.InternalAbstractions</Name> <Name>Microsoft.DotNet.InternalAbstractions</Name>

View file

@ -150,4 +150,7 @@
<data name="CreateSubcommandHelpText" xml:space="preserve"> <data name="CreateSubcommandHelpText" xml:space="preserve">
<value>Create a solution file.</value> <value>Create a solution file.</value>
</data> </data>
<data name="ProjectsHeader" xml:space="preserve">
<value>Project(s)</value>
</data>
</root> </root>

View file

@ -36,9 +36,9 @@ namespace Microsoft.DotNet.Tools.Sln.List
} }
else else
{ {
Reporter.Output.WriteLine($"{CommonLocalizableStrings.ProjectReferenceOneOrMore}"); Reporter.Output.WriteLine($"{LocalizableStrings.ProjectsHeader}");
Reporter.Output.WriteLine(new string('-', CommonLocalizableStrings.ProjectReferenceOneOrMore.Length)); Reporter.Output.WriteLine(new string('-', LocalizableStrings.ProjectsHeader.Length));
foreach (var slnProject in slnFile.Projects) foreach (var slnProject in slnFile.Projects.Where(p => p.TypeGuid != ProjectTypeGuids.SolutionFolderGuid))
{ {
Reporter.Output.WriteLine(slnProject.FilePath); Reporter.Output.WriteLine(slnProject.FilePath);
} }

View file

@ -57,6 +57,11 @@
<target state="translated">Vytvoří soubor řešení.</target> <target state="translated">Vytvoří soubor řešení.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Erstellt eine Projektmappendatei.</target> <target state="translated">Erstellt eine Projektmappendatei.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Cree un archivo de la solución.</target> <target state="translated">Cree un archivo de la solución.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Créez un fichier solution.</target> <target state="translated">Créez un fichier solution.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Consente di creare un file di soluzione.</target> <target state="translated">Consente di creare un file di soluzione.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">ソリューション ファイルを作成します。</target> <target state="translated">ソリューション ファイルを作成します。</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">솔루션 파일을 만듭니다.</target> <target state="translated">솔루션 파일을 만듭니다.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Utwórz plik rozwiązania.</target> <target state="translated">Utwórz plik rozwiązania.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Criar um arquivo de solução.</target> <target state="translated">Criar um arquivo de solução.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Создает файл решения.</target> <target state="translated">Создает файл решения.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">Bir çözüm dosyası oluşturun.</target> <target state="translated">Bir çözüm dosyası oluşturun.</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">创建解决方案文件。</target> <target state="translated">创建解决方案文件。</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

@ -57,6 +57,11 @@
<target state="translated">建立方案檔。</target> <target state="translated">建立方案檔。</target>
<note /> <note />
</trans-unit> </trans-unit>
<trans-unit id="ProjectsHeader">
<source>Project(s)</source>
<target state="new">Project(s)</target>
<note />
</trans-unit>
</body> </body>
</file> </file>
</xliff> </xliff>

View file

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

View file

@ -86,7 +86,7 @@
<DotNetPublish ToolPath="$(PreviousStageDirectory)" <DotNetPublish ToolPath="$(PreviousStageDirectory)"
Configuration="$(Configuration)" Configuration="$(Configuration)"
ProjectPath="$(SrcDirectory)/tool_fsharp/tool_fsc.csproj" /> ProjectPath="$(SrcDirectory)/tool_fsharp/tool_fsc.csproj" MSBuildArgs="/p:PublishDir=$(FSharpDirectory)" />
</Target> </Target>
<Target Name="GenerateCliRuntimeConfigurationFiles" <Target Name="GenerateCliRuntimeConfigurationFiles"

View file

@ -2,11 +2,8 @@
<Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.tasks))\dir.tasks" /> <Import Project="$([MSBuild]::GetDirectoryNameOfFileAbove($(MSBuildThisFileDirectory), dir.tasks))\dir.tasks" />
<PropertyGroup> <PropertyGroup>
<VersionPrefix>$(CliVersionPrefix)</VersionPrefix>
<TargetFramework>$(CliTargetFramework)</TargetFramework> <TargetFramework>$(CliTargetFramework)</TargetFramework>
<GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles>
<PublishDir>$(FSharpDirectory)</PublishDir>
<VersionSuffix>$(CommitCount)</VersionSuffix>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>

View file

@ -9,6 +9,7 @@ using System;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using Xunit; using Xunit;
using CommandLocalizableStrings = Microsoft.DotNet.Tools.Sln.LocalizableStrings;
namespace Microsoft.DotNet.Cli.Sln.List.Tests namespace Microsoft.DotNet.Cli.Sln.List.Tests
{ {
@ -160,7 +161,7 @@ Commands:
} }
[Fact] [Fact]
public void WhenNoProjectReferencesArePresentInTheSolutionItPrintsANoProjectMessage() public void WhenNoProjectsArePresentInTheSolutionItPrintsANoProjectMessage()
{ {
var projectDirectory = TestAssets var projectDirectory = TestAssets
.Get("TestAppWithEmptySln") .Get("TestAppWithEmptySln")
@ -177,11 +178,10 @@ Commands:
} }
[Fact] [Fact]
public void WhenProjectReferencesArePresentInTheSolutionItListsThem() public void WhenProjectsPresentInTheSolutionItListsThem()
{ {
string OutputText = CommonLocalizableStrings.ProjectReferenceOneOrMore; var expectedOutput = $@"{CommandLocalizableStrings.ProjectsHeader}
OutputText += $@" {new string('-', CommandLocalizableStrings.ProjectsHeader.Length)}
{new string('-', OutputText.Length)}
{Path.Combine("App", "App.csproj")} {Path.Combine("App", "App.csproj")}
{Path.Combine("Lib", "Lib.csproj")}"; {Path.Combine("Lib", "Lib.csproj")}";
@ -196,7 +196,7 @@ Commands:
.WithWorkingDirectory(projectDirectory) .WithWorkingDirectory(projectDirectory)
.ExecuteWithCapturedOutput("sln list"); .ExecuteWithCapturedOutput("sln list");
cmd.Should().Pass(); cmd.Should().Pass();
cmd.StdOut.Should().BeVisuallyEquivalentTo(OutputText); cmd.StdOut.Should().BeVisuallyEquivalentTo(expectedOutput);
} }
} }
} }

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] [Fact]
public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven() public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven()
{ {