Fixing dotnet-test.Tests to use a portable test app - ProjectWithTests.

The ProjectWithTests needed to be moved outside of TestAssets\TestProjects because it can't be restored --infer-runtimes and it has to be built with netcoreapp1.0.
This commit is contained in:
Eric Erhardt 2016-04-07 22:08:17 -05:00
parent 8a9068efbf
commit 7d6d74bba2
5 changed files with 36 additions and 11 deletions

View file

@ -1,15 +1,19 @@
{ {
"version": "1.0.0-*", "version": "1.0.0-*",
"dependencies": { "dependencies": {
"NETStandard.Library": "1.5.0-rc2-24008", "Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc2-*"
},
"System.Linq.Expressions": "4.0.11-rc2-24008", "System.Linq.Expressions": "4.0.11-rc2-24008",
"System.Runtime.Serialization.Primitives": "4.1.1-rc2-24008", "System.Runtime.Serialization.Primitives": "4.1.1-rc2-24008",
"xunit": "2.1.0", "xunit": "2.1.0",
"dotnet-test-xunit": "1.0.0-dev-128011-22" "dotnet-test-xunit": "1.0.0-dev-140469-38"
}, },
"frameworks": { "frameworks": {
"netstandardapp1.5": { "netcoreapp1.0": {
"imports": [ "imports": [
"netstandardapp1.5",
"dnxcore50", "dnxcore50",
"portable-net45+win8" "portable-net45+win8"
] ]

View file

@ -93,7 +93,17 @@ namespace Microsoft.DotNet.Cli.Build
"--fallbacksource", Dirs.TestPackages, "--fallbacksource", Dirs.TestPackages,
"--fallbacksource", Dirs.Corehost) "--fallbacksource", Dirs.Corehost)
.WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects")) .WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "TestProjects"))
.Execute().EnsureSuccessful(); .Execute()
.EnsureSuccessful();
// The 'ProjectWithTests' is a portable test app. Cannot call --infer-runtimes on it, since on win x64 machines,
// the x86 runtime is being inferred, and there are no x86 DotNetHost packages
dotnet.Restore(
"--verbosity", "verbose",
"--fallbacksource", Dirs.Corehost)
.WorkingDirectory(Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "ProjectWithTests"))
.Execute()
.EnsureSuccessful();
// The 'ProjectModelServer' directory contains intentionally-unresolved dependencies, so don't check for success. Also, suppress the output // The 'ProjectModelServer' directory contains intentionally-unresolved dependencies, so don't check for success. Also, suppress the output
dotnet.Restore( dotnet.Restore(
@ -248,6 +258,14 @@ namespace Microsoft.DotNet.Cli.Build
.EnsureSuccessful(); .EnsureSuccessful();
} }
// build ProjectWithTests, which is outside of TestProjects and targets netcoreapp
string projectWithTests = Path.Combine(c.BuildContext.BuildDirectory, "TestAssets", "ProjectWithTests");
c.Info($"Building: {projectWithTests}");
dotnet.Build("--framework", "netcoreapp1.0")
.WorkingDirectory(projectWithTests)
.Execute()
.EnsureSuccessful();
return c.Success(); return c.Success();
} }

View file

@ -4,6 +4,7 @@
using System; using System;
using System.IO; using System.IO;
using Microsoft.DotNet.ProjectModel; using Microsoft.DotNet.ProjectModel;
using Microsoft.DotNet.TestFramework;
using Microsoft.Extensions.PlatformAbstractions; using Microsoft.Extensions.PlatformAbstractions;
using Xunit; using Xunit;
using Microsoft.DotNet.Tools.Test.Utilities; using Microsoft.DotNet.Tools.Test.Utilities;
@ -18,8 +19,9 @@ namespace Microsoft.Dotnet.Tools.Test.Tests
public GivenThatWeWantToRunTestsInTheConsole() public GivenThatWeWantToRunTestsInTheConsole()
{ {
var testAssetManager = new TestAssetsManager(Path.Combine(RepoRoot, "TestAssets"));
var testInstance = var testInstance =
TestAssetsManager.CreateTestInstance("ProjectWithTests", identifier: "ConsoleTests").WithLockFiles(); testAssetManager.CreateTestInstance("ProjectWithTests", identifier: "ConsoleTests").WithLockFiles();
_projectFilePath = Path.Combine(testInstance.TestRoot, "project.json"); _projectFilePath = Path.Combine(testInstance.TestRoot, "project.json");
var contexts = ProjectContext.CreateContextForEachFramework( var contexts = ProjectContext.CreateContextForEachFramework(
@ -27,8 +29,7 @@ namespace Microsoft.Dotnet.Tools.Test.Tests
null, null,
PlatformServices.Default.Runtime.GetAllCandidateRuntimeIdentifiers()); PlatformServices.Default.Runtime.GetAllCandidateRuntimeIdentifiers());
var runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier; _defaultOutputPath = Path.Combine(testInstance.TestRoot, "bin", "Debug", "netcoreapp1.0");
_defaultOutputPath = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultFramework, runtime);
} }
//ISSUE https://github.com/dotnet/cli/issues/1935 //ISSUE https://github.com/dotnet/cli/issues/1935
@ -55,7 +56,7 @@ namespace Microsoft.Dotnet.Tools.Test.Tests
{ {
var testCommand = new DotnetTestCommand(); var testCommand = new DotnetTestCommand();
var result = testCommand.Execute( var result = testCommand.Execute(
$"{_projectFilePath} -o {Path.Combine(AppContext.BaseDirectory, "output")} -f netstandardapp1.5"); $"{_projectFilePath} -o {Path.Combine(AppContext.BaseDirectory, "output")} -f netcoreapp1.0");
result.Should().Pass(); result.Should().Pass();
} }

View file

@ -2,6 +2,7 @@
// Licensed under the MIT license. See LICENSE file in the project root for full license information. // Licensed under the MIT license. See LICENSE file in the project root for full license information.
using Microsoft.DotNet.ProjectModel; using Microsoft.DotNet.ProjectModel;
using Microsoft.DotNet.TestFramework;
using Microsoft.DotNet.Tools.Test.Utilities; using Microsoft.DotNet.Tools.Test.Utilities;
using System.IO; using System.IO;
using FluentAssertions; using FluentAssertions;
@ -18,15 +19,16 @@ namespace Microsoft.Dotnet.Tools.Test.Tests
public GivenThatWeWantToUseDotnetTestE2EInDesignTime() public GivenThatWeWantToUseDotnetTestE2EInDesignTime()
{ {
var testInstance = TestAssetsManager.CreateTestInstance("ProjectWithTests").WithLockFiles(); var testAssetManager = new TestAssetsManager(Path.Combine(RepoRoot, "TestAssets"));
var testInstance = testAssetManager.CreateTestInstance("ProjectWithTests").WithLockFiles();
_projectFilePath = Path.Combine(testInstance.TestRoot, "project.json"); _projectFilePath = Path.Combine(testInstance.TestRoot, "project.json");
var contexts = ProjectContext.CreateContextForEachFramework( var contexts = ProjectContext.CreateContextForEachFramework(
_projectFilePath, _projectFilePath,
null, null,
PlatformServices.Default.Runtime.GetAllCandidateRuntimeIdentifiers()); PlatformServices.Default.Runtime.GetAllCandidateRuntimeIdentifiers());
var runtime = contexts.FirstOrDefault(c => !string.IsNullOrEmpty(c.RuntimeIdentifier))?.RuntimeIdentifier;
_outputPath = Path.Combine(testInstance.TestRoot, "bin", "Debug", DefaultFramework, runtime); _outputPath = Path.Combine(testInstance.TestRoot, "bin", "Debug", "netcoreapp1.0");
var buildCommand = new BuildCommand(_projectFilePath); var buildCommand = new BuildCommand(_projectFilePath);
var result = buildCommand.Execute(); var result = buildCommand.Execute();