dependabot-nuget 0.361.2 → 0.362.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99c411faba9d94582218dd8fea9921fb6a751deac6bcf3ad1fdfe5e91dac29ef
4
- data.tar.gz: 9a2bb899e293e1bf5706645bc7dc7acf770c4f266b7adb82e4f292bc723307ff
3
+ metadata.gz: d0ffb6a9bd24802888ecd885336ebc5b54e10b351dd9af39b37ac76ba3cde4ca
4
+ data.tar.gz: b623440d284b905846bfde41dd41f8b189964cbb048769c5d0d1926a3541e322
5
5
  SHA512:
6
- metadata.gz: f8a307f7b223fbac2dced0d2945f643bba1e76b1efd637b5fe031d6ac8f12c1d57f0e4f9d5b076617957f8e6cba0702f5889c5c421f8c1620d4914fc317896ef
7
- data.tar.gz: c41af6129c806d282c92c300d62d29581a46c40ac812df0b5b26c3e691f6a935b37a74392d764caec8608f3c807b1968cfaa4d5fe6e23b6289fa9d601d419b9e
6
+ metadata.gz: db7e141cd27b415270816c892fdc7cb78de228701a861ab1b7d4e2eae5581fb0325ae1fa7149587e7f14666d8e424d09586080f0b95cc655f1ec408d140314b0
7
+ data.tar.gz: 4c97e20a7ef7ee48aa2d2701bc11dae853f2c5a513d1f9c4c45590cac77cce963f6a8e0170bafd6bfed74669b2ba58db820984384512f38a50111fcaf0a40955
@@ -611,7 +611,61 @@ public class XmlFileWriter : IFileWriter
611
611
  // e.g., "[2.0.0, )" => "2.0.0"
612
612
  if (newRange.MaxVersion is null)
613
613
  {
614
- return requiredVersion.ToString();
614
+ var requiredVersionString = requiredVersion.ToString();
615
+ var isWildcardVersion = existingRange.OriginalString?.Contains('*') == true;
616
+ if (isWildcardVersion)
617
+ {
618
+ var oldRangeParts = existingRange.OriginalString!.Split('.');
619
+ var newRangeParts = requiredVersion.ToFullString().Split('.');
620
+ var rebuiltParts = new List<string>();
621
+ for (int i = 0; i < oldRangeParts.Length; i++)
622
+ {
623
+ if (oldRangeParts[i].Contains('*'))
624
+ {
625
+ var dashIndex = oldRangeParts[i].IndexOf('-');
626
+ var starIndex = oldRangeParts[i].IndexOf('*');
627
+ if (dashIndex >= 0 && dashIndex < starIndex)
628
+ {
629
+ // prerelease wildcard (e.g., "3-*")
630
+ if (i < newRangeParts.Length)
631
+ {
632
+ var newDashIndex = newRangeParts[i].IndexOf('-');
633
+ if (newDashIndex >= 0)
634
+ {
635
+ var beforeDash = newRangeParts[i][..newDashIndex];
636
+ var fromDash = oldRangeParts[i][dashIndex..];
637
+ rebuiltParts.Add(beforeDash + fromDash);
638
+ rebuiltParts.AddRange(oldRangeParts.Skip(i + 1));
639
+ }
640
+ else
641
+ {
642
+ // new version is stable, drop prerelease wildcard
643
+ rebuiltParts.Add(newRangeParts[i]);
644
+ }
645
+ }
646
+ else
647
+ {
648
+ rebuiltParts.Add("0");
649
+ }
650
+ }
651
+ else
652
+ {
653
+ // version wildcard (e.g., "*", "*-*", "*-preview*")
654
+ rebuiltParts.AddRange(oldRangeParts.Skip(i));
655
+ }
656
+
657
+ break;
658
+ }
659
+ else
660
+ {
661
+ rebuiltParts.Add(i < newRangeParts.Length ? newRangeParts[i] : "0");
662
+ }
663
+ }
664
+
665
+ requiredVersionString = string.Join(".", rebuiltParts);
666
+ }
667
+
668
+ return requiredVersionString;
615
669
  }
616
670
 
617
671
  return newRange.ToString();
@@ -927,6 +927,52 @@ public class FileWriterWorkerTests : TestBase
927
927
  );
928
928
  }
929
929
 
930
+ [Fact]
931
+ public async Task EndToEnd_WildcardVersionShapeIsRetained()
932
+ {
933
+ await TestAsync(
934
+ dependencyName: "Some.Dependency",
935
+ oldDependencyVersion: "1.3.4",
936
+ newDependencyVersion: "2.5.6",
937
+ files: [
938
+ ("src/project.csproj", """
939
+ <Project Sdk="Microsoft.NET.Sdk">
940
+ <PropertyGroup>
941
+ <TargetFramework>net9.0</TargetFramework>
942
+ </PropertyGroup>
943
+ <ItemGroup>
944
+ <PackageReference Include="Some.Dependency" Version="1.*" />
945
+ </ItemGroup>
946
+ </Project>
947
+ """),
948
+ ("Directory.Build.props", "<Project />"),
949
+ ("Directory.Build.targets", "<Project />"),
950
+ ],
951
+ packages: [
952
+ MockNuGetPackage.CreateSimplePackage("Some.Dependency", "1.3.4", "net9.0"),
953
+ MockNuGetPackage.CreateSimplePackage("Some.Dependency", "2.5.6", "net9.0"),
954
+ ],
955
+ discoveryWorker: null, // use real worker
956
+ dependencySolver: null, // use real worker
957
+ fileWriter: null, // use real worker
958
+ expectedFiles: [
959
+ ("src/project.csproj", """
960
+ <Project Sdk="Microsoft.NET.Sdk">
961
+ <PropertyGroup>
962
+ <TargetFramework>net9.0</TargetFramework>
963
+ </PropertyGroup>
964
+ <ItemGroup>
965
+ <PackageReference Include="Some.Dependency" Version="2.*" />
966
+ </ItemGroup>
967
+ </Project>
968
+ """),
969
+ ],
970
+ expectedOperations: [
971
+ new DirectUpdate() { DependencyName = "Some.Dependency", NewVersion = NuGetVersion.Parse("2.5.6"), UpdatedFiles = ["/src/project.csproj"] }
972
+ ]
973
+ );
974
+ }
975
+
930
976
  private static async Task TestAsync(
931
977
  string dependencyName,
932
978
  string oldDependencyVersion,
@@ -361,7 +361,7 @@ public class XmlFileWriterTests : FileWriterTestsBase
361
361
  <Project Sdk="Microsoft.NET.Sdk">
362
362
  <ItemGroup>
363
363
  <PackageReference Include="Ignored.Dependency" Version="7.0.0" />
364
- <PackageReference Include="Some.Dependency" Version="2.0.0" />
364
+ <PackageReference Include="Some.Dependency" Version="2.*" />
365
365
  <PackageReference Include="Some.Other.Dependency" Version="8.0.0" />
366
366
  </ItemGroup>
367
367
  </Project>
@@ -12,11 +12,24 @@ public class XmlFileWriterTests_CreateUpdatedVersionRangeTests
12
12
  [InlineData("[1.0.0]", "1.0.0", "2.0.0", "[2.0.0]")] // single exact version
13
13
  [InlineData("[1.0.0, 3.0.0)", "1.0.0", "2.0.0", "[2.0.0, 3.0.0)")] // narrowing of range
14
14
  [InlineData("[1.0.0, 2.0.0)", "1.0.0", "2.0.0", "2.0.0")] // narrowing of range to simple version string
15
+ [InlineData("*", "1.0.1", "2.0.0", "*")] // wildcard is retained at major level
16
+ [InlineData("1.*", "1.0.1", "2.0.0", "2.*")] // wildcard is retained at minor level
17
+ [InlineData("1.0.*", "1.0.1", "2.0.0", "2.0.*")] // wildcard is retained at patch level
18
+ [InlineData("1.0.0.*", "1.0.1.0", "2.0.0", "2.0.0.*")] // wildcard is retained at revision level
19
+ [InlineData("1.0.0.*", "1.0.1", "2.0", "2.0.0.*")] // wildcard is retained at revision level with a shorter updated version
20
+ [InlineData("10.*-*", "10.0-beta1", "11.0-beta2", "11.*-*")] // wildcard with prerelease
21
+ [InlineData("10.*-preview*", "10.0-preview1", "11.0-preview4", "11.*-preview*")] // wildcard with specific prerelease
22
+ [InlineData("10.0.0-preview.*", "10.0.0-preview.1", "11.0.0-preview.2", "11.0.0-preview.*")] // wildcard in prerelease
23
+ [InlineData("1.2.3-*", "1.2.3-beta", "2.0.0-beta", "2.0.0-*")] // wildcard only in prerelease
24
+ [InlineData("1.2.3-*", "1.2.3-beta", "2.0.0", "2.0.0")] // wildcard in prerelease superseded by stable
15
25
  public void CreateUpdatedVersionRange(string existingRangeString, string existingVersionString, string newVersionString, string expectedNewRangeString)
16
26
  {
17
27
  var existingRange = VersionRange.Parse(existingRangeString);
18
28
  var existingVersion = NuGetVersion.Parse(existingVersionString);
19
29
  var newVersion = NuGetVersion.Parse(newVersionString);
30
+ var newRange = VersionRange.Parse(expectedNewRangeString);
31
+
32
+ Assert.True(newRange.Satisfies(newVersion));
20
33
 
21
34
  var actualNewRangeString = XmlFileWriter.CreateUpdatedVersionRangeString(existingRange, existingVersion, newVersion);
22
35
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dependabot-nuget
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.361.2
4
+ version: 0.362.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dependabot
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - '='
17
17
  - !ruby/object:Gem::Version
18
- version: 0.361.2
18
+ version: 0.362.0
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - '='
24
24
  - !ruby/object:Gem::Version
25
- version: 0.361.2
25
+ version: 0.362.0
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: debug
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -553,7 +553,7 @@ licenses:
553
553
  - MIT
554
554
  metadata:
555
555
  bug_tracker_uri: https://github.com/dependabot/dependabot-core/issues
556
- changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.361.2
556
+ changelog_uri: https://github.com/dependabot/dependabot-core/releases/tag/v0.362.0
557
557
  rdoc_options: []
558
558
  require_paths:
559
559
  - lib