1) Added support to run test from test3 verb for the project targeting multiple TFM
2) Added test to address above change 3) Crossgen were creating problem for full CLR built assemblies. Removed All those assembly from Crossgen list. 4) Removed the line of code which were deleting Extensions folder under sdk folder as this folder contain trx logger dlls
This commit is contained in:
parent
a0ee0f6d94
commit
33caa408a1
8 changed files with 243 additions and 9 deletions
40
TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/Tests.cs
Normal file
40
TestAssets/TestProjects/VSTestDesktopAndNetCoreApp/Tests.cs
Normal file
|
@ -0,0 +1,40 @@
|
|||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
|
||||
namespace TestNamespace
|
||||
{
|
||||
public class Program
|
||||
{
|
||||
public static void Main(string[] args)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
[TestClass]
|
||||
public class VSTestTests
|
||||
{
|
||||
[TestMethod]
|
||||
public void VSTestPassTest()
|
||||
{
|
||||
}
|
||||
|
||||
[TestMethod]
|
||||
public void VSTestFailTest()
|
||||
{
|
||||
Assert.Fail();
|
||||
}
|
||||
|
||||
#if DESKTOP
|
||||
[TestMethod]
|
||||
public void VSTestPassTestDesktop()
|
||||
{
|
||||
}
|
||||
#else
|
||||
[TestMethod]
|
||||
public void VSTestFailTestNetCoreApp()
|
||||
{
|
||||
Assert.Fail();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" />
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFrameworks>net46;netcoreapp1.0</TargetFrameworks>
|
||||
<OutputPath>bin\$(Configuration)</OutputPath>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'netcoreapp1.0'">
|
||||
<DefineConstants>NETCOREAPP;$(DefineConstants)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<PropertyGroup Condition="'$(TargetFramework)' == 'net46'">
|
||||
<DefineConstants>DESKTOP;$(DefineConstants)</DefineConstants>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Compile Include="**\*.cs" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup Condition="'$(TargetFramework)' == 'netcoreapp1.0'">
|
||||
<PackageReference Include="Microsoft.NETCore.App">
|
||||
<Version>1.0.1</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Microsoft.NET.Sdk">
|
||||
<Version>1.0.0-alpha-20161019-1</Version>
|
||||
<PrivateAssets>All</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MSTest.TestFramework">
|
||||
<Version>1.0.5-preview</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MSTest.TestAdapter">
|
||||
<Version>1.1.4-preview</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.TestPlatform.TestHost">
|
||||
<Version>15.0.0-preview-20161025-02</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft.CSharp.targets" />
|
||||
</Project>
|
|
@ -21,13 +21,13 @@
|
|||
<PrivateAssets>All</PrivateAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MSTest.TestFramework">
|
||||
<Version>1.0.4-preview</Version>
|
||||
<Version>1.0.5-preview</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="MSTest.TestAdapter">
|
||||
<Version>1.1.3-preview</Version>
|
||||
<Version>1.1.4-preview</Version>
|
||||
</PackageReference>
|
||||
<PackageReference Include="Microsoft.TestPlatform.TestHost">
|
||||
<Version>15.0.0-preview-20161005-01</Version>
|
||||
<Version>15.0.0-preview-20161025-02</Version>
|
||||
</PackageReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildExtensionsPath)\Microsoft.CSharp.targets" />
|
||||
|
|
|
@ -171,7 +171,10 @@
|
|||
<!-- Crossgen the Shared Framework -->
|
||||
<ItemGroup>
|
||||
<SdkFiles Remove="*" />
|
||||
<SdkFiles Include="$(SdkOutputDirectory)/**/*" />
|
||||
|
||||
<!-- Removing Full CLR built TestHost assemblies from getting Crossgen as it is throwing error -->
|
||||
<SdkFilesExclude Include="$(SdkOutputDirectory)/TestHost*/**/*" />
|
||||
<SdkFiles Include="$(SdkOutputDirectory)/**/*" Exclude="@(SdkFilesExclude)" />
|
||||
<SdkFilesWithPEMarker Remove="*" />
|
||||
</ItemGroup>
|
||||
|
||||
|
@ -216,8 +219,6 @@
|
|||
<Copy SourceFiles="@(MSBuildTargetsToCopy)"
|
||||
DestinationFiles="@(MSBuildTargetsToCopy->'$(SdkOutputDirectory)/%(RecursiveDir)%(Filename)%(Extension)')" />
|
||||
|
||||
<RemoveDir Directories="$(SdkOutputDirectory)/Extensions" />
|
||||
|
||||
<ItemGroup>
|
||||
<FilesToClean Include="$(StageDirectory)/sdk/**/vbc.exe" />
|
||||
</ItemGroup>
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
<!--
|
||||
***********************************************************************************************
|
||||
Microsoft.TestPlatform.CrossTargeting.targets
|
||||
|
||||
WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
|
||||
created a backup copy. Incorrect changes to this file will make it
|
||||
impossible to load or build your projects from the command-line or the IDE.
|
||||
|
||||
Copyright (c) .NET Foundation. All rights reserved.
|
||||
***********************************************************************************************
|
||||
-->
|
||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
|
||||
<!--
|
||||
===================================================================================
|
||||
DispatchToInnerBuildsWithVSTestTarget
|
||||
|
||||
Builds this project with /t:$(InnerVSTestTargets) /p:TargetFramework=X for each
|
||||
value X in $(TargetFrameworks)
|
||||
|
||||
[IN]
|
||||
$(TargetFrameworks) - Semicolon delimited list of target frameworks.
|
||||
$(InnerVSTestTargets) - The targets to build for each target framework
|
||||
|
||||
[OUT]
|
||||
@(InnerOutput) - The combined output items of inner targets across
|
||||
all target frameworks..
|
||||
|
||||
===================================================================================
|
||||
-->
|
||||
|
||||
<Target Name="DispatchToInnerBuildsWithVSTestTarget" Returns="@(InnerOutput)">
|
||||
<ItemGroup>
|
||||
<_TargetFramework Include="$(TargetFrameworks)" />
|
||||
</ItemGroup>
|
||||
<MSBuild Projects="$(MSBuildProjectFile)"
|
||||
Condition="'$(TargetFrameworks)' != '' "
|
||||
Targets="$(InnerVSTestTargets)"
|
||||
Properties="TargetFramework=%(_TargetFramework.Identity);VSTestNoBuild=true">
|
||||
<Output ItemName="InnerOutput" TaskParameter="TargetOutputs" />
|
||||
</MSBuild>
|
||||
</Target>
|
||||
|
||||
<!--
|
||||
==================================================================================
|
||||
VSTest
|
||||
|
||||
Cross-targeting version of VSTest.
|
||||
|
||||
[IN]
|
||||
$(TargetFrameworks) - Semicolon delimited list of target frameworks.
|
||||
$(InnerVSTestTargets) - The targets to build for each target framework. Defaults
|
||||
to 'VSTest' if unset, but allows override to support
|
||||
`msbuild /p:InnerTargets=X;Y;Z` which will build X, Y,
|
||||
and Z targets for each target framework.
|
||||
|
||||
[OUT]
|
||||
@(InnerOutput) - The combined output items of the inner targets across
|
||||
all builds.
|
||||
=================================================================================
|
||||
-->
|
||||
<Target Name="VSTest" >
|
||||
<CallTarget Condition="'$(VSTestNoBuild)' != 'true'" Targets="Build" />
|
||||
<CallTarget Targets="SetVSTestInnerTarget" />
|
||||
<CallTarget Targets="DispatchToInnerBuildsWithVSTestTarget" />
|
||||
</Target>
|
||||
|
||||
<Target Name="SetVSTestInnerTarget" Returns="@(InnerOutput)">
|
||||
<PropertyGroup Condition="'$(InnerVSTestTargets)' == ''">
|
||||
<InnerVSTestTargets>VSTest</InnerVSTestTargets>
|
||||
</PropertyGroup>
|
||||
</Target>
|
||||
</Project>
|
|
@ -23,8 +23,8 @@
|
|||
"Microsoft.CodeAnalysis.Build.Tasks": "2.0.0-beta6-60922-08",
|
||||
"System.Runtime.Serialization.Xml": "4.1.1",
|
||||
"NuGet.Build.Tasks": "3.6.0-rc-1984",
|
||||
"Microsoft.TestPlatform.CLI": "15.0.0-preview-20161005-01",
|
||||
"Microsoft.TestPlatform.Build": "15.0.0-preview-20161005-01"
|
||||
"Microsoft.TestPlatform.CLI": "15.0.0-preview-20161025-02",
|
||||
"Microsoft.TestPlatform.Build": "15.0.0-preview-20161025-02"
|
||||
},
|
||||
"frameworks": {
|
||||
"netcoreapp1.0": {
|
||||
|
|
|
@ -0,0 +1,48 @@
|
|||
// Copyright (c) .NET Foundation and contributors. All rights reserved.
|
||||
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
|
||||
|
||||
using Microsoft.DotNet.Tools.Test.Utilities;
|
||||
using Xunit;
|
||||
using FluentAssertions;
|
||||
using Microsoft.DotNet.TestFramework;
|
||||
using Microsoft.DotNet.Cli.Utils;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Microsoft.DotNet.Cli.Test3.Tests
|
||||
{
|
||||
public class GivenDotnetTest3BuildsAndRunsTestFromCsprojForMultipleTFM : TestBase
|
||||
{
|
||||
[Fact]
|
||||
public void TestsFromAGivenProjectShouldRunWithExpectedOutputForMultiTFM()
|
||||
{
|
||||
// project targeting net46 will not run in non windows machine.
|
||||
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
|
||||
{
|
||||
// Copy DotNetCoreTestProject project in output directory of project dotnet-vstest.Tests
|
||||
string testAppName = "VSTestDesktopAndNetCoreApp";
|
||||
TestInstance testInstance = TestAssetsManager.CreateTestInstance(testAppName);
|
||||
|
||||
string testProjectDirectory = testInstance.TestRoot;
|
||||
|
||||
// Restore project VSTestDotNetCoreProject
|
||||
new Restore3Command()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute()
|
||||
.Should()
|
||||
.Pass();
|
||||
|
||||
// Call test3
|
||||
CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("");
|
||||
|
||||
// Verify
|
||||
// for target framework net46
|
||||
result.StdOut.Should().Contain("Total tests: 3. Passed: 2. Failed: 1. Skipped: 0.");
|
||||
result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTestDesktop");
|
||||
|
||||
// for target framework netcoreapp1.0
|
||||
result.StdOut.Should().Contain("Total tests: 3. Passed: 1. Failed: 2. Skipped: 0.");
|
||||
result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTestNetCoreApp");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -6,6 +6,7 @@ using Xunit;
|
|||
using FluentAssertions;
|
||||
using Microsoft.DotNet.TestFramework;
|
||||
using Microsoft.DotNet.Cli.Utils;
|
||||
using System.IO;
|
||||
|
||||
namespace Microsoft.DotNet.Cli.Test3.Tests
|
||||
{
|
||||
|
@ -28,12 +29,38 @@ namespace Microsoft.DotNet.Cli.Test3.Tests
|
|||
.Pass();
|
||||
|
||||
// Call test3
|
||||
CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("/p:TargetFramework=netcoreapp1.0");
|
||||
CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("--framework netcoreapp1.0");
|
||||
|
||||
// Verify
|
||||
result.StdOut.Should().Contain("Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.");
|
||||
result.StdOut.Should().Contain("Passed TestNamespace.VSTestTests.VSTestPassTest");
|
||||
result.StdOut.Should().Contain("Failed TestNamespace.VSTestTests.VSTestFailTest");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void TestWillNotBuildTheProjectIfNoBuildArgsIsGiven()
|
||||
{
|
||||
// Copy DotNetCoreTestProject project in output directory of project dotnet-vstest.Tests
|
||||
string testAppName = "VSTestDotNetCoreProject";
|
||||
TestInstance testInstance = TestAssetsManager.CreateTestInstance(testAppName);
|
||||
|
||||
string testProjectDirectory = testInstance.TestRoot;
|
||||
|
||||
// Restore project VSTestDotNetCoreProject
|
||||
new Restore3Command()
|
||||
.WithWorkingDirectory(testProjectDirectory)
|
||||
.Execute()
|
||||
.Should()
|
||||
.Pass();
|
||||
|
||||
string expectedError = Path.Combine(testProjectDirectory, @"bin\Debug\netcoreapp1.0\VSTestDotNetCoreProject.dll");
|
||||
expectedError = "The test source file " + "\""+ expectedError + "\"" + " provided was not found.";
|
||||
|
||||
// Call test3
|
||||
CommandResult result = new Test3Command().WithWorkingDirectory(testProjectDirectory).ExecuteWithCapturedOutput("--noBuild");
|
||||
|
||||
// Verify
|
||||
result.StdOut.Should().Contain(expectedError);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue