Fix bug preventing MakeRunnable on dependent project when using globbing build

This commit is contained in:
Pavel Krymets 2016-05-16 12:40:42 -07:00
parent 07b785c183
commit 670dbca45b
8 changed files with 99 additions and 10 deletions

View file

@ -0,0 +1,12 @@
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

View file

@ -0,0 +1,18 @@
{
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {
"TestApp2": { "target": "project" }
},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc3-*"
}
}
}
}
}

View file

@ -0,0 +1,12 @@
using System;
namespace ConsoleApplication
{
public class Program
{
public static void Main(string[] args)
{
Console.WriteLine("Hello World!");
}
}
}

View file

@ -0,0 +1,16 @@
{
"buildOptions": {
"emitEntryPoint": true
},
"dependencies": {},
"frameworks": {
"netcoreapp1.0": {
"dependencies": {
"Microsoft.NETCore.App": {
"type": "platform",
"version": "1.0.0-rc3-*"
}
}
}
}
}

View file

@ -0,0 +1 @@
{}

View file

@ -133,6 +133,26 @@ namespace Microsoft.DotNet.Tools.Build
}
}
protected override CompilationResult Build(ProjectGraphNode projectNode)
{
var result = base.Build(projectNode);
AfterRootBuild(projectNode, result);
return result;
}
protected void AfterRootBuild(ProjectGraphNode projectNode, CompilationResult result)
{
if (result != CompilationResult.IncrementalSkip && projectNode.IsRoot)
{
var success = result == CompilationResult.Success;
if (success)
{
MakeRunnable(projectNode);
}
PrintSummary(projectNode, success);
}
}
protected override CompilationResult RunCompile(ProjectGraphNode projectNode)
{
try
@ -140,15 +160,6 @@ namespace Microsoft.DotNet.Tools.Build
var managedCompiler = new ManagedCompiler(_scriptRunner, _commandFactory);
var success = managedCompiler.Compile(projectNode.ProjectContext, _args);
if (projectNode.IsRoot)
{
if (success)
{
MakeRunnable(projectNode);
}
PrintSummary(projectNode, success);
}
return success ? CompilationResult.Success : CompilationResult.Failure;
}
finally

View file

@ -55,7 +55,7 @@ namespace Microsoft.DotNet.Tools.Build
protected abstract CompilationResult RunCompile(ProjectGraphNode projectNode);
private CompilationResult Build(ProjectGraphNode projectNode)
protected virtual CompilationResult Build(ProjectGraphNode projectNode)
{
CompilationResult result;
if (_compilationResults.TryGetValue(projectNode.ProjectContext.Identity, out result))

View file

@ -176,6 +176,25 @@ namespace Microsoft.DotNet.Tools.Builder.Tests
informationalVersion.Should().BeEquivalentTo("1.0.0-85");
}
[Fact]
public void BuildGlobbingMakesAllRunnable()
{
var testInstance = TestAssetsManager.CreateTestInstance("AppWithAppDependency")
.WithLockFiles();
var cmd = new BuildCommand(string.Format("*{0}project.json", Path.DirectorySeparatorChar), skipLoadProject: true)
.WithWorkingDirectory(testInstance.TestRoot)
.Execute()
.Should()
.Pass();
foreach (var project in new [] { "TestApp1", "TestApp2" })
{
new DirectoryInfo(Path.Combine(testInstance.TestRoot, project, "bin", "Debug", DefaultFramework))
.Should().HaveFile($"{project}.deps.json");
}
}
[Theory]
// [InlineData("net20", false, true)]
// [InlineData("net40", true, true)]