Add error message when tool is not restored

This commit is contained in:
Krzysztof Wicher 2016-12-19 14:00:25 -08:00
parent e37b055f1d
commit ccfb4135c4
4 changed files with 55 additions and 1 deletions

View file

@ -0,0 +1,23 @@
<Project Sdk="Microsoft.NET.Sdk" ToolsVersion="15.0">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp1.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<Compile Include="**\*.cs" />
<EmbeddedResource Include="**\*.resx" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NETCore.App" Version="1.0.1" />
</ItemGroup>
<ItemGroup>
<DotNetCliToolReference Include="dotnet-nonexistingtool">
<Version>1.0.0</Version>
</DotNetCliToolReference>
</ItemGroup>
</Project>

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

@ -75,6 +75,11 @@ namespace Microsoft.DotNet.Cli.Utils
var availableVersions = new List<NuGetVersion>();
var toolBase = GetBaseToolPath(packageId);
if (!Directory.Exists(toolBase))
{
return new NuGetVersion[0];
}
var versionDirectories = Directory.EnumerateDirectories(toolBase);
foreach (var versionDirectory in versionDirectories)
@ -94,4 +99,4 @@ namespace Microsoft.DotNet.Cli.Utils
}
}
}
}

View file

@ -124,6 +124,20 @@ namespace Microsoft.DotNet.Tests
.And.Pass();
}
[Fact]
public void ItShowsErrorWhenToolIsNotRestored()
{
var testInstance = TestAssets.Get("NonRestoredTestProjects", "AppWithNonExistingToolDependency")
.CreateInstance()
.WithSourceFiles();
new TestCommand("dotnet")
.WithWorkingDirectory(testInstance.Root)
.ExecuteWithCapturedOutput("nonexistingtool")
.Should().Fail()
.And.HaveStdErrContaining("Version for package `dotnet-nonexistingtool` could not be resolved.");
}
// need conditional theories so we can skip on non-Windows
//[Theory(Skip="https://github.com/dotnet/cli/issues/4514")]
//[MemberData("DependencyToolArguments")]