dependabot-nuget 0.290.0 → 0.292.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/.editorconfig +1 -0
- data/helpers/lib/NuGetUpdater/Directory.Build.props +1 -0
- data/helpers/lib/NuGetUpdater/Directory.Packages.props +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/CloneCommand.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +15 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/UpdateCommand.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +2 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +87 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +14 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/DependencyFinder.cs +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/RequirementConverter.cs +19 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/BadRequirementException.cs +9 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Clone/CloneWorker.cs +39 -8
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +111 -17
- 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 +2 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +31 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +1 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/BadRequirement.cs +10 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/CommitOptions.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/DependencyFileNotFound.cs +3 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobErrorBase.cs +1 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/JobRepoNotFound.cs +1 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PrivateSourceAuthenticationFailure.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/UnknownError.cs +6 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/UpdateNotPossible.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +9 -3
- 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/Updater/WebApplicationTargetsConditionPatcher.cs +12 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/DependencyConflictResolver.cs +0 -7
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +48 -17
- 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/Utilities/ProjectHelper.cs +4 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Clone/CloneWorkerTests.cs +60 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +10 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +56 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +41 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/ExpectedDiscoveryResults.cs +2 -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/Run/RunWorkerTests.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +76 -40
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +20 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.LockFile.cs +251 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs +6 -6
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +63 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +277 -73
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/ProjectHelperTests.cs +65 -0
- data/helpers/lib/NuGetUpdater/global.json +1 -1
- data/lib/dependabot/nuget/file_fetcher.rb +1 -0
- data/lib/dependabot/nuget/file_parser.rb +90 -0
- data/lib/dependabot/nuget/language.rb +98 -0
- data/lib/dependabot/nuget/native_helpers.rb +25 -0
- data/lib/dependabot/nuget/package_manager.rb +51 -0
- metadata +12 -6
@@ -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);
|
@@ -758,28 +854,45 @@ public class MSBuildHelperTests : TestBase
|
|
758
854
|
|
759
855
|
// Two top level packages (Buildalyzer), (Microsoft.CodeAnalysis.CSharp.Scripting) that share a dependency (Microsoft.CodeAnalysis.Csharp)
|
760
856
|
// Updating ONE of the top level packages, which updates the dependencies and their other "parents"
|
761
|
-
// First family: Buildalyzer 7.0.1 requires Microsoft.CodeAnalysis.CSharp to be
|
762
|
-
// Second family: Microsoft.CodeAnalysis.CSharp.Scripting 4.0.
|
857
|
+
// First family: Buildalyzer 7.0.1 requires Microsoft.CodeAnalysis.CSharp to be = 4.0.1 and Microsoft.CodeAnalysis.Common to be 4.0.1 (@ 6.0.4, Microsoft.CodeAnalysis.Common isn't a dependency of buildalyzer)
|
858
|
+
// Second family: Microsoft.CodeAnalysis.CSharp.Scripting 4.0.1 requires Microsoft.CodeAnalysis.CSharp 4.0.1 and Microsoft.CodeAnalysis.Common to be 4.0.1 (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
860
|
[Fact]
|
765
861
|
public async Task DependencyConflictsCanBeResolvedNewSharingDependency()
|
766
862
|
{
|
863
|
+
// arrange
|
767
864
|
using var tempDirectory = new TemporaryDirectory();
|
768
865
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
769
866
|
await File.WriteAllTextAsync(projectPath, """
|
770
867
|
<Project Sdk="Microsoft.NET.Sdk">
|
771
|
-
|
868
|
+
<PropertyGroup>
|
772
869
|
<TargetFramework>net8.0</TargetFramework>
|
773
|
-
|
774
|
-
|
870
|
+
</PropertyGroup>
|
871
|
+
<ItemGroup>
|
775
872
|
<PackageReference Include="Buildalyzer" Version="6.0.4" />
|
776
873
|
<PackageReference Include="Microsoft.CodeAnalysis.Csharp.Scripting" Version="3.10.0" />
|
777
874
|
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="3.10.0" />
|
778
875
|
<PackageReference Include="Microsoft.CodeAnalysis.Common" Version="3.10.0" />
|
779
|
-
|
876
|
+
</ItemGroup>
|
780
877
|
</Project>
|
781
878
|
""");
|
782
879
|
|
880
|
+
var testPackages = new MockNuGetPackage[]
|
881
|
+
{
|
882
|
+
MockNuGetPackage.CreateSimplePackage("Buildalyzer", "6.0.4", "net8.0", [(null, [("Microsoft.CodeAnalysis.CSharp", "[3.10.0]")])]),
|
883
|
+
MockNuGetPackage.CreateSimplePackage("Buildalyzer", "7.0.1", "net8.0", [(null, [("Microsoft.CodeAnalysis.CSharp", "[4.0.1]")])]),
|
884
|
+
|
885
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp.Scripting", "3.10.0", "net8.0", [(null, [("Microsoft.CodeAnalysis.CSharp", "[3.10.0]")])]),
|
886
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp.Scripting", "4.0.1", "net8.0", [(null, [("Microsoft.CodeAnalysis.CSharp", "[4.0.1]")])]),
|
887
|
+
|
888
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp", "3.10.0", "net8.0", [(null, [("Microsoft.CodeAnalysis.Common", "[3.10.0]")])]),
|
889
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp", "4.0.1", "net8.0", [(null, [("Microsoft.CodeAnalysis.Common", "[4.0.1]")])]),
|
890
|
+
|
891
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.Common", "3.10.0", "net8.0"),
|
892
|
+
MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.Common", "4.0.1", "net8.0"),
|
893
|
+
};
|
894
|
+
await UpdateWorkerTestBase.MockNuGetPackagesInDirectory(testPackages, tempDirectory.DirectoryPath);
|
895
|
+
|
783
896
|
var dependencies = new[]
|
784
897
|
{
|
785
898
|
new Dependency("Buildalyzer", "6.0.4", DependencyType.PackageReference),
|
@@ -792,24 +905,37 @@ public class MSBuildHelperTests : TestBase
|
|
792
905
|
new Dependency("Buildalyzer", "7.0.1", DependencyType.PackageReference),
|
793
906
|
};
|
794
907
|
|
795
|
-
|
908
|
+
// act
|
909
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
910
|
+
tempDirectory.DirectoryPath,
|
911
|
+
projectPath,
|
912
|
+
"net8.0",
|
913
|
+
dependencies,
|
914
|
+
update,
|
915
|
+
new ExperimentsManager(),
|
916
|
+
new TestLogger()
|
917
|
+
);
|
918
|
+
|
919
|
+
// assert
|
920
|
+
var expectedDependencies = new[]
|
921
|
+
{
|
922
|
+
"Buildalyzer/7.0.1",
|
923
|
+
"Microsoft.CodeAnalysis.CSharp.Scripting/4.0.1",
|
924
|
+
"Microsoft.CodeAnalysis.CSharp/4.0.1",
|
925
|
+
"Microsoft.CodeAnalysis.Common/4.0.1"
|
926
|
+
};
|
796
927
|
Assert.NotNull(resolvedDependencies);
|
797
|
-
|
798
|
-
|
799
|
-
Assert.Equal("7.0.1", resolvedDependencies[0].Version);
|
800
|
-
Assert.Equal("Microsoft.CodeAnalysis.CSharp.Scripting", resolvedDependencies[1].Name);
|
801
|
-
Assert.Equal("4.0.0", resolvedDependencies[1].Version);
|
802
|
-
Assert.Equal("Microsoft.CodeAnalysis.CSharp", resolvedDependencies[2].Name);
|
803
|
-
Assert.Equal("4.0.0", resolvedDependencies[2].Version);
|
804
|
-
Assert.Equal("Microsoft.CodeAnalysis.Common", resolvedDependencies[3].Name);
|
805
|
-
Assert.Equal("4.0.0", resolvedDependencies[3].Version);
|
928
|
+
var actualDependencies = resolvedDependencies.Select(d => $"{d.Name}/{d.Version}").ToArray();
|
929
|
+
AssertEx.Equal(expectedDependencies, actualDependencies);
|
806
930
|
}
|
807
931
|
|
808
932
|
// Updating two families at once to test efficiency
|
809
933
|
// 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
934
|
// Second family: Updating the root package (Azure.Core) in the existing list will also need to update its dependency (Microsoft.Bcl.AsyncInterfaces)
|
811
|
-
[
|
812
|
-
|
935
|
+
[Theory]
|
936
|
+
[InlineData(true)]
|
937
|
+
[InlineData(false)]
|
938
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingEntireFamily(bool useExistingSdks)
|
813
939
|
{
|
814
940
|
using var tempDirectory = new TemporaryDirectory();
|
815
941
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -841,7 +967,15 @@ public class MSBuildHelperTests : TestBase
|
|
841
967
|
new Dependency("Azure.Core", "1.22.0", DependencyType.PackageReference)
|
842
968
|
};
|
843
969
|
|
844
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
970
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
971
|
+
tempDirectory.DirectoryPath,
|
972
|
+
projectPath,
|
973
|
+
"net8.0",
|
974
|
+
dependencies,
|
975
|
+
update,
|
976
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
977
|
+
new TestLogger()
|
978
|
+
);
|
845
979
|
Assert.NotNull(resolvedDependencies);
|
846
980
|
Assert.Equal(4, resolvedDependencies.Length);
|
847
981
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -855,8 +989,10 @@ public class MSBuildHelperTests : TestBase
|
|
855
989
|
}
|
856
990
|
|
857
991
|
// Similar to the last test, except Microsoft.CodeAnalysis.Common is in the existing list
|
858
|
-
[
|
859
|
-
|
992
|
+
[Theory]
|
993
|
+
[InlineData(true)]
|
994
|
+
[InlineData(false)]
|
995
|
+
public async Task DependencyConflictsCanBeResolvedNewUpdatingTopLevelAndDependency(bool useExistingSdks)
|
860
996
|
{
|
861
997
|
using var tempDirectory = new TemporaryDirectory();
|
862
998
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -890,7 +1026,15 @@ public class MSBuildHelperTests : TestBase
|
|
890
1026
|
new Dependency("Azure.Core", "1.22.0", DependencyType.PackageReference)
|
891
1027
|
};
|
892
1028
|
|
893
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1029
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1030
|
+
tempDirectory.DirectoryPath,
|
1031
|
+
projectPath,
|
1032
|
+
"net8.0",
|
1033
|
+
dependencies,
|
1034
|
+
update,
|
1035
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1036
|
+
new TestLogger()
|
1037
|
+
);
|
894
1038
|
Assert.NotNull(resolvedDependencies);
|
895
1039
|
Assert.Equal(5, resolvedDependencies.Length);
|
896
1040
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -908,8 +1052,10 @@ public class MSBuildHelperTests : TestBase
|
|
908
1052
|
// Out of scope test: AutoMapper.Extensions.Microsoft.DependencyInjection's versions are not yet compatible
|
909
1053
|
// To update root package (AutoMapper.Collection) to 10.0.0, its dependency (AutoMapper) needs to update to 13.0.0.
|
910
1054
|
// However, there is no higher version of AutoMapper's other "parent" (AutoMapper.Extensions.Microsoft.DependencyInjection) that is compatible with the new version
|
911
|
-
[
|
912
|
-
|
1055
|
+
[Theory]
|
1056
|
+
[InlineData(true)]
|
1057
|
+
[InlineData(false)]
|
1058
|
+
public async Task DependencyConflictsCanBeResolvedNewOutOfScope(bool useExistingSdks)
|
913
1059
|
{
|
914
1060
|
using var tempDirectory = new TemporaryDirectory();
|
915
1061
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -937,7 +1083,15 @@ public class MSBuildHelperTests : TestBase
|
|
937
1083
|
new Dependency("AutoMapper.Collection", "10.0.0", DependencyType.PackageReference)
|
938
1084
|
};
|
939
1085
|
|
940
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1086
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1087
|
+
tempDirectory.DirectoryPath,
|
1088
|
+
projectPath,
|
1089
|
+
"net8.0",
|
1090
|
+
dependencies,
|
1091
|
+
update,
|
1092
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1093
|
+
new TestLogger()
|
1094
|
+
);
|
941
1095
|
Assert.NotNull(resolvedDependencies);
|
942
1096
|
Assert.Equal(3, resolvedDependencies.Length);
|
943
1097
|
Assert.Equal("AutoMapper.Extensions.Microsoft.DependencyInjection", resolvedDependencies[0].Name);
|
@@ -949,8 +1103,10 @@ public class MSBuildHelperTests : TestBase
|
|
949
1103
|
}
|
950
1104
|
|
951
1105
|
// Two dependencies (Microsoft.Extensions.Caching.Memory), (Microsoft.EntityFrameworkCore.Analyzers) used by the same parent (Microsoft.EntityFrameworkCore), updating one of the dependencies
|
952
|
-
[
|
953
|
-
|
1106
|
+
[Theory]
|
1107
|
+
[InlineData(true)]
|
1108
|
+
[InlineData(false)]
|
1109
|
+
public async Task DependencyConflictsCanBeResolvedNewTwoDependenciesShareSameParent(bool useExistingSdks)
|
954
1110
|
{
|
955
1111
|
using var tempDirectory = new TemporaryDirectory();
|
956
1112
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -976,7 +1132,15 @@ public class MSBuildHelperTests : TestBase
|
|
976
1132
|
new Dependency("Microsoft.Extensions.Caching.Memory", "8.0.0", DependencyType.PackageReference)
|
977
1133
|
};
|
978
1134
|
|
979
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1135
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1136
|
+
tempDirectory.DirectoryPath,
|
1137
|
+
projectPath,
|
1138
|
+
"net8.0",
|
1139
|
+
dependencies,
|
1140
|
+
update,
|
1141
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1142
|
+
new TestLogger()
|
1143
|
+
);
|
980
1144
|
Assert.NotNull(resolvedDependencies);
|
981
1145
|
Assert.Equal(2, resolvedDependencies.Length);
|
982
1146
|
Assert.Equal("Microsoft.EntityFrameworkCore", resolvedDependencies[0].Name);
|
@@ -987,8 +1151,10 @@ public class MSBuildHelperTests : TestBase
|
|
987
1151
|
|
988
1152
|
// Updating referenced package
|
989
1153
|
// 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
|
-
|
1154
|
+
[Theory]
|
1155
|
+
[InlineData(true)]
|
1156
|
+
[InlineData(false)]
|
1157
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourExisting(bool useExistingSdks)
|
992
1158
|
{
|
993
1159
|
using var tempDirectory = new TemporaryDirectory();
|
994
1160
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1018,7 +1184,15 @@ public class MSBuildHelperTests : TestBase
|
|
1018
1184
|
new Dependency("Microsoft.EntityFrameworkCore.Analyzers", "8.0.0", DependencyType.PackageReference)
|
1019
1185
|
};
|
1020
1186
|
|
1021
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1187
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1188
|
+
tempDirectory.DirectoryPath,
|
1189
|
+
projectPath,
|
1190
|
+
"net8.0",
|
1191
|
+
dependencies,
|
1192
|
+
update,
|
1193
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1194
|
+
new TestLogger()
|
1195
|
+
);
|
1022
1196
|
Assert.NotNull(resolvedDependencies);
|
1023
1197
|
Assert.Equal(4, resolvedDependencies.Length);
|
1024
1198
|
Assert.Equal("Microsoft.EntityFrameworkCore.Design", resolvedDependencies[0].Name);
|
@@ -1033,8 +1207,10 @@ public class MSBuildHelperTests : TestBase
|
|
1033
1207
|
|
1034
1208
|
// Updating unreferenced package
|
1035
1209
|
// 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
|
-
|
1210
|
+
[Theory]
|
1211
|
+
[InlineData(true)]
|
1212
|
+
[InlineData(false)]
|
1213
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourNotInExisting(bool useExistingSdks)
|
1038
1214
|
{
|
1039
1215
|
using var tempDirectory = new TemporaryDirectory();
|
1040
1216
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1062,7 +1238,15 @@ public class MSBuildHelperTests : TestBase
|
|
1062
1238
|
new Dependency("Microsoft.EntityFrameworkCore.Analyzers", "8.0.0", DependencyType.PackageReference)
|
1063
1239
|
};
|
1064
1240
|
|
1065
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1241
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1242
|
+
tempDirectory.DirectoryPath,
|
1243
|
+
projectPath,
|
1244
|
+
"net8.0",
|
1245
|
+
dependencies,
|
1246
|
+
update,
|
1247
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1248
|
+
new TestLogger()
|
1249
|
+
);
|
1066
1250
|
Assert.NotNull(resolvedDependencies);
|
1067
1251
|
Assert.Equal(3, resolvedDependencies.Length);
|
1068
1252
|
Assert.Equal("Microsoft.EntityFrameworkCore.Design", resolvedDependencies[0].Name);
|
@@ -1075,8 +1259,10 @@ public class MSBuildHelperTests : TestBase
|
|
1075
1259
|
|
1076
1260
|
// Updating a referenced transitive dependency
|
1077
1261
|
// 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
|
-
|
1262
|
+
[Theory]
|
1263
|
+
[InlineData(true)]
|
1264
|
+
[InlineData(false)]
|
1265
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourSpecificExisting(bool useExistingSdks)
|
1080
1266
|
{
|
1081
1267
|
using var tempDirectory = new TemporaryDirectory();
|
1082
1268
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1106,7 +1292,15 @@ public class MSBuildHelperTests : TestBase
|
|
1106
1292
|
new Dependency("System.Collections.Immutable", "8.0.0", DependencyType.PackageReference),
|
1107
1293
|
};
|
1108
1294
|
|
1109
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1295
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1296
|
+
tempDirectory.DirectoryPath,
|
1297
|
+
projectPath,
|
1298
|
+
"net8.0",
|
1299
|
+
dependencies,
|
1300
|
+
update,
|
1301
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1302
|
+
new TestLogger()
|
1303
|
+
);
|
1110
1304
|
Assert.NotNull(resolvedDependencies);
|
1111
1305
|
Assert.Equal(4, resolvedDependencies.Length);
|
1112
1306
|
Assert.Equal("System.Collections.Immutable", resolvedDependencies[0].Name);
|
@@ -1120,8 +1314,10 @@ public class MSBuildHelperTests : TestBase
|
|
1120
1314
|
}
|
1121
1315
|
|
1122
1316
|
// Similar to the last test, with the "grandchild" (System.Collections.Immutable) not in the existing list
|
1123
|
-
[
|
1124
|
-
|
1317
|
+
[Theory]
|
1318
|
+
[InlineData(true)]
|
1319
|
+
[InlineData(false)]
|
1320
|
+
public async Task DependencyConflictsCanBeResolvedNewFamilyOfFourSpecificNotInExisting(bool useExistingSdks)
|
1125
1321
|
{
|
1126
1322
|
using var tempDirectory = new TemporaryDirectory();
|
1127
1323
|
var projectPath = Path.Join(tempDirectory.DirectoryPath, "project.csproj");
|
@@ -1150,7 +1346,15 @@ public class MSBuildHelperTests : TestBase
|
|
1150
1346
|
new Dependency("System.Collections.Immutable", "8.0.0", DependencyType.PackageReference),
|
1151
1347
|
};
|
1152
1348
|
|
1153
|
-
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1349
|
+
var resolvedDependencies = await MSBuildHelper.ResolveDependencyConflicts(
|
1350
|
+
tempDirectory.DirectoryPath,
|
1351
|
+
projectPath,
|
1352
|
+
"net8.0",
|
1353
|
+
dependencies,
|
1354
|
+
update,
|
1355
|
+
new ExperimentsManager() { InstallDotnetSdks = useExistingSdks },
|
1356
|
+
new TestLogger()
|
1357
|
+
);
|
1154
1358
|
Assert.NotNull(resolvedDependencies);
|
1155
1359
|
Assert.Equal(3, resolvedDependencies.Length);
|
1156
1360
|
Assert.Equal("Microsoft.CodeAnalysis.CSharp.Workspaces", resolvedDependencies[0].Name);
|