dependabot-nuget 0.290.0 → 0.291.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 +4 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/DependencyFinder.cs +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +44 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscovery.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/ProjectDiscoveryResult.cs +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +19 -11
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ErrorType.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/LockFileUpdater.cs +3 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +43 -18
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +40 -14
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProcessExtensions.cs +45 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +41 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/ExpectedDiscoveryResults.cs +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/MockNuGetPackage.cs +2 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +246 -60
- data/lib/dependabot/nuget/file_fetcher.rb +1 -0
- data/lib/dependabot/nuget/file_parser.rb +90 -0
- data/lib/dependabot/nuget/language.rb +82 -0
- data/lib/dependabot/nuget/native_helpers.rb +23 -0
- data/lib/dependabot/nuget/package_manager.rb +51 -0
- metadata +7 -5
@@ -147,8 +147,10 @@ public class MSBuildHelperTests : TestBase
|
|
147
147
|
AssertEx.Equal(expectedTopLevelDependencies, actualTopLevelDependencies);
|
148
148
|
}
|
149
149
|
|
150
|
-
[
|
151
|
-
|
150
|
+
[Theory]
|
151
|
+
[InlineData(true)]
|
152
|
+
[InlineData(false)]
|
153
|
+
public async Task AllPackageDependenciesCanBeTraversed(bool useExistingSdks)
|
152
154
|
{
|
153
155
|
using var temp = new TemporaryDirectory();
|
154
156
|
MockNuGetPackage[] testPackages =
|
@@ -173,13 +175,16 @@ public class MSBuildHelperTests : TestBase
|
|
173
175
|
temp.DirectoryPath,
|
174
176
|
"netstandard2.0",
|
175
177
|
[new Dependency("Package.A", "1.0.0", DependencyType.Unknown)],
|
178
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
176
179
|
new TestLogger()
|
177
180
|
);
|
178
181
|
AssertEx.Equal(expectedDependencies, actualDependencies);
|
179
182
|
}
|
180
183
|
|
181
|
-
[
|
182
|
-
|
184
|
+
[Theory]
|
185
|
+
[InlineData(true)]
|
186
|
+
[InlineData(false)]
|
187
|
+
public async Task AllPackageDependencies_DoNotTruncateLongDependencyLists(bool useExistingSdks)
|
183
188
|
{
|
184
189
|
using var temp = new TemporaryDirectory();
|
185
190
|
MockNuGetPackage[] testPackages =
|
@@ -301,7 +306,14 @@ public class MSBuildHelperTests : TestBase
|
|
301
306
|
new Dependency("Package.2A", "1.0.0", DependencyType.Unknown),
|
302
307
|
new Dependency("Package.2R", "18.0.0", DependencyType.Unknown),
|
303
308
|
};
|
304
|
-
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
|
309
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
|
310
|
+
temp.DirectoryPath,
|
311
|
+
temp.DirectoryPath,
|
312
|
+
"net8.0",
|
313
|
+
packages,
|
314
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
315
|
+
new TestLogger()
|
316
|
+
);
|
305
317
|
for (int i = 0; i < actualDependencies.Length; i++)
|
306
318
|
{
|
307
319
|
var ad = actualDependencies[i];
|
@@ -312,8 +324,10 @@ public class MSBuildHelperTests : TestBase
|
|
312
324
|
AssertEx.Equal(expectedDependencies, actualDependencies);
|
313
325
|
}
|
314
326
|
|
315
|
-
[
|
316
|
-
|
327
|
+
[Theory]
|
328
|
+
[InlineData(true)]
|
329
|
+
[InlineData(false)]
|
330
|
+
public async Task AllPackageDependencies_DoNotIncludeUpdateOnlyPackages(bool useExistingSdks)
|
317
331
|
{
|
318
332
|
using var temp = new TemporaryDirectory();
|
319
333
|
MockNuGetPackage[] testPackages =
|
@@ -335,12 +349,21 @@ public class MSBuildHelperTests : TestBase
|
|
335
349
|
new Dependency("Package.B", "2.0.0", DependencyType.Unknown, TargetFrameworks: ["net8.0"]),
|
336
350
|
new Dependency("Package.C", "3.0.0", DependencyType.Unknown, IsUpdate: true)
|
337
351
|
};
|
338
|
-
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
|
352
|
+
var actualDependencies = await MSBuildHelper.GetAllPackageDependenciesAsync(
|
353
|
+
temp.DirectoryPath,
|
354
|
+
temp.DirectoryPath,
|
355
|
+
"net8.0",
|
356
|
+
packages,
|
357
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
358
|
+
new TestLogger()
|
359
|
+
);
|
339
360
|
AssertEx.Equal(expectedDependencies, actualDependencies);
|
340
361
|
}
|
341
362
|
|
342
|
-
[
|
343
|
-
|
363
|
+
[Theory]
|
364
|
+
[InlineData(true)]
|
365
|
+
[InlineData(false)]
|
366
|
+
public async Task GetAllPackageDependencies_NugetConfigInvalid_DoesNotThrow(bool useExistingSdks)
|
344
367
|
{
|
345
368
|
using var temp = new TemporaryDirectory();
|
346
369
|
|
@@ -362,12 +385,15 @@ public class MSBuildHelperTests : TestBase
|
|
362
385
|
temp.DirectoryPath,
|
363
386
|
"net8.0",
|
364
387
|
[new Dependency("Some.Package", "4.5.11", DependencyType.Unknown)],
|
388
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
365
389
|
new TestLogger()
|
366
390
|
);
|
367
391
|
}
|
368
392
|
|
369
|
-
[
|
370
|
-
|
393
|
+
[Theory]
|
394
|
+
[InlineData(true)]
|
395
|
+
[InlineData(false)]
|
396
|
+
public async Task LocalPackageSourcesAreHonored(bool useExistingSdks)
|
371
397
|
{
|
372
398
|
using var temp = new TemporaryDirectory();
|
373
399
|
|
@@ -402,14 +428,17 @@ public class MSBuildHelperTests : TestBase
|
|
402
428
|
temp.DirectoryPath,
|
403
429
|
"net8.0",
|
404
430
|
[new Dependency("Package.A", "1.0.0", DependencyType.Unknown)],
|
431
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
405
432
|
new TestLogger()
|
406
433
|
);
|
407
434
|
|
408
435
|
AssertEx.Equal(expectedDependencies, actualDependencies);
|
409
436
|
}
|
410
437
|
|
411
|
-
[
|
412
|
-
|
438
|
+
[Theory]
|
439
|
+
[InlineData(true)]
|
440
|
+
[InlineData(false)]
|
441
|
+
public async Task DependencyConflictsCanBeResolvedWithBruteForce(bool useExistingSdks)
|
413
442
|
{
|
414
443
|
var repoRoot = Directory.CreateTempSubdirectory($"test_{nameof(DependencyConflictsCanBeResolvedWithBruteForce)}_");
|
415
444
|
MockNuGetPackage[] testPackages =
|
@@ -450,7 +479,14 @@ public class MSBuildHelperTests : TestBase
|
|
450
479
|
{
|
451
480
|
new Dependency("Some.Other.Package", "1.2.0", DependencyType.PackageReference),
|
452
481
|
};
|
453
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflictsWithBruteForce(
|
482
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflictsWithBruteForce(
|
483
|
+
repoRoot.FullName,
|
484
|
+
projectPath,
|
485
|
+
"net8.0",
|
486
|
+
dependencies,
|
487
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
488
|
+
new TestLogger()
|
489
|
+
);
|
454
490
|
Assert.NotNull(resolvedDependencies);
|
455
491
|
Assert.Equal(2, resolvedDependencies.Length);
|
456
492
|
Assert.Equal("Some.Package", resolvedDependencies[0].Name);
|
@@ -505,8 +541,10 @@ public class MSBuildHelperTests : TestBase
|
|
505
541
|
#region
|
506
542
|
// Updating root package
|
507
543
|
// CS-Script Code to 2.0.0 requires its dependency Microsoft.CodeAnalysis.CSharp.Scripting to be 3.6.0 and its transitive dependency Microsoft.CodeAnalysis.Common to be 3.6.0
|
508
|
-
[
|
509
|
-
|
544
|
+
[Theory]
|
545
|
+
[InlineData(true)]
|
546
|
+
[InlineData(false)]
|
547
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingTopLevelPackage(bool useExistingSdks)
|
510
548
|
{
|
511
549
|
using var tempDirectory = new TemporaryDirectory();
|
512
550
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -535,7 +573,15 @@ public class MSBuildHelperTests : TestBase
|
|
535
573
|
new Dependency("CS-Script.Core", "2.0.0", DependencyType.PackageReference),
|
536
574
|
};
|
537
575
|
|
538
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
576
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
577
|
+
tempDirectory.DirectoryPath,
|
578
|
+
projectPath,
|
579
|
+
"net8.0",
|
580
|
+
dependencies,
|
581
|
+
update,
|
582
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
583
|
+
new TestLogger()
|
584
|
+
);
|
539
585
|
Assert.NotNull(resolvedDependencies);
|
540
586
|
Assert.Equal(3, resolvedDependencies.Length);
|
541
587
|
Assert.Equal("CS-Script.Core", resolvedDependencies[0].Name);
|
@@ -547,8 +593,10 @@ public class MSBuildHelperTests : TestBase
|
|
547
593
|
}
|
548
594
|
|
549
595
|
// Updating a dependency (Microsoft.Bcl.AsyncInterfaces) of the root package (Azure.Core) will require the root package to also update, but since the dependency is not in the existing list, we do not include it
|
550
|
-
[
|
551
|
-
|
596
|
+
[Theory]
|
597
|
+
[InlineData(true)]
|
598
|
+
[InlineData(false)]
|
599
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingNonExistingDependency(bool useExistingSdks)
|
552
600
|
{
|
553
601
|
using var tempDirectory = new TemporaryDirectory();
|
554
602
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -572,7 +620,15 @@ public class MSBuildHelperTests : TestBase
|
|
572
620
|
new Dependency("Microsoft.Bcl.AsyncInterfaces", "1.1.1", DependencyType.Unknown)
|
573
621
|
};
|
574
622
|
|
575
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
623
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
624
|
+
tempDirectory.DirectoryPath,
|
625
|
+
projectPath,
|
626
|
+
"net8.0",
|
627
|
+
dependencies,
|
628
|
+
update,
|
629
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
630
|
+
new TestLogger()
|
631
|
+
);
|
576
632
|
Assert.NotNull(resolvedDependencies);
|
577
633
|
Assert.Single(resolvedDependencies);
|
578
634
|
Assert.Equal("Azure.Core", resolvedDependencies[0].Name);
|
@@ -582,8 +638,10 @@ public class MSBuildHelperTests : TestBase
|
|
582
638
|
// Adding a reference
|
583
639
|
// Newtonsoft.Json needs to update to 13.0.1. Although Newtonsoft.Json.Bson can use the original version of 12.0.1, for security vulnerabilities and
|
584
640
|
// because there is no later version of Newtonsoft.Json.Bson 1.0.2, Newtonsoft.Json would be added to the existing list to prevent resolution
|
585
|
-
[
|
586
|
-
|
641
|
+
[Theory]
|
642
|
+
[InlineData(true)]
|
643
|
+
[InlineData(false)]
|
644
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingNonExistentDependencyAndKeepingReference(bool useExistingSdks)
|
587
645
|
{
|
588
646
|
using var tempDirectory = new TemporaryDirectory();
|
589
647
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -607,7 +665,15 @@ public class MSBuildHelperTests : TestBase
|
|
607
665
|
new Dependency("Newtonsoft.Json", "13.0.1", DependencyType.Unknown)
|
608
666
|
};
|
609
667
|
|
610
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
668
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
669
|
+
tempDirectory.DirectoryPath,
|
670
|
+
projectPath,
|
671
|
+
"net8.0",
|
672
|
+
dependencies,
|
673
|
+
update,
|
674
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
675
|
+
new TestLogger()
|
676
|
+
);
|
611
677
|
Assert.NotNull(resolvedDependencies);
|
612
678
|
Assert.Equal(2, resolvedDependencies.Length);
|
613
679
|
Assert.Equal("Newtonsoft.Json.Bson", resolvedDependencies[0].Name);
|
@@ -620,8 +686,10 @@ public class MSBuildHelperTests : TestBase
|
|
620
686
|
// Root package (Microsoft.CodeAnalysis.Compilers) and its dependencies (Microsoft.CodeAnalysis.CSharp), (Microsoft.CodeAnalysis.VisualBasic) are all 4.9.2
|
621
687
|
// These packages all require the transitive dependency of the root package (Microsoft.CodeAnalysis.Common) to be 4.9.2, but it's not in the existing list
|
622
688
|
// If Microsoft.CodeAnalysis.Common is updated to 4.10.0, everything else updates and Microsoft.CoseAnalysis.Common is not kept in the existing list
|
623
|
-
[
|
624
|
-
|
689
|
+
[Theory]
|
690
|
+
[InlineData(true)]
|
691
|
+
[InlineData(false)]
|
692
|
+
public async Task DependencyConflictsCanBeResolvedNewTransitiveDependencyNotExisting(bool useExistingSdks)
|
625
693
|
{
|
626
694
|
using var tempDirectory = new TemporaryDirectory();
|
627
695
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -649,7 +717,15 @@ public class MSBuildHelperTests : TestBase
|
|
649
717
|
new Dependency("Microsoft.CodeAnalysis.Common", "4.10.0", DependencyType.PackageReference)
|
650
718
|
};
|
651
719
|
|
652
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
720
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
721
|
+
tempDirectory.DirectoryPath,
|
722
|
+
projectPath,
|
723
|
+
"net8.0",
|
724
|
+
dependencies,
|
725
|
+
update,
|
726
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
727
|
+
new TestLogger()
|
728
|
+
);
|
653
729
|
Assert.NotNull(resolvedDependencies);
|
654
730
|
Assert.Equal(3, resolvedDependencies.Length);
|
655
731
|
Assert.Equal("Microsoft.CodeAnalysis.Compilers", resolvedDependencies[0].Name);
|
@@ -662,8 +738,10 @@ public class MSBuildHelperTests : TestBase
|
|
662
738
|
|
663
739
|
// Updating referenced dependency
|
664
740
|
// The same as previous test, but the transitive dependency (Microsoft.CodeAnalysis.Common) is in the existing list
|
665
|
-
[
|
666
|
-
|
741
|
+
[Theory]
|
742
|
+
[InlineData(true)]
|
743
|
+
[InlineData(false)]
|
744
|
+
public async Task DependencyConflictsCanBeResolvedNewSingleTransitiveDependencyExisting(bool useExistingSdks)
|
667
745
|
{
|
668
746
|
using var tempDirectory = new TemporaryDirectory();
|
669
747
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -693,7 +771,15 @@ public class MSBuildHelperTests : TestBase
|
|
693
771
|
new Dependency("Microsoft.CodeAnalysis.Common", "4.10.0", DependencyType.PackageReference)
|
694
772
|
};
|
695
773
|
|
696
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
774
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
775
|
+
tempDirectory.DirectoryPath,
|
776
|
+
projectPath,
|
777
|
+
"net8.0",
|
778
|
+
dependencies,
|
779
|
+
update,
|
780
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
781
|
+
new TestLogger()
|
782
|
+
);
|
697
783
|
Assert.NotNull(resolvedDependencies);
|
698
784
|
Assert.Equal(4, resolvedDependencies.Length);
|
699
785
|
Assert.Equal("Microsoft.CodeAnalysis.Compilers", resolvedDependencies[0].Name);
|
@@ -709,8 +795,10 @@ public class MSBuildHelperTests : TestBase
|
|
709
795
|
// A combination of the third and fourth test, to measure efficiency of updating separate families
|
710
796
|
// Keeping a dependency that was not included in the original list (Newtonsoft.Json)
|
711
797
|
// Not keeping a dependency that was not included in the original list (Microsoft.CodeAnalysis.Common)
|
712
|
-
[
|
713
|
-
|
798
|
+
[Theory]
|
799
|
+
[InlineData(true)]
|
800
|
+
[InlineData(false)]
|
801
|
+
public async Task DependencyConflictsCanBeResolvedNewSelectiveAdditionPackages(bool useExistingSdks)
|
714
802
|
{
|
715
803
|
using var tempDirectory = new TemporaryDirectory();
|
716
804
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -741,7 +829,15 @@ public class MSBuildHelperTests : TestBase
|
|
741
829
|
new Dependency("Newtonsoft.Json", "13.0.1", DependencyType.Unknown)
|
742
830
|
};
|
743
831
|
|
744
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
832
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
833
|
+
tempDirectory.DirectoryPath,
|
834
|
+
projectPath,
|
835
|
+
"net8.0",
|
836
|
+
dependencies,
|
837
|
+
update,
|
838
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
839
|
+
new TestLogger()
|
840
|
+
);
|
745
841
|
Assert.NotNull(resolvedDependencies);
|
746
842
|
Assert.Equal(5, resolvedDependencies.Length);
|
747
843
|
Assert.Equal("Microsoft.CodeAnalysis.Compilers", resolvedDependencies[0].Name);
|
@@ -761,8 +857,10 @@ public class MSBuildHelperTests : TestBase
|
|
761
857
|
// First family: Buildalyzer 7.0.1 requires Microsoft.CodeAnalysis.CSharp to be >= 4.0.0 and Microsoft.CodeAnalysis.Common to be 4.0.0 (@ 6.0.4, Microsoft.CodeAnalysis.Common isn't a dependency of buildalyzer)
|
762
858
|
// Second family: Microsoft.CodeAnalysis.CSharp.Scripting 4.0.0 requires Microsoft.CodeAnalysis.CSharp 4.0.0 and Microsoft.CodeAnalysis.Common to be 4.0.0 (Specific version)
|
763
859
|
// Updating Buildalyzer to 7.0.1 will update its transitive dependency (Microsoft.CodeAnalysis.Common) and then its transitive dependency's "family"
|
764
|
-
[
|
765
|
-
|
860
|
+
[Theory]
|
861
|
+
[InlineData(true)]
|
862
|
+
[InlineData(false)]
|
863
|
+
public async Task DependencyConflictsCanBeResolvedNewSharingDependency(bool useExistingSdks)
|
766
864
|
{
|
767
865
|
using var tempDirectory = new TemporaryDirectory();
|
768
866
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -792,7 +890,15 @@ public class MSBuildHelperTests : TestBase
|
|
792
890
|
new Dependency("Buildalyzer", "7.0.1", DependencyType.PackageReference),
|
793
891
|
};
|
794
892
|
|
795
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
893
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
894
|
+
tempDirectory.DirectoryPath,
|
895
|
+
projectPath,
|
896
|
+
"net8.0",
|
897
|
+
dependencies,
|
898
|
+
update,
|
899
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
900
|
+
new TestLogger()
|
901
|
+
);
|
796
902
|
Assert.NotNull(resolvedDependencies);
|
797
903
|
Assert.Equal(4, resolvedDependencies.Length);
|
798
904
|
Assert.Equal("Buildalyzer", resolvedDependencies[0].Name);
|
@@ -808,8 +914,10 @@ public class MSBuildHelperTests : TestBase
|
|
808
914
|
// Updating two families at once to test efficiency
|
809
915
|
// First family: Direct dependency (Microsoft.CodeAnalysis.Common) needs to be updated, which will then need to update in the existing list its dependency (System.Collections.Immutable) and "parent" (Microsoft.CodeAnalysis.Csharp.Scripting)
|
810
916
|
// Second family: Updating the root package (Azure.Core) in the existing list will also need to update its dependency (Microsoft.Bcl.AsyncInterfaces)
|
811
|
-
[
|
812
|
-
|
917
|
+
[Theory]
|
918
|
+
[InlineData(true)]
|
919
|
+
[InlineData(false)]
|
920
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingEntireFamily(bool useExistingSdks)
|
813
921
|
{
|
814
922
|
using var tempDirectory = new TemporaryDirectory();
|
815
923
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -841,7 +949,15 @@ public class MSBuildHelperTests : TestBase
|
|
841
949
|
new Dependency("Azure.Core", "1.22.0", DependencyType.PackageReference)
|
842
950
|
};
|
843
951
|
|
844
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
952
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
953
|
+
tempDirectory.DirectoryPath,
|
954
|
+
projectPath,
|
955
|
+
"net8.0",
|
956
|
+
dependencies,
|
957
|
+
update,
|
958
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
959
|
+
new TestLogger()
|
960
|
+
);
|
845
961
|
Assert.NotNull(resolvedDependencies);
|
846
962
|
Assert.Equal(4, resolvedDependencies.Length);
|
847
963
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -855,8 +971,10 @@ public class MSBuildHelperTests : TestBase
|
|
855
971
|
}
|
856
972
|
|
857
973
|
// Similar to the last test, except Microsoft.CodeAnalysis.Common is in the existing list
|
858
|
-
[
|
859
|
-
|
974
|
+
[Theory]
|
975
|
+
[InlineData(true)]
|
976
|
+
[InlineData(false)]
|
977
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingTopLevelAndDependency(bool useExistingSdks)
|
860
978
|
{
|
861
979
|
using var tempDirectory = new TemporaryDirectory();
|
862
980
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -890,7 +1008,15 @@ public class MSBuildHelperTests : TestBase
|
|
890
1008
|
new Dependency("Azure.Core", "1.22.0", DependencyType.PackageReference)
|
891
1009
|
};
|
892
1010
|
|
893
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1011
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1012
|
+
tempDirectory.DirectoryPath,
|
1013
|
+
projectPath,
|
1014
|
+
"net8.0",
|
1015
|
+
dependencies,
|
1016
|
+
update,
|
1017
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1018
|
+
new TestLogger()
|
1019
|
+
);
|
894
1020
|
Assert.NotNull(resolvedDependencies);
|
895
1021
|
Assert.Equal(5, resolvedDependencies.Length);
|
896
1022
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -908,8 +1034,10 @@ public class MSBuildHelperTests : TestBase
|
|
908
1034
|
// Out of scope test: AutoMapper.Extensions.Microsoft.DependencyInjection's versions are not yet compatible
|
909
1035
|
// To update root package (AutoMapper.Collection) to 10.0.0, its dependency (AutoMapper) needs to update to 13.0.0.
|
910
1036
|
// However, there is no higher version of AutoMapper's other "parent" (AutoMapper.Extensions.Microsoft.DependencyInjection) that is compatible with the new version
|
911
|
-
[
|
912
|
-
|
1037
|
+
[Theory]
|
1038
|
+
[InlineData(true)]
|
1039
|
+
[InlineData(false)]
|
1040
|
+
public async Task DependencyConflictsCanBeResolvedNewOutOfScope(bool useExistingSdks)
|
913
1041
|
{
|
914
1042
|
using var tempDirectory = new TemporaryDirectory();
|
915
1043
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -937,7 +1065,15 @@ public class MSBuildHelperTests : TestBase
|
|
937
1065
|
new Dependency("AutoMapper.Collection", "10.0.0", DependencyType.PackageReference)
|
938
1066
|
};
|
939
1067
|
|
940
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1068
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1069
|
+
tempDirectory.DirectoryPath,
|
1070
|
+
projectPath,
|
1071
|
+
"net8.0",
|
1072
|
+
dependencies,
|
1073
|
+
update,
|
1074
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1075
|
+
new TestLogger()
|
1076
|
+
);
|
941
1077
|
Assert.NotNull(resolvedDependencies);
|
942
1078
|
Assert.Equal(3, resolvedDependencies.Length);
|
943
1079
|
Assert.Equal("AutoMapper.Extensions.Microsoft.DependencyInjection", resolvedDependencies[0].Name);
|
@@ -949,8 +1085,10 @@ public class MSBuildHelperTests : TestBase
|
|
949
1085
|
}
|
950
1086
|
|
951
1087
|
// Two dependencies (Microsoft.Extensions.Caching.Memory), (Microsoft.EntityFrameworkCore.Analyzers) used by the same parent (Microsoft.EntityFrameworkCore), updating one of the dependencies
|
952
|
-
[
|
953
|
-
|
1088
|
+
[Theory]
|
1089
|
+
[InlineData(true)]
|
1090
|
+
[InlineData(false)]
|
1091
|
+
public async Task DependencyConflictsCanBeResolvedNewTwoDependenciesShareSameParent(bool useExistingSdks)
|
954
1092
|
{
|
955
1093
|
using var tempDirectory = new TemporaryDirectory();
|
956
1094
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -976,7 +1114,15 @@ public class MSBuildHelperTests : TestBase
|
|
976
1114
|
new Dependency("Microsoft.Extensions.Caching.Memory", "8.0.0", DependencyType.PackageReference)
|
977
1115
|
};
|
978
1116
|
|
979
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1117
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1118
|
+
tempDirectory.DirectoryPath,
|
1119
|
+
projectPath,
|
1120
|
+
"net8.0",
|
1121
|
+
dependencies,
|
1122
|
+
update,
|
1123
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1124
|
+
new TestLogger()
|
1125
|
+
);
|
980
1126
|
Assert.NotNull(resolvedDependencies);
|
981
1127
|
Assert.Equal(2, resolvedDependencies.Length);
|
982
1128
|
Assert.Equal("Microsoft.EntityFrameworkCore", resolvedDependencies[0].Name);
|
@@ -987,8 +1133,10 @@ public class MSBuildHelperTests : TestBase
|
|
987
1133
|
|
988
1134
|
// Updating referenced package
|
989
1135
|
// 4 dependency chain to be updated. Since the package to be updated is in the existing list, do not update its parents since we want to change as little as possible
|
990
|
-
[
|
991
|
-
|
1136
|
+
[Theory]
|
1137
|
+
[InlineData(true)]
|
1138
|
+
[InlineData(false)]
|
1139
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourExisting(bool useExistingSdks)
|
992
1140
|
{
|
993
1141
|
using var tempDirectory = new TemporaryDirectory();
|
994
1142
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1018,7 +1166,15 @@ public class MSBuildHelperTests : TestBase
|
|
1018
1166
|
new Dependency("Microsoft.EntityFrameworkCore.Analyzers", "8.0.0", DependencyType.PackageReference)
|
1019
1167
|
};
|
1020
1168
|
|
1021
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1169
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1170
|
+
tempDirectory.DirectoryPath,
|
1171
|
+
projectPath,
|
1172
|
+
"net8.0",
|
1173
|
+
dependencies,
|
1174
|
+
update,
|
1175
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1176
|
+
new TestLogger()
|
1177
|
+
);
|
1022
1178
|
Assert.NotNull(resolvedDependencies);
|
1023
1179
|
Assert.Equal(4, resolvedDependencies.Length);
|
1024
1180
|
Assert.Equal("Microsoft.EntityFrameworkCore.Design", resolvedDependencies[0].Name);
|
@@ -1033,8 +1189,10 @@ public class MSBuildHelperTests : TestBase
|
|
1033
1189
|
|
1034
1190
|
// Updating unreferenced package
|
1035
1191
|
// 4 dependency chain to be updated, dependency to be updated is not in the existing list, so its family will all be updated
|
1036
|
-
[
|
1037
|
-
|
1192
|
+
[Theory]
|
1193
|
+
[InlineData(true)]
|
1194
|
+
[InlineData(false)]
|
1195
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourNotInExisting(bool useExistingSdks)
|
1038
1196
|
{
|
1039
1197
|
using var tempDirectory = new TemporaryDirectory();
|
1040
1198
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1062,7 +1220,15 @@ public class MSBuildHelperTests : TestBase
|
|
1062
1220
|
new Dependency("Microsoft.EntityFrameworkCore.Analyzers", "8.0.0", DependencyType.PackageReference)
|
1063
1221
|
};
|
1064
1222
|
|
1065
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1223
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1224
|
+
tempDirectory.DirectoryPath,
|
1225
|
+
projectPath,
|
1226
|
+
"net8.0",
|
1227
|
+
dependencies,
|
1228
|
+
update,
|
1229
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1230
|
+
new TestLogger()
|
1231
|
+
);
|
1066
1232
|
Assert.NotNull(resolvedDependencies);
|
1067
1233
|
Assert.Equal(3, resolvedDependencies.Length);
|
1068
1234
|
Assert.Equal("Microsoft.EntityFrameworkCore.Design", resolvedDependencies[0].Name);
|
@@ -1075,8 +1241,10 @@ public class MSBuildHelperTests : TestBase
|
|
1075
1241
|
|
1076
1242
|
// Updating a referenced transitive dependency
|
1077
1243
|
// Updating a transtitive dependency (System.Collections.Immutable) to 8.0.0, which will update its "parent" (Microsoft.CodeAnalysis.CSharp) and its "grandparent" (Microsoft.CodeAnalysis.CSharp.Workspaces) to update
|
1078
|
-
[
|
1079
|
-
|
1244
|
+
[Theory]
|
1245
|
+
[InlineData(true)]
|
1246
|
+
[InlineData(false)]
|
1247
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourSpecificExisting(bool useExistingSdks)
|
1080
1248
|
{
|
1081
1249
|
using var tempDirectory = new TemporaryDirectory();
|
1082
1250
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1106,7 +1274,15 @@ public class MSBuildHelperTests : TestBase
|
|
1106
1274
|
new Dependency("System.Collections.Immutable", "8.0.0", DependencyType.PackageReference),
|
1107
1275
|
};
|
1108
1276
|
|
1109
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1277
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1278
|
+
tempDirectory.DirectoryPath,
|
1279
|
+
projectPath,
|
1280
|
+
"net8.0",
|
1281
|
+
dependencies,
|
1282
|
+
update,
|
1283
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1284
|
+
new TestLogger()
|
1285
|
+
);
|
1110
1286
|
Assert.NotNull(resolvedDependencies);
|
1111
1287
|
Assert.Equal(4, resolvedDependencies.Length);
|
1112
1288
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -1120,8 +1296,10 @@ public class MSBuildHelperTests : TestBase
|
|
1120
1296
|
}
|
1121
1297
|
|
1122
1298
|
// Similar to the last test, with the "grandchild" (System.Collections.Immutable) not in the existing list
|
1123
|
-
[
|
1124
|
-
|
1299
|
+
[Theory]
|
1300
|
+
[InlineData(true)]
|
1301
|
+
[InlineData(false)]
|
1302
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourSpecificNotInExisting(bool useExistingSdks)
|
1125
1303
|
{
|
1126
1304
|
using var tempDirectory = new TemporaryDirectory();
|
1127
1305
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1150,7 +1328,15 @@ public class MSBuildHelperTests : TestBase
|
|
1150
1328
|
new Dependency("System.Collections.Immutable", "8.0.0", DependencyType.PackageReference),
|
1151
1329
|
};
|
1152
1330
|
|
1153
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1331
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1332
|
+
tempDirectory.DirectoryPath,
|
1333
|
+
projectPath,
|
1334
|
+
"net8.0",
|
1335
|
+
dependencies,
|
1336
|
+
update,
|
1337
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1338
|
+
new TestLogger()
|
1339
|
+
);
|
1154
1340
|
Assert.NotNull(resolvedDependencies);
|
1155
1341
|
Assert.Equal(3, resolvedDependencies.Length);
|
1156
1342
|
Assert.Equal("Microsoft.CodeAnalysis.CSharp.Workspaces", resolvedDependencies[0].Name);
|
@@ -26,6 +26,7 @@ module Dependabot
|
|
26
26
|
|
27
27
|
sig { override.returns(T::Array[DependencyFile]) }
|
28
28
|
def fetch_files
|
29
|
+
NativeHelpers.install_dotnet_sdks
|
29
30
|
discovery_json_reader = DiscoveryJsonReader.run_discovery_in_directory(
|
30
31
|
repo_contents_path: T.must(repo_contents_path),
|
31
32
|
directory: directory,
|