dependabot-nuget 0.301.1 → 0.303.0

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +5 -5
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscovery.props +4 -1
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscovery.targets +19 -4
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscoveryTargetingPacks.props +10 -0
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +20 -17
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +179 -28
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -0
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/FrameworkCompatibilityService.cs +15 -6
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/SupportedFrameworks.cs +6 -4
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +1 -0
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +8 -0
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +7 -4
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/LockFileUpdater.cs +2 -0
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +257 -37
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +13 -4
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/{WebApplicationTargetsConditionPatcher.cs → SpecialImportsConditionPatcher.cs} +18 -11
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationBase.cs +209 -0
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdateOperationResult.cs +3 -0
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +79 -24
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/XmlFilePreAndPostProcessor.cs +26 -11
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +48 -22
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +54 -0
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +68 -0
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +94 -0
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/FrameworkChecker/FrameworkCompatibilityServiceFacts.cs +1 -1
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +24 -6
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackageReferenceUpdaterTests.cs +177 -0
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/SpecialFilePatcherTests.cs +99 -0
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateOperationBaseTests.cs +130 -0
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +5 -0
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +71 -5
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs +125 -3
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +23 -0
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +145 -147
  36. data/lib/dependabot/nuget/file_parser.rb +22 -19
  37. metadata +13 -8
@@ -2,6 +2,8 @@ using System.Linq;
2
2
  using System.Text;
3
3
  using System.Text.Json;
4
4
 
5
+ using NuGet.Versioning;
6
+
5
7
  using NuGetUpdater.Core.Run.ApiModel;
6
8
  using NuGetUpdater.Core.Updater;
7
9
 
@@ -50,7 +52,20 @@ public partial class UpdateWorkerTests
50
52
  <PackageReference Include="Some.Package" Version="13.0.1" />
51
53
  </ItemGroup>
52
54
  </Project>
53
- """
55
+ """,
56
+ expectedResult: new()
57
+ {
58
+ UpdateOperations = [
59
+ new DirectUpdate()
60
+ {
61
+ DependencyName = "Some.Package",
62
+ NewVersion = NuGetVersion.Parse("13.0.1"),
63
+ UpdatedFiles = [
64
+ "/src/test-project.csproj"
65
+ ]
66
+ }
67
+ ]
68
+ }
54
69
  );
55
70
  }
56
71
 
@@ -2636,7 +2651,18 @@ public partial class UpdateWorkerTests
2636
2651
  </ItemGroup>
2637
2652
  </Project>
2638
2653
  """)
2639
- ]
2654
+ ],
2655
+ expectedResult: new()
2656
+ {
2657
+ UpdateOperations = [
2658
+ new PinnedUpdate()
2659
+ {
2660
+ DependencyName = "Some.Transitive.Dependency",
2661
+ NewVersion = NuGetVersion.Parse("5.0.2"),
2662
+ UpdatedFiles = ["/src/Directory.Build.props", "/src/Directory.Packages.props", "/src/test-project.csproj"]
2663
+ }
2664
+ ]
2665
+ }
2640
2666
  );
2641
2667
  }
2642
2668
 
@@ -3106,7 +3132,26 @@ public partial class UpdateWorkerTests
3106
3132
  <PackageReference Include="Some.Package" Version="2.0.0" />
3107
3133
  </ItemGroup>
3108
3134
  </Project>
3109
- """
3135
+ """,
3136
+ expectedResult: new()
3137
+ {
3138
+ UpdateOperations = [
3139
+ new DirectUpdate()
3140
+ {
3141
+ DependencyName = "Some.Package",
3142
+ NewVersion = NuGetVersion.Parse("2.0.0"),
3143
+ UpdatedFiles = ["/src/test-project.csproj"]
3144
+ },
3145
+ new ParentUpdate()
3146
+ {
3147
+ DependencyName = "Transitive.Package",
3148
+ NewVersion = NuGetVersion.Parse("8.0.0"),
3149
+ UpdatedFiles = ["/src/test-project.csproj"],
3150
+ ParentDependencyName = "Some.Package",
3151
+ ParentNewVersion = NuGetVersion.Parse("2.0.0")
3152
+ }
3153
+ ]
3154
+ }
3110
3155
  );
3111
3156
  }
3112
3157
 
@@ -3202,6 +3247,9 @@ public partial class UpdateWorkerTests
3202
3247
  </Project>
3203
3248
  """,
3204
3249
  expectedResult: new() // success
3250
+ {
3251
+ UpdateOperations = []
3252
+ }
3205
3253
  );
3206
3254
  }
3207
3255
 
@@ -3484,6 +3532,7 @@ public partial class UpdateWorkerTests
3484
3532
  expectedResult: new()
3485
3533
  {
3486
3534
  Error = new PrivateSourceAuthenticationFailure([$"{http.BaseUrl.TrimEnd('/')}/index.json"]),
3535
+ UpdateOperations = [],
3487
3536
  }
3488
3537
  );
3489
3538
  }
@@ -3707,5 +3756,78 @@ public partial class UpdateWorkerTests
3707
3756
  ]
3708
3757
  );
3709
3758
  }
3759
+
3760
+ [Fact]
3761
+ public async Task LegacyProjectWithPackageReferencesCanUpdate()
3762
+ {
3763
+ await TestUpdateForProject("Some.Dependency", "1.0.0", "1.0.1",
3764
+ experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
3765
+ packages: [
3766
+ MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.0.0", "net48"),
3767
+ MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.0.1", "net48"),
3768
+ ],
3769
+ projectContents: """
3770
+ <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3771
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
3772
+ <PropertyGroup>
3773
+ <OutputType>Library</OutputType>
3774
+ <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
3775
+ </PropertyGroup>
3776
+ <ItemGroup>
3777
+ <PackageReference Include="Some.Dependency" Version="1.0.0" />
3778
+ </ItemGroup>
3779
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
3780
+ </Project>
3781
+ """,
3782
+ expectedProjectContents: """
3783
+ <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3784
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
3785
+ <PropertyGroup>
3786
+ <OutputType>Library</OutputType>
3787
+ <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
3788
+ </PropertyGroup>
3789
+ <ItemGroup>
3790
+ <PackageReference Include="Some.Dependency" Version="1.0.1" />
3791
+ </ItemGroup>
3792
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
3793
+ </Project>
3794
+ """
3795
+ );
3796
+ }
3797
+
3798
+ [Fact]
3799
+ public async Task UpdateDependencyWhenUnrelatedDependencyHasWildcardVersion()
3800
+ {
3801
+ await TestUpdateForProject("Some.Package", "1.0.0", "1.0.1",
3802
+ experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
3803
+ packages: [
3804
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.0", "net9.0"),
3805
+ MockNuGetPackage.CreateSimplePackage("Some.Package", "1.0.1", "net9.0"),
3806
+ MockNuGetPackage.CreateSimplePackage("Unrelated.Package", "2.1.0", "net9.0"),
3807
+ ],
3808
+ projectContents: """
3809
+ <Project Sdk="Microsoft.NET.Sdk">
3810
+ <PropertyGroup>
3811
+ <TargetFramework>net9.0</TargetFramework>
3812
+ </PropertyGroup>
3813
+ <ItemGroup>
3814
+ <PackageReference Include="Some.Package" Version="1.0.0" />
3815
+ <PackageReference Include="Unrelated.Package" Version="2.*" />
3816
+ </ItemGroup>
3817
+ </Project>
3818
+ """,
3819
+ expectedProjectContents: """
3820
+ <Project Sdk="Microsoft.NET.Sdk">
3821
+ <PropertyGroup>
3822
+ <TargetFramework>net9.0</TargetFramework>
3823
+ </PropertyGroup>
3824
+ <ItemGroup>
3825
+ <PackageReference Include="Some.Package" Version="1.0.1" />
3826
+ <PackageReference Include="Unrelated.Package" Version="2.*" />
3827
+ </ItemGroup>
3828
+ </Project>
3829
+ """
3830
+ );
3831
+ }
3710
3832
  }
3711
3833
  }
@@ -1965,6 +1965,9 @@ public partial class UpdateWorkerTests
1965
1965
  <ItemGroup>
1966
1966
  <Compile Include="Properties\AssemblyInfo.cs" />
1967
1967
  </ItemGroup>
1968
+ <ItemGroup>
1969
+ <ProjectReference Include="other-project\other-project.csproj" />
1970
+ </ItemGroup>
1968
1971
  <PropertyGroup>
1969
1972
  <!-- some project files set this property which makes the Microsoft.WebApplication.targets import a few lines down always fail -->
1970
1973
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">C:\some\path\that\does\not\exist</VSToolsPath>
@@ -1985,6 +1988,20 @@ public partial class UpdateWorkerTests
1985
1988
  <package id="Some.Package" version="7.0.1" targetFramework="net45" />
1986
1989
  </packages>
1987
1990
  """,
1991
+ additionalFiles:
1992
+ [
1993
+ ("other-project/other-project.csproj", """
1994
+ <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1995
+ <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
1996
+ <PropertyGroup>
1997
+ <OutputType>Library</OutputType>
1998
+ <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
1999
+ </PropertyGroup>
2000
+ <Import Project="$(VSToolsPath)\SomeSubPath\WebApplications\Microsoft.WebApplication.targets" />
2001
+ <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
2002
+ </Project>
2003
+ """)
2004
+ ],
1988
2005
  expectedProjectContents: """
1989
2006
  <Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
1990
2007
  <PropertyGroup>
@@ -2046,6 +2063,9 @@ public partial class UpdateWorkerTests
2046
2063
  <ItemGroup>
2047
2064
  <Compile Include="Properties\AssemblyInfo.cs" />
2048
2065
  </ItemGroup>
2066
+ <ItemGroup>
2067
+ <ProjectReference Include="other-project\other-project.csproj" />
2068
+ </ItemGroup>
2049
2069
  <PropertyGroup>
2050
2070
  <!-- some project files set this property which makes the Microsoft.WebApplication.targets import a few lines down always fail -->
2051
2071
  <VSToolsPath Condition="'$(VSToolsPath)' == ''">C:\some\path\that\does\not\exist</VSToolsPath>
@@ -2426,6 +2446,7 @@ public partial class UpdateWorkerTests
2426
2446
  expectedResult: new()
2427
2447
  {
2428
2448
  Error = new PrivateSourceAuthenticationFailure([$"{http.BaseUrl.TrimEnd('/')}/index.json"]),
2449
+ UpdateOperations = [],
2429
2450
  }
2430
2451
  );
2431
2452
  }
@@ -2556,6 +2577,7 @@ public partial class UpdateWorkerTests
2556
2577
  expectedResult: new()
2557
2578
  {
2558
2579
  ErrorRegex = "Response status code does not indicate success",
2580
+ UpdateOperations = [],
2559
2581
  }
2560
2582
  );
2561
2583
  }
@@ -2633,6 +2655,7 @@ public partial class UpdateWorkerTests
2633
2655
  expectedResult: new()
2634
2656
  {
2635
2657
  Error = new DependencyNotFound("Unrelated.Package.1.0.0"),
2658
+ UpdateOperations = [],
2636
2659
  }
2637
2660
  );
2638
2661
  }