Update tests to reflect portable tools

This commit is contained in:
Bryan Thornbury 2016-03-17 11:43:17 -07:00
parent 51dcb6063f
commit bd3ba0bd41
3 changed files with 78 additions and 8 deletions

View file

@ -16,11 +16,14 @@ using Microsoft.Extensions.PlatformAbstractions;
using System.Threading;
using FluentAssertions;
using NuGet.Frameworks;
using NuGet.Versioning;
using NuGet.ProjectModel;
namespace Microsoft.DotNet.Cli.Utils.Tests
{
public class GivenAProjectToolsCommandResolver
{
private static readonly NuGetFramework s_toolPackageFramework = FrameworkConstants.CommonFrameworks.NetStandardApp15;
private static readonly string s_liveProjectDirectory =
Path.Combine(AppContext.BaseDirectory, "TestAssets/TestProjects/AppWithToolDependency");
@ -83,7 +86,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "dotnet-hello",
CommandName = "dotnet-portable",
CommandArguments = null,
ProjectDirectory = s_liveProjectDirectory
};
@ -106,7 +109,7 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "dotnet-hello",
CommandName = "dotnet-portable",
CommandArguments = new [] { "arg with space"},
ProjectDirectory = s_liveProjectDirectory
};
@ -118,13 +121,13 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
}
[Fact]
public void It_returns_a_CommandSpec_with_Args_as_CommandPath_when_returning_a_CommandSpec_and_CommandArguments_are_null()
public void It_returns_a_CommandSpec_with_Args_containing_CommandPath_when_returning_a_CommandSpec_and_CommandArguments_are_null()
{
var projectToolsCommandResolver = SetupProjectToolsCommandResolver();
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "dotnet-hello",
CommandName = "dotnet-portable",
CommandArguments = null,
ProjectDirectory = s_liveProjectDirectory
};
@ -134,9 +137,51 @@ namespace Microsoft.DotNet.Cli.Utils.Tests
result.Should().NotBeNull();
var commandPath = result.Args.Trim('"');
commandPath.Should().Contain("dotnet-hello");
commandPath.Should().Contain("dotnet-portable.dll");
}
File.Exists(commandPath).Should().BeTrue();
[Fact]
public void It_writes_a_deps_json_file_next_to_the_lockfile()
{
var projectToolsCommandResolver = SetupProjectToolsCommandResolver();
var commandResolverArguments = new CommandResolverArguments()
{
CommandName = "dotnet-portable",
CommandArguments = null,
ProjectDirectory = s_liveProjectDirectory
};
var context = ProjectContext.Create(Path.Combine(s_liveProjectDirectory, "project.json"), s_toolPackageFramework);
var nugetPackagesRoot = context.PackagesDirectory;
var toolPathCalculator = new ToolPathCalculator(nugetPackagesRoot);
var lockFilePath = toolPathCalculator.GetLockFilePath(
"dotnet-portable",
new NuGetVersion("1.0.0"),
s_toolPackageFramework);
var directory = Path.GetDirectoryName(lockFilePath);
var depsJsonFile = Directory
.EnumerateFiles(directory)
.FirstOrDefault(p => Path.GetFileName(p).EndsWith(FileNameSuffixes.DepsJson));
if (depsJsonFile != null)
{
File.Delete(depsJsonFile);
}
var result = projectToolsCommandResolver.Resolve(commandResolverArguments);
result.Should().NotBeNull();
depsJsonFile = Directory
.EnumerateFiles(directory)
.FirstOrDefault(p => Path.GetFileName(p).EndsWith(FileNameSuffixes.DepsJson));
depsJsonFile.Should().NotBeNull();
}
private ProjectToolsCommandResolver SetupProjectToolsCommandResolver(

View file

@ -5,6 +5,11 @@
},
"dependencies": {
"NETStandard.Library": "1.5.0-rc2-23911",
"NuGet.Versioning": "3.4.0-rtm-0763",
"NuGet.Packaging": "3.4.0-rtm-0763",
"NuGet.Frameworks": "3.4.0-rtm-0763",
"NuGet.ProjectModel": "3.4.0-rtm-0763",
"Microsoft.DotNet.ProjectModel": {
"target": "project"
},

View file

@ -36,9 +36,9 @@ namespace Microsoft.DotNet.Tests
try
{
CommandResult result = new HelloCommand().ExecuteWithCapturedOutput();
CommandResult result = new PortableCommand().ExecuteWithCapturedOutput();
result.Should().HaveStdOut("Hello World!" + Environment.NewLine);
result.Should().HaveStdOut("Hello Portable World!" + Environment.NewLine);
result.Should().NotHaveStdErr();
result.Should().Pass();
}
@ -94,5 +94,25 @@ namespace Microsoft.DotNet.Tests
return base.ExecuteWithCapturedOutput(args);
}
}
class PortableCommand : TestCommand
{
public PortableCommand()
: base("dotnet")
{
}
public override CommandResult Execute(string args = "")
{
args = $"portable {args}";
return base.Execute(args);
}
public override CommandResult ExecuteWithCapturedOutput(string args = "")
{
args = $"portable {args}";
return base.ExecuteWithCapturedOutput(args);
}
}
}
}