dependabot-nuget 0.321.3 → 0.322.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/helpers/lib/NuGetUpdater/Directory.Packages.props +22 -22
- data/helpers/lib/NuGetUpdater/DotNetPackageCorrelation.Cli/Program.cs +21 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +19 -11
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +19 -9
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +21 -14
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +8 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +29 -16
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +20 -19
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +2 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +10 -23
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Run.cs +9 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +15 -232
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +1 -154
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -12
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +5 -13
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/PrivateSourceTimedOutException.cs +12 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +4 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PrivateSourceTimedOut.cs +10 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/AzurePackageDetailFinder.cs +30 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGenerator.cs +237 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitHubPackageDetailFinder.cs +101 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitLabPackageDetailFinder.cs +107 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/HttpFetcher.cs +32 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IHttpFetcher.cs +30 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPackageDetailFinder.cs +47 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPullRequestBodyGenerator.cs +11 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/SimplePullRequestBodyGenerator.cs +15 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestTextGenerator.cs +7 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +3 -525
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +4 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/FileWriterWorker.cs +85 -35
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/XmlFileWriter.cs +27 -8
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +1 -856
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +18 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +16 -200
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +21 -556
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +9 -73
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Clone/CloneWorkerTests.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/DependencySolver/MSBuildDependencySolverTests.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +1 -20
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +0 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +3 -62
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +13 -563
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +20 -269
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +0 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/EndToEndTests.cs +131 -131
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/HttpApiHandlerTests.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/JobErrorBaseTests.cs +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MessageReportTests.cs +11 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +0 -203
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGeneratorTests.cs +871 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/IPackageDetailFinderTests.cs +28 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/TestHttpFetcher.cs +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestTextTests.cs +24 -24
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +14 -12
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandlerTests.cs +6 -6
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/GroupUpdateAllVersionsHandlerTests.cs +18 -18
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandlerTests.cs +15 -15
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandlerTests.cs +21 -21
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandlerTests.cs +15 -15
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/UpdateHandlersTestsBase.cs +1 -8
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests_MiscellaneousTests.cs +45 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs +111 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +1 -159
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +26 -660
- data/helpers/lib/NuGetUpdater/global.json +1 -1
- metadata +18 -10
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunResult.cs +0 -13
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestMessageTests.cs +0 -296
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +0 -3592
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatePermittedAndMessageTests.cs +0 -457
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DirsProj.cs +0 -378
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/SdkPackageUpdaterHelperTests.cs +0 -175
@@ -106,4 +106,49 @@ public class FileWriterWorkerTests_MiscellaneousTests
|
|
106
106
|
Assert.Equal("initial client content", await File.ReadAllTextAsync(Path.Join(repoContentsPath.FullName, "client/client.csproj"), TestContext.Current.CancellationToken));
|
107
107
|
Assert.Equal("initial packages config content", await File.ReadAllTextAsync(Path.Join(repoContentsPath.FullName, "client/packages.config"), TestContext.Current.CancellationToken));
|
108
108
|
}
|
109
|
+
|
110
|
+
[Fact]
|
111
|
+
public async Task TryPerformFileWrites_ReportsAppropriateUpdatedFilePaths_WhenStartingFromDifferentProjectDirectory()
|
112
|
+
{
|
113
|
+
// discovery was initiated from the "tests" directory, but we're now evaluating the "client" project for file writes
|
114
|
+
// arrange
|
115
|
+
using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(
|
116
|
+
("tests/tests.csproj", """
|
117
|
+
<Project>
|
118
|
+
<ItemGroup>
|
119
|
+
<PackageReference Include="Some.Package" Version="1.0.0" />
|
120
|
+
</ItemGroup>
|
121
|
+
</Project>
|
122
|
+
"""),
|
123
|
+
("client/client.csproj", """
|
124
|
+
<Project>
|
125
|
+
<ItemGroup>
|
126
|
+
<PackageReference Include="Some.Package" Version="1.0.0" />
|
127
|
+
</ItemGroup>
|
128
|
+
</Project>
|
129
|
+
""")
|
130
|
+
);
|
131
|
+
var logger = new TestLogger();
|
132
|
+
var fileWriter = new XmlFileWriter(logger);
|
133
|
+
var originalDiscoveryDirectory = new DirectoryInfo(Path.Join(tempDir.DirectoryPath, "tests"));
|
134
|
+
var projectDiscovery = new ProjectDiscoveryResult()
|
135
|
+
{
|
136
|
+
FilePath = "../client/client.csproj",
|
137
|
+
Dependencies = [new("Some.Package", "1.0.0", DependencyType.PackageReference)],
|
138
|
+
ImportedFiles = [],
|
139
|
+
AdditionalFiles = [],
|
140
|
+
};
|
141
|
+
|
142
|
+
// act
|
143
|
+
var updatedFilePaths = await FileWriterWorker.TryPerformFileWritesAsync(
|
144
|
+
fileWriter,
|
145
|
+
new DirectoryInfo(tempDir.DirectoryPath),
|
146
|
+
originalDiscoveryDirectory,
|
147
|
+
projectDiscovery,
|
148
|
+
[new("Some.Package", "1.0.1", DependencyType.PackageReference)]
|
149
|
+
);
|
150
|
+
|
151
|
+
// assert
|
152
|
+
AssertEx.Equal(["/client/client.csproj"], updatedFilePaths);
|
153
|
+
}
|
109
154
|
}
|
data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs
CHANGED
@@ -662,6 +662,40 @@ public class XmlFileWriterTests : FileWriterTestsBase
|
|
662
662
|
);
|
663
663
|
}
|
664
664
|
|
665
|
+
[Fact]
|
666
|
+
public async Task MultiDependency_SingleFile_UpdateOnePackage_PinAnotherPackage()
|
667
|
+
{
|
668
|
+
await TestAsync(
|
669
|
+
files: [
|
670
|
+
("project.csproj", """
|
671
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
672
|
+
<ItemGroup>
|
673
|
+
<PackageReference Include="Some.Dependency" Version="1.0.0" />
|
674
|
+
</ItemGroup>
|
675
|
+
</Project>
|
676
|
+
""")
|
677
|
+
],
|
678
|
+
initialProjectDependencyStrings: [
|
679
|
+
"Some.Dependency/1.0.0",
|
680
|
+
"Transitive.Dependency/3.0.0"
|
681
|
+
],
|
682
|
+
requiredDependencyStrings: [
|
683
|
+
"Some.Dependency/2.0.0",
|
684
|
+
"Transitive.Dependency/4.0.0",
|
685
|
+
],
|
686
|
+
expectedFiles: [
|
687
|
+
("project.csproj", """
|
688
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
689
|
+
<ItemGroup>
|
690
|
+
<PackageReference Include="Some.Dependency" Version="2.0.0" />
|
691
|
+
<PackageReference Include="Transitive.Dependency" Version="4.0.0" />
|
692
|
+
</ItemGroup>
|
693
|
+
</Project>
|
694
|
+
""")
|
695
|
+
]
|
696
|
+
);
|
697
|
+
}
|
698
|
+
|
665
699
|
[Fact]
|
666
700
|
public async Task MultiDependency_SingleFile_SomeAlreadyUpToDate_FromXml()
|
667
701
|
{
|
@@ -1591,4 +1625,81 @@ public class XmlFileWriterTests : FileWriterTestsBase
|
|
1591
1625
|
]
|
1592
1626
|
);
|
1593
1627
|
}
|
1628
|
+
|
1629
|
+
[Fact]
|
1630
|
+
public async Task NoChangesForUnsupportedInitialFile()
|
1631
|
+
{
|
1632
|
+
// the extension `.xyproj` is not supported by the file writer; it is immediately rejected
|
1633
|
+
await TestNoChangeAsync(
|
1634
|
+
files: [
|
1635
|
+
("unsupported.xyproj", """
|
1636
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1637
|
+
<ItemGroup>
|
1638
|
+
<PackageReference Include="Some.Package" Version="$(SomePackageVersion)" />
|
1639
|
+
</ItemGroup>
|
1640
|
+
</Project
|
1641
|
+
"""),
|
1642
|
+
("versions.props", """
|
1643
|
+
<Project>
|
1644
|
+
<PropertyGroup>
|
1645
|
+
<SomePackageVersion>1.0.0</SomePackageVersion>
|
1646
|
+
</PropertyGroup>
|
1647
|
+
</Project>
|
1648
|
+
""")
|
1649
|
+
],
|
1650
|
+
initialProjectDependencyStrings: ["Some.Package/1.0.0"],
|
1651
|
+
requiredDependencyStrings: ["Some.Package/2.0.0"]
|
1652
|
+
);
|
1653
|
+
}
|
1654
|
+
|
1655
|
+
[Fact]
|
1656
|
+
public async Task XmlDeclarationIsRetained()
|
1657
|
+
{
|
1658
|
+
await TestAsync(
|
1659
|
+
files: [
|
1660
|
+
("project.csproj", """
|
1661
|
+
<?xml version="1.0" encoding="utf-8"?>
|
1662
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1663
|
+
<Import Project="versions.props" />
|
1664
|
+
<ItemGroup>
|
1665
|
+
<PackageReference Include="Ignored.Dependency" Version="7.0.0" />
|
1666
|
+
<PackageReference Include="Some.Dependency" Version="$(SomeDependencyVersion)" />
|
1667
|
+
<PackageReference Include="Some.Other.Dependency" Version="8.0.0" />
|
1668
|
+
</ItemGroup>
|
1669
|
+
</Project>
|
1670
|
+
"""),
|
1671
|
+
("versions.props", """
|
1672
|
+
<?xml version="1.0" encoding="utf-8"?>
|
1673
|
+
<Project>
|
1674
|
+
<PropertyGroup>
|
1675
|
+
<SomeDependencyVersion>1.0.0</SomeDependencyVersion>
|
1676
|
+
</PropertyGroup>
|
1677
|
+
</Project>
|
1678
|
+
""")
|
1679
|
+
],
|
1680
|
+
initialProjectDependencyStrings: ["Some.Dependency/1.0.0"],
|
1681
|
+
requiredDependencyStrings: ["Some.Dependency/2.0.0"],
|
1682
|
+
expectedFiles: [
|
1683
|
+
("project.csproj", """
|
1684
|
+
<?xml version="1.0" encoding="utf-8"?>
|
1685
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1686
|
+
<Import Project="versions.props" />
|
1687
|
+
<ItemGroup>
|
1688
|
+
<PackageReference Include="Ignored.Dependency" Version="7.0.0" />
|
1689
|
+
<PackageReference Include="Some.Dependency" Version="$(SomeDependencyVersion)" />
|
1690
|
+
<PackageReference Include="Some.Other.Dependency" Version="8.0.0" />
|
1691
|
+
</ItemGroup>
|
1692
|
+
</Project>
|
1693
|
+
"""),
|
1694
|
+
("versions.props", """
|
1695
|
+
<?xml version="1.0" encoding="utf-8"?>
|
1696
|
+
<Project>
|
1697
|
+
<PropertyGroup>
|
1698
|
+
<SomeDependencyVersion>2.0.0</SomeDependencyVersion>
|
1699
|
+
</PropertyGroup>
|
1700
|
+
</Project>
|
1701
|
+
""")
|
1702
|
+
]
|
1703
|
+
);
|
1704
|
+
}
|
1594
1705
|
}
|
@@ -11,164 +11,6 @@ namespace NuGetUpdater.Core.Test.Update;
|
|
11
11
|
|
12
12
|
public class PackageReferenceUpdaterTests
|
13
13
|
{
|
14
|
-
[Fact]
|
15
|
-
public async Task DirectBuildFileChangesAreMaintainedWhenPinningTransitiveDependency()
|
16
|
-
{
|
17
|
-
// arrange
|
18
|
-
using var tempDir = await TemporaryDirectory.CreateWithContentsAsync([("project.csproj", """
|
19
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
20
|
-
<PropertyGroup>
|
21
|
-
<TargetFramework>net9.0</TargetFramework>
|
22
|
-
</PropertyGroup>
|
23
|
-
<ItemGroup>
|
24
|
-
<PackageReference Include="Completely.Different.Package" Version="1.0.0" />
|
25
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
26
|
-
</ItemGroup>
|
27
|
-
</Project>
|
28
|
-
""")]);
|
29
|
-
var packages = new[]
|
30
|
-
{
|
31
|
-
MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "1.0.0", "net9.0"),
|
32
|
-
MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "2.0.0", "net9.0"),
|
33
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0", [(null, [("Transitive.Package", "1.0.0")])]),
|
34
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "1.0.0", "net9.0"),
|
35
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "2.0.0", "net9.0"),
|
36
|
-
};
|
37
|
-
await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(packages, tempDir.DirectoryPath);
|
38
|
-
var fullProjectPath = Path.Combine(tempDir.DirectoryPath, "project.csproj");
|
39
|
-
var buildFile = ProjectBuildFile.Open(tempDir.DirectoryPath, fullProjectPath);
|
40
|
-
var experimentsManager = new ExperimentsManager();
|
41
|
-
|
42
|
-
// act
|
43
|
-
// pin transitive dependency
|
44
|
-
var updatedFiles = await PackageReferenceUpdater.UpdateTransitiveDependencyAsync(
|
45
|
-
tempDir.DirectoryPath,
|
46
|
-
fullProjectPath,
|
47
|
-
"Transitive.Package",
|
48
|
-
"2.0.0",
|
49
|
-
[buildFile],
|
50
|
-
experimentsManager,
|
51
|
-
new TestLogger());
|
52
|
-
|
53
|
-
// subsequent update should not overwrite previous change
|
54
|
-
PackageReferenceUpdater.TryUpdateDependencyVersion([buildFile], "Completely.Different.Package", "1.0.0", "2.0.0", new TestLogger());
|
55
|
-
|
56
|
-
// assert
|
57
|
-
await buildFile.SaveAsync();
|
58
|
-
var actualContents = await File.ReadAllTextAsync(fullProjectPath, TestContext.Current.CancellationToken);
|
59
|
-
var expectedContents = """
|
60
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
61
|
-
<PropertyGroup>
|
62
|
-
<TargetFramework>net9.0</TargetFramework>
|
63
|
-
</PropertyGroup>
|
64
|
-
<ItemGroup>
|
65
|
-
<PackageReference Include="Completely.Different.Package" Version="2.0.0" />
|
66
|
-
<PackageReference Include="Some.Package" Version="1.0.0" />
|
67
|
-
<PackageReference Include="Transitive.Package" Version="2.0.0" />
|
68
|
-
</ItemGroup>
|
69
|
-
</Project>
|
70
|
-
""";
|
71
|
-
Assert.Equal(expectedContents, actualContents);
|
72
|
-
}
|
73
|
-
|
74
|
-
[Fact]
|
75
|
-
public async Task DirectBuildFileChangesAreMaintainedWhenPinningTransitiveDependency_DirectoryPackagesPropsIsDiscovered()
|
76
|
-
{
|
77
|
-
// arrange
|
78
|
-
using var tempDir = await TemporaryDirectory.CreateWithContentsAsync(
|
79
|
-
[
|
80
|
-
("project.csproj", """
|
81
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
82
|
-
<PropertyGroup>
|
83
|
-
<TargetFramework>net9.0</TargetFramework>
|
84
|
-
</PropertyGroup>
|
85
|
-
<ItemGroup>
|
86
|
-
<PackageReference Include="Completely.Different.Package" />
|
87
|
-
<PackageReference Include="Some.Package" />
|
88
|
-
</ItemGroup>
|
89
|
-
</Project>
|
90
|
-
"""),
|
91
|
-
("Directory.Packages.props", """
|
92
|
-
<Project>
|
93
|
-
<PropertyGroup>
|
94
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
95
|
-
</PropertyGroup>
|
96
|
-
<ItemGroup>
|
97
|
-
<PackageVersion Include="Completely.Different.Package" Version="1.0.0" />
|
98
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
99
|
-
</ItemGroup>
|
100
|
-
</Project>
|
101
|
-
""")
|
102
|
-
]);
|
103
|
-
var packages = new[]
|
104
|
-
{
|
105
|
-
MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "1.0.0", "net9.0"),
|
106
|
-
MockNuGetPackage.CreateSimplePackage("Completely.Different.Package", "2.0.0", "net9.0"),
|
107
|
-
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0", [(null, [("Transitive.Package", "1.0.0")])]),
|
108
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "1.0.0", "net9.0"),
|
109
|
-
MockNuGetPackage.CreateSimplePackage("Transitive.Package", "2.0.0", "net9.0"),
|
110
|
-
};
|
111
|
-
await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(packages, tempDir.DirectoryPath);
|
112
|
-
var fullProjectPath = Path.Combine(tempDir.DirectoryPath, "project.csproj");
|
113
|
-
var fullDirectoryPackagesPath = Path.Combine(tempDir.DirectoryPath, "Directory.Packages.props");
|
114
|
-
var buildFiles = new[]
|
115
|
-
{
|
116
|
-
ProjectBuildFile.Open(tempDir.DirectoryPath, fullProjectPath),
|
117
|
-
ProjectBuildFile.Open(tempDir.DirectoryPath, fullDirectoryPackagesPath)
|
118
|
-
}.ToImmutableArray();
|
119
|
-
var experimentsManager = new ExperimentsManager();
|
120
|
-
|
121
|
-
// act
|
122
|
-
// pin transitive dependency
|
123
|
-
var updatedFiles = await PackageReferenceUpdater.UpdateTransitiveDependencyAsync(
|
124
|
-
tempDir.DirectoryPath,
|
125
|
-
fullProjectPath,
|
126
|
-
"Transitive.Package",
|
127
|
-
"2.0.0",
|
128
|
-
buildFiles,
|
129
|
-
experimentsManager,
|
130
|
-
new TestLogger());
|
131
|
-
|
132
|
-
// subsequent update should not overwrite previous change
|
133
|
-
PackageReferenceUpdater.TryUpdateDependencyVersion(buildFiles, "Completely.Different.Package", "1.0.0", "2.0.0", new TestLogger());
|
134
|
-
|
135
|
-
// assert
|
136
|
-
foreach (var bf in buildFiles)
|
137
|
-
{
|
138
|
-
await bf.SaveAsync();
|
139
|
-
}
|
140
|
-
|
141
|
-
var actualProjectContents = await File.ReadAllTextAsync(fullProjectPath, TestContext.Current.CancellationToken);
|
142
|
-
var expectedProjectContents = """
|
143
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
144
|
-
<PropertyGroup>
|
145
|
-
<TargetFramework>net9.0</TargetFramework>
|
146
|
-
</PropertyGroup>
|
147
|
-
<ItemGroup>
|
148
|
-
<PackageReference Include="Completely.Different.Package" />
|
149
|
-
<PackageReference Include="Some.Package" />
|
150
|
-
<PackageReference Include="Transitive.Package" />
|
151
|
-
</ItemGroup>
|
152
|
-
</Project>
|
153
|
-
""";
|
154
|
-
Assert.Equal(expectedProjectContents.Replace("\r", ""), actualProjectContents.Replace("\r", ""));
|
155
|
-
|
156
|
-
var actualDirectoryPackagesContents = await File.ReadAllTextAsync(fullDirectoryPackagesPath, TestContext.Current.CancellationToken);
|
157
|
-
var expectedDirectoryPackagesContents = """
|
158
|
-
<Project>
|
159
|
-
<PropertyGroup>
|
160
|
-
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
161
|
-
</PropertyGroup>
|
162
|
-
<ItemGroup>
|
163
|
-
<PackageVersion Include="Completely.Different.Package" Version="2.0.0" />
|
164
|
-
<PackageVersion Include="Some.Package" Version="1.0.0" />
|
165
|
-
<PackageVersion Include="Transitive.Package" Version="2.0.0" />
|
166
|
-
</ItemGroup>
|
167
|
-
</Project>
|
168
|
-
""";
|
169
|
-
Assert.Equal(expectedDirectoryPackagesContents.Replace("\r", ""), actualDirectoryPackagesContents.Replace("\r", ""));
|
170
|
-
}
|
171
|
-
|
172
14
|
[Theory]
|
173
15
|
[MemberData(nameof(ComputeUpdateOperationsTestData))]
|
174
16
|
public async Task ComputeUpdateOperations
|
@@ -182,7 +24,7 @@ public class PackageReferenceUpdaterTests
|
|
182
24
|
// arrange
|
183
25
|
using var repoRoot = await TemporaryDirectory.CreateWithContentsAsync(("project.csproj", "<Project Sdk=\"Microsoft.NET.Sdk\" />"));
|
184
26
|
var projectPath = Path.Combine(repoRoot.DirectoryPath, "project.csproj");
|
185
|
-
var experimentsManager = new ExperimentsManager()
|
27
|
+
var experimentsManager = new ExperimentsManager();
|
186
28
|
await UpdateWorkerTestBase.MockNuGetPackagesInDirectory([
|
187
29
|
MockNuGetPackage.CreateSimplePackage("Parent.Package", "1.0.0", "net9.0", [(null, [("Transitive.Package", "1.0.0")])]),
|
188
30
|
MockNuGetPackage.CreateSimplePackage("Parent.Package", "2.0.0", "net9.0", [(null, [("Transitive.Package", "2.0.0")])]),
|