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.
Files changed (81) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +22 -22
  3. data/helpers/lib/NuGetUpdater/DotNetPackageCorrelation.Cli/Program.cs +21 -7
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +19 -11
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +19 -9
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +21 -14
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/FrameworkCheckCommand.cs +8 -5
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +29 -16
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +20 -19
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Program.cs +2 -1
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +1 -1
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +10 -23
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Run.cs +9 -0
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +15 -232
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +1 -154
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -12
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/GlobalJsonBuildFile.cs +5 -13
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/PrivateSourceTimedOutException.cs +12 -0
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +4 -0
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PrivateSourceTimedOut.cs +10 -0
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/AzurePackageDetailFinder.cs +30 -0
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGenerator.cs +237 -0
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitHubPackageDetailFinder.cs +101 -0
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/GitLabPackageDetailFinder.cs +107 -0
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/HttpFetcher.cs +32 -0
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IHttpFetcher.cs +30 -0
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPackageDetailFinder.cs +47 -0
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/IPullRequestBodyGenerator.cs +11 -0
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestBodyGenerator/SimplePullRequestBodyGenerator.cs +15 -0
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/PullRequestTextGenerator.cs +7 -3
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +3 -525
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandler.cs +2 -2
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/GroupUpdateAllVersionsHandler.cs +4 -4
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandler.cs +2 -2
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandler.cs +2 -2
  36. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandler.cs +2 -2
  37. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/FileWriterWorker.cs +85 -35
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/FileWriters/XmlFileWriter.cs +27 -8
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +1 -856
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +18 -7
  41. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +16 -200
  42. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +21 -556
  43. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +9 -73
  44. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Clone/CloneWorkerTests.cs +2 -2
  45. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/DependencySolver/MSBuildDependencySolverTests.cs +1 -1
  46. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +1 -20
  47. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +0 -2
  48. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +3 -62
  49. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +13 -563
  50. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +20 -269
  51. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +2 -2
  52. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Files/GlobalJsonBuildFileTests.cs +0 -1
  53. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/EndToEndTests.cs +131 -131
  54. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/HttpApiHandlerTests.cs +1 -0
  55. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/JobErrorBaseTests.cs +7 -0
  56. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MessageReportTests.cs +11 -0
  57. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +0 -203
  58. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/DetailedPullRequestBodyGeneratorTests.cs +871 -0
  59. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/IPackageDetailFinderTests.cs +28 -0
  60. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestBodyGenerator/TestHttpFetcher.cs +23 -0
  61. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestTextTests.cs +24 -24
  62. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +14 -12
  63. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/CreateSecurityUpdatePullRequestHandlerTests.cs +6 -6
  64. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/GroupUpdateAllVersionsHandlerTests.cs +18 -18
  65. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshGroupUpdatePullRequestHandlerTests.cs +15 -15
  66. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshSecurityUpdatePullRequestHandlerTests.cs +21 -21
  67. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/RefreshVersionUpdatePullRequestHandlerTests.cs +15 -15
  68. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdateHandlers/UpdateHandlersTestsBase.cs +1 -8
  69. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests.cs +2 -2
  70. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/FileWriterWorkerTests_MiscellaneousTests.cs +45 -0
  71. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/FileWriters/XmlFileWriterTests.cs +111 -0
  72. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +1 -159
  73. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +26 -660
  74. data/helpers/lib/NuGetUpdater/global.json +1 -1
  75. metadata +18 -10
  76. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunResult.cs +0 -13
  77. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/PullRequestMessageTests.cs +0 -296
  78. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +0 -3592
  79. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatePermittedAndMessageTests.cs +0 -457
  80. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DirsProj.cs +0 -378
  81. 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
  }
@@ -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() { UseDirectDiscovery = true };
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")])]),