dotnet-installer/test/Microsoft.DotNet.Cli.Utils.Tests/GivenADotnetToolsCommandResolver.cs
William Lee 08f050c012
bundled DotnetTool (#8606)
Extract packages to DotnetTools folder under sdk/{version}

Add new resolver to discover it

Add test to enforce package structure. It will fail when the structure
changed
2018-02-16 13:32:29 -08:00

68 lines
2.1 KiB
C#

// 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 System.IO;
using FluentAssertions;
using Microsoft.DotNet.Cli.Utils;
using Microsoft.DotNet.Tools.Test.Utilities;
using Xunit;
using System.Reflection;
namespace Microsoft.DotNet.Tests
{
public class GivenADotnetToolsCommandResolver : TestBase
{
private readonly DotnetToolsCommandResolver _dotnetToolsCommandResolver;
// Assets are placed during build of this project
private static string GetDotnetToolPath() => Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "TestDotnetToolsLayoutDirectory");
public GivenADotnetToolsCommandResolver()
{
_dotnetToolsCommandResolver = new DotnetToolsCommandResolver(GetDotnetToolPath());
}
[Fact]
public void ItReturnsNullWhenCommandNameIsNull()
{
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = null,
};
var result = _dotnetToolsCommandResolver.Resolve(commandResolverArguments);
result.Should().BeNull();
}
[Fact]
public void ItReturnsNullWhenCommandNameDoesNotExistInProjectTools()
{
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "nonexistent-command",
};
var result = _dotnetToolsCommandResolver.Resolve(commandResolverArguments);
result.Should().BeNull();
}
[Fact]
public void ItReturnsACommandSpec()
{
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "dotnet-watch",
};
var result = _dotnetToolsCommandResolver.Resolve(commandResolverArguments);
result.Should().NotBeNull();
var commandPath = result.Args.Trim('"');
commandPath.Should().Contain("dotnet-watch.dll");
}
}
}