Fixing full framework tests

This commit is contained in:
Livar Cunha 2016-10-31 16:22:10 -07:00
parent c2f60cede4
commit 9139c4006b
10 changed files with 127 additions and 15 deletions

View file

@ -5,6 +5,7 @@
<TargetFrameworks>netcoreapp1.0;net451</TargetFrameworks> <TargetFrameworks>netcoreapp1.0;net451</TargetFrameworks>
<OutputType>Exe</OutputType> <OutputType>Exe</OutputType>
<PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45+win8;dnxcore50</PackageTargetFallback> <PackageTargetFallback Condition=" '$(TargetFramework)' == 'netcoreapp1.0' ">$(PackageTargetFallback);portable-net45+win8;dnxcore50</PackageTargetFallback>
<RuntimeIdentifiers>win7-x64;win7-x86;osx.10.10-x64;osx.10.11-x64;ubuntu.14.04-x64;ubuntu.16.04-x64;centos.7-x64;rhel.7.2-x64;debian.8-x64;fedora.23-x64;opensuse.13.2-x64</RuntimeIdentifiers>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<Compile Include="**\*.cs" Exclude="bin\**;obj\**;**\*.xproj;packages\**" /> <Compile Include="**\*.cs" Exclude="bin\**;obj\**;**\*.xproj;packages\**" />

View file

@ -7,5 +7,18 @@
"dependencies": {}, "dependencies": {},
"frameworks": { "frameworks": {
"net451": {} "net451": {}
},
"runtimes": {
"win7-x64": {},
"win7-x86": {},
"osx.10.10-x64": {},
"osx.10.11-x64": {},
"ubuntu.14.04-x64": {},
"ubuntu.16.04-x64": {},
"centos.7-x64": {},
"rhel.7.2-x64": {},
"debian.8-x64": {},
"fedora.23-x64": {},
"opensuse.13.2-x64": {}
} }
} }

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<packageSources>
<add key="test-packages" value="$fullpath$" />
</packageSources>
</configuration>

View file

@ -5,7 +5,9 @@ using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Linq; using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices; using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.DotNet.Cli.Utils; using Microsoft.DotNet.Cli.Utils;
using Microsoft.DotNet.Tools.Common; using Microsoft.DotNet.Tools.Common;
@ -67,6 +69,27 @@ namespace Microsoft.DotNet.TestFramework
return this; return this;
} }
public TestAssetInstance WithNuGetConfig(string nugetCache)
{
var thisAssembly = typeof(TestAssetInstance).GetTypeInfo().Assembly;
var newNuGetConfigPath = Path.Combine(Root.FullName, "NuGet.config");
using (var resource = thisAssembly.GetManifestResourceStream("NuGet.template.config"))
{
var streamReader = new StreamReader(resource);
var content = streamReader.ReadToEnd();
content = content.Replace("$fullpath$", nugetCache);
using (var newNuGetConfig = new FileStream(newNuGetConfigPath, FileMode.Create, FileAccess.Write))
{
var contentBytes = new UTF8Encoding(true).GetBytes(content);
newNuGetConfig.Write(contentBytes, 0, contentBytes.Length);
}
}
return this;
}
private void CopyFiles(IEnumerable<FileInfo> filesToCopy) private void CopyFiles(IEnumerable<FileInfo> filesToCopy)
{ {
foreach (var file in filesToCopy) foreach (var file in filesToCopy)

View file

@ -2,7 +2,12 @@
"version": "1.0.0-preview3-*", "version": "1.0.0-preview3-*",
"description": "Microsoft.DotNet.TestFramework Class Library", "description": "Microsoft.DotNet.TestFramework Class Library",
"buildOptions": { "buildOptions": {
"keyFile": "../../tools/Key.snk" "keyFile": "../../tools/Key.snk",
"embed": {
"include": [
"NuGet.template.config"
]
}
}, },
"dependencies": { "dependencies": {
"Microsoft.DotNet.Cli.Utils": { "Microsoft.DotNet.Cli.Utils": {

View file

@ -28,6 +28,9 @@ namespace Microsoft.DotNet.Tools.Build
CommandOption outputOption = app.Option("-o|--output <OUTPUT_DIR>", "Directory in which to place outputs", CommandOptionType.SingleValue); CommandOption outputOption = app.Option("-o|--output <OUTPUT_DIR>", "Directory in which to place outputs", CommandOptionType.SingleValue);
CommandOption frameworkOption = app.Option("-f|--framework <FRAMEWORK>", "Compile a specific framework", CommandOptionType.SingleValue); CommandOption frameworkOption = app.Option("-f|--framework <FRAMEWORK>", "Compile a specific framework", CommandOptionType.SingleValue);
CommandOption runtimeOption = app.Option(
"-r|--runtime <RUNTIME_IDENTIFIER>", "Target runtime to build for. The default is to build a portable application.",
CommandOptionType.SingleValue);
CommandOption configurationOption = app.Option("-c|--configuration <CONFIGURATION>", "Configuration under which to build", CommandOptionType.SingleValue); CommandOption configurationOption = app.Option("-c|--configuration <CONFIGURATION>", "Configuration under which to build", CommandOptionType.SingleValue);
CommandOption versionSuffixOption = app.Option("--version-suffix <VERSION_SUFFIX>", "Defines the value for the $(VersionSuffix) property in the project", CommandOptionType.SingleValue); CommandOption versionSuffixOption = app.Option("--version-suffix <VERSION_SUFFIX>", "Defines the value for the $(VersionSuffix) property in the project", CommandOptionType.SingleValue);
@ -62,6 +65,11 @@ namespace Microsoft.DotNet.Tools.Build
msbuildArgs.Add($"/p:TargetFramework={frameworkOption.Value()}"); msbuildArgs.Add($"/p:TargetFramework={frameworkOption.Value()}");
} }
if (runtimeOption.HasValue())
{
msbuildArgs.Add($"/p:RuntimeIdentifier={runtimeOption.Value()}");
}
if (configurationOption.HasValue()) if (configurationOption.HasValue())
{ {
msbuildArgs.Add($"/p:Configuration={configurationOption.Value()}"); msbuildArgs.Add($"/p:Configuration={configurationOption.Value()}");

View file

@ -16,7 +16,7 @@
<Version>1.0.1</Version> <Version>1.0.1</Version>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.NET.Sdk"> <PackageReference Include="Microsoft.NET.Sdk">
<Version>1.0.0-alpha-20161026-2</Version> <Version>1.0.0-alpha-20161029-1</Version>
<PrivateAssets>All</PrivateAssets> <PrivateAssets>All</PrivateAssets>
</PackageReference> </PackageReference>
<PackageReference Include="Microsoft.NET.Test.Sdk"> <PackageReference Include="Microsoft.NET.Test.Sdk">

View file

@ -29,16 +29,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
[WindowsOnlyFact] [WindowsOnlyFact]
public void It_resolves_desktop_apps_defaulting_to_Debug_Configuration() public void It_resolves_desktop_apps_defaulting_to_Debug_Configuration()
{ {
var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier();
var configuration = "Debug"; var configuration = "Debug";
var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx")
.CreateInstance() .CreateInstance()
.WithSourceFiles() .WithSourceFiles()
.WithRestoreFiles(); .WithNuGetConfig(_repoDirectoriesProvider.TestPackages);
var restoreCommand = new RestoreCommand()
.WithWorkingDirectory(testInstance.Root)
.WithRuntime(runtime)
.ExecuteWithCapturedOutput()
.Should().Pass();
var buildCommand = new BuildCommand() var buildCommand = new BuildCommand()
.WithWorkingDirectory(testInstance.Root) .WithWorkingDirectory(testInstance.Root)
.WithConfiguration(configuration) .WithConfiguration(configuration)
.WithRuntime(runtime)
.WithCapturedOutput() .WithCapturedOutput()
.Execute() .Execute()
.Should().Pass(); .Should().Pass();
@ -60,16 +68,24 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
[WindowsOnlyFact] [WindowsOnlyFact]
public void It_resolves_desktop_apps_when_configuration_is_Debug() public void It_resolves_desktop_apps_when_configuration_is_Debug()
{ {
var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier();
var configuration = "Debug"; var configuration = "Debug";
var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx")
.CreateInstance() .CreateInstance()
.WithSourceFiles() .WithSourceFiles()
.WithRestoreFiles(); .WithNuGetConfig(_repoDirectoriesProvider.TestPackages);
var restoreCommand = new RestoreCommand()
.WithWorkingDirectory(testInstance.Root)
.WithRuntime(runtime)
.ExecuteWithCapturedOutput()
.Should().Pass();
var buildCommand = new BuildCommand() var buildCommand = new BuildCommand()
.WithWorkingDirectory(testInstance.Root) .WithWorkingDirectory(testInstance.Root)
.WithConfiguration(configuration) .WithConfiguration(configuration)
.WithRuntime(runtime)
.Execute() .Execute()
.Should().Pass(); .Should().Pass();
@ -89,12 +105,19 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
[WindowsOnlyFact] [WindowsOnlyFact]
public void It_resolves_desktop_apps_when_configuration_is_Release() public void It_resolves_desktop_apps_when_configuration_is_Release()
{ {
var configuration = "Release"; var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier();
var configuration = "Debug";
var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx")
.CreateInstance() .CreateInstance()
.WithSourceFiles() .WithSourceFiles()
.WithRestoreFiles(); .WithNuGetConfig(_repoDirectoriesProvider.TestPackages);
var restoreCommand = new RestoreCommand()
.WithWorkingDirectory(testInstance.Root)
.WithRuntime(runtime)
.ExecuteWithCapturedOutput()
.Should().Pass();
var buildCommand = new BuildCommand() var buildCommand = new BuildCommand()
.WithWorkingDirectory(testInstance.Root) .WithWorkingDirectory(testInstance.Root)
@ -120,12 +143,19 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
[WindowsOnlyFact] [WindowsOnlyFact]
public void It_resolves_desktop_apps_using_configuration_passed_to_create() public void It_resolves_desktop_apps_using_configuration_passed_to_create()
{ {
var configuration = "Release"; var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier();
var configuration = "Debug";
var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx") var testInstance = TestAssets.Get(TestAssetKinds.DesktopTestProjects, "AppWithProjTool2Fx")
.CreateInstance() .CreateInstance()
.WithSourceFiles() .WithSourceFiles()
.WithRestoreFiles(); .WithNuGetConfig(_repoDirectoriesProvider.TestPackages);
var restoreCommand = new RestoreCommand()
.WithWorkingDirectory(testInstance.Root)
.WithRuntime(runtime)
.ExecuteWithCapturedOutput()
.Should().Pass();
var buildCommand = new BuildCommand() var buildCommand = new BuildCommand()
.WithWorkingDirectory(testInstance.Root) .WithWorkingDirectory(testInstance.Root)

View file

@ -7,21 +7,40 @@ namespace Microsoft.DotNet.Tools.Test.Utilities
{ {
public sealed class RestoreCommand : TestCommand public sealed class RestoreCommand : TestCommand
{ {
private string _runtime;
public RestoreCommand() public RestoreCommand()
: base("dotnet") : base("dotnet")
{ {
} }
public RestoreCommand WithRuntime(string runtime)
{
_runtime = runtime;
return this;
}
public override CommandResult Execute(string args = "") public override CommandResult Execute(string args = "")
{ {
args = $"restore {args} --disable-parallel"; args = $"restore {GetRuntime()} {args} --disable-parallel";
return base.Execute(args); return base.Execute(args);
} }
public override CommandResult ExecuteWithCapturedOutput(string args = "") public override CommandResult ExecuteWithCapturedOutput(string args = "")
{ {
args = $"restore {args} --disable-parallel"; args = $"restore {GetRuntime()} {args} --disable-parallel";
return base.ExecuteWithCapturedOutput(args); return base.ExecuteWithCapturedOutput(args);
} }
private string GetRuntime()
{
if (_runtime == null)
{
return null;
}
return $"/p:RuntimeIdentifier={_runtime}";
}
} }
} }

View file

@ -371,13 +371,14 @@ namespace Microsoft.DotNet.Migration.Tests
[InlineData("TestProjects", "PJTestAppSimple", false)] [InlineData("TestProjects", "PJTestAppSimple", false)]
public void It_auto_add_desktop_references_during_migrate(string testGroup, string projectName, bool isDesktopApp) public void It_auto_add_desktop_references_during_migrate(string testGroup, string projectName, bool isDesktopApp)
{ {
var runtime = DotnetLegacyRuntimeIdentifiers.InferLegacyRestoreRuntimeIdentifier();
var testAssetManager = GetTestGroupTestAssetsManager(testGroup); var testAssetManager = GetTestGroupTestAssetsManager(testGroup);
var projectDirectory = testAssetManager.CreateTestInstance(projectName).WithLockFiles().Path; var projectDirectory = testAssetManager.CreateTestInstance(projectName).WithLockFiles().Path;
CleanBinObj(projectDirectory); CleanBinObj(projectDirectory);
MigrateProject(new string[] { projectDirectory }); MigrateProject(new string[] { projectDirectory });
Restore(projectDirectory); Restore(projectDirectory, runtime: runtime);
BuildMSBuild(projectDirectory, projectName); BuildMSBuild(projectDirectory, projectName, runtime:runtime);
VerifyAutoInjectedDesktopReferences(projectDirectory, projectName, isDesktopApp); VerifyAutoInjectedDesktopReferences(projectDirectory, projectName, isDesktopApp);
VerifyAllMSBuildOutputsRunnable(projectDirectory); VerifyAllMSBuildOutputsRunnable(projectDirectory);
} }
@ -584,10 +585,11 @@ namespace Microsoft.DotNet.Migration.Tests
.Should().Pass(); .Should().Pass();
} }
private void Restore(string projectDirectory, string projectName=null) private void Restore(string projectDirectory, string projectName=null, string runtime=null)
{ {
var command = new RestoreCommand() var command = new RestoreCommand()
.WithWorkingDirectory(projectDirectory); .WithWorkingDirectory(projectDirectory)
.WithRuntime(runtime);
if (projectName != null) if (projectName != null)
{ {
@ -601,7 +603,11 @@ namespace Microsoft.DotNet.Migration.Tests
} }
} }
private string BuildMSBuild(string projectDirectory, string projectName, string configuration="Debug") private string BuildMSBuild(
string projectDirectory,
string projectName,
string configuration="Debug",
string runtime=null)
{ {
if (projectName != null) if (projectName != null)
{ {
@ -612,6 +618,7 @@ namespace Microsoft.DotNet.Migration.Tests
var result = new BuildCommand() var result = new BuildCommand()
.WithWorkingDirectory(projectDirectory) .WithWorkingDirectory(projectDirectory)
.WithRuntime(runtime)
.ExecuteWithCapturedOutput($"{projectName} /p:Configuration={configuration}"); .ExecuteWithCapturedOutput($"{projectName} /p:Configuration={configuration}");
result result