-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
Copy pathGivenThatWeWantToRestoreDotNetCliToolReference.cs
84 lines (68 loc) · 3.6 KB
/
GivenThatWeWantToRestoreDotNetCliToolReference.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
#nullable disable
using NuGet.Common;
using NuGet.Frameworks;
using NuGet.ProjectModel;
namespace Microsoft.NET.Restore.Tests
{
public class GivenThatWeWantToRestoreDotNetCliToolReference : SdkTest
{
private const string ProjectToolVersion = "1.0.0";
private const string ExpectedProjectToolRestoreTargetFrameworkMoniker = "netcoreapp2.2";
public GivenThatWeWantToRestoreDotNetCliToolReference(ITestOutputHelper log) : base(log)
{
}
[Fact]
public void It_can_restore_with_netcoreapp2_2()
{
TestProject toolProject = new()
{
Name = "TestTool" + nameof(It_can_restore_with_netcoreapp2_2),
TargetFrameworks = "netcoreapp1.0",
IsExe = true
};
toolProject.AdditionalProperties.Add("PackageType", "DotnetCliTool");
var toolProjectInstance = _testAssetsManager.CreateTestProject(toolProject, identifier: toolProject.Name);
var packCommand = new PackCommand(Log, Path.Combine(toolProjectInstance.TestRoot, toolProject.Name));
packCommand.Execute().Should().Pass();
string nupkgPath = Path.Combine(packCommand.ProjectRootPath, "bin", "Debug");
TestProject toolReferenceProject = new()
{
Name = "DotNetCliToolReferenceProject",
IsExe = true,
TargetFrameworks = "netcoreapp1.0",
};
toolReferenceProject.DotNetCliToolReferences.Add(
new TestPackageReference(id: toolProject.Name,
version: ProjectToolVersion,
nupkgPath: null));
TestAsset toolReferenceProjectInstance = _testAssetsManager.CreateTestProject(toolReferenceProject, identifier: toolReferenceProject.Name);
DeleteFolder(Path.Combine(TestContext.Current.NuGetCachePath, toolProject.Name.ToLowerInvariant()));
DeleteFolder(Path.Combine(TestContext.Current.NuGetCachePath, ".tools", toolProject.Name.ToLowerInvariant()));
NuGetConfigWriter.Write(toolReferenceProjectInstance.TestRoot, nupkgPath);
RestoreCommand restoreCommand =
toolReferenceProjectInstance.GetRestoreCommand(log: Log, relativePath: toolReferenceProject.Name);
var restoreResult = restoreCommand
.Execute("/v:n");
var assetsJsonPath = Path.Combine(TestContext.Current.NuGetCachePath,
".tools",
toolProject.Name.ToLowerInvariant(),
ProjectToolVersion,
ExpectedProjectToolRestoreTargetFrameworkMoniker,
"project.assets.json");
LockFile lockFile = LockFileUtilities.GetLockFile(assetsJsonPath, NullLogger.Instance);
lockFile.Targets.Single().TargetFramework
.Should().Be(NuGetFramework.Parse(ExpectedProjectToolRestoreTargetFrameworkMoniker),
"Restore target framework should be capped at netcoreapp2.2 due to moving away from project tools." +
"Even when SDK's TFM is higher and the project's TFM is netcoreapp1.0");
}
private static void DeleteFolder(string path)
{
if (Directory.Exists(path))
{
Directory.Delete(path, true);
}
}
}
}