
This commit implements the requested changes from the PR code review. - Remove unnecessary comments - Use Directory.Exists rather than getting file attributes - Use GracefulException where appripriate - Improve test names and fix spacing - Don't force trailing slash on directory - Don't use option forwarding - Delete unnecessary MSBuild.exe[.config] files from test project - Use forwarded options
262 lines
8.2 KiB
C#
262 lines
8.2 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 FluentAssertions;
|
|
using Microsoft.DotNet.Tools.Test.Utilities;
|
|
using Xunit;
|
|
using Xunit.Abstractions;
|
|
|
|
namespace Microsoft.DotNet.Cli.List.Package.Tests
|
|
{
|
|
public class GivenDotnetListPackage : TestBase
|
|
{
|
|
private readonly ITestOutputHelper _output;
|
|
|
|
public GivenDotnetListPackage(ITestOutputHelper output)
|
|
{
|
|
_output = output;
|
|
}
|
|
|
|
[Fact]
|
|
public void RequestedAndResolvedVersionsMatch()
|
|
{
|
|
var testAsset = "TestAppSimple";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
var packageName = "Newtonsoft.Json";
|
|
var packageVersion = "9.0.1";
|
|
var cmd = new DotnetCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.ExecuteWithCapturedOutput($"add package {packageName} --version {packageVersion}");
|
|
cmd.Should().Pass();
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContainingIgnoreSpaces(packageName+packageVersion+packageVersion);
|
|
}
|
|
|
|
[Fact]
|
|
public void ItListsAutoReferencedPackages()
|
|
{
|
|
var testAsset = "TestAppSimple";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContainingIgnoreSpaces("Microsoft.NETCore.App(A)")
|
|
.And.HaveStdOutContainingIgnoreSpaces("(A):Auto-referencedpackage");
|
|
}
|
|
|
|
[Fact]
|
|
public void ItRunOnSolution()
|
|
{
|
|
var sln = "TestAppWithSlnAndSolutionFolders";
|
|
var projectDirectory = TestAssets
|
|
.Get(sln)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContainingIgnoreSpaces("Microsoft.NETCore.App");
|
|
}
|
|
|
|
[Fact]
|
|
public void AssetsPathExistsButNotRestored()
|
|
{
|
|
var testAsset = "NewtonSoftDependentProject";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.HaveStdErr();
|
|
}
|
|
|
|
[Fact]
|
|
public void ItListsTransitivePackage()
|
|
{
|
|
var testAsset = "NewtonSoftDependentProject";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.NotHaveStdOutContaining("System.IO.FileSystem");
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute(args:"--include-transitive")
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContaining("System.IO.FileSystem");
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData("", "[net451]", null)]
|
|
[InlineData("", "[netcoreapp2.2]", null)]
|
|
[InlineData("--framework netcoreapp2.2 --framework net451", "[net451]", null)]
|
|
[InlineData("--framework netcoreapp2.2 --framework net451", "[netcoreapp2.2]", null)]
|
|
[InlineData("--framework netcoreapp2.2", "[netcoreapp2.2]", "[net451]")]
|
|
[InlineData("--framework net451", "[net451]", "[netcoreapp2.2]")]
|
|
public void ItListsValidFrameworks(string args, string shouldInclude, string shouldntInclude)
|
|
{
|
|
var testAsset = "MSBuildAppWithMultipleFrameworks";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
if (shouldntInclude == null)
|
|
{
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute(args)
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContainingIgnoreSpaces(shouldInclude.Replace(" ", ""));
|
|
}
|
|
else
|
|
{
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute(args)
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr()
|
|
.And.HaveStdOutContainingIgnoreSpaces(shouldInclude.Replace(" ", ""))
|
|
.And.NotHaveStdOutContaining(shouldntInclude.Replace(" ", ""));
|
|
}
|
|
|
|
}
|
|
|
|
[Fact]
|
|
public void ItDoesNotAcceptInvalidFramework()
|
|
{
|
|
var testAsset = "MSBuildAppWithMultipleFrameworks";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute("--framework invalid")
|
|
.Should()
|
|
.Fail();
|
|
}
|
|
|
|
[Fact]
|
|
public void ItListsFSharpProject()
|
|
{
|
|
var testAsset = "FSharpTestAppSimple";
|
|
var projectDirectory = TestAssets
|
|
.Get(testAsset)
|
|
.CreateInstance()
|
|
.WithSourceFiles()
|
|
.Root
|
|
.FullName;
|
|
|
|
new RestoreCommand()
|
|
.WithWorkingDirectory(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
|
|
new ListPackageCommand()
|
|
.WithPath(projectDirectory)
|
|
.Execute()
|
|
.Should()
|
|
.Pass()
|
|
.And.NotHaveStdErr();
|
|
}
|
|
|
|
}
|
|
}
|