|
3 | 3 |
|
4 | 4 | using System; |
5 | 5 | using System.Collections.Generic; |
| 6 | +using System.Collections.Immutable; |
6 | 7 | using System.IO; |
7 | 8 | using System.Linq; |
8 | 9 | using System.Threading; |
9 | 10 | using System.Threading.Tasks; |
10 | 11 | using FluentAssertions; |
11 | 12 | using NuGet.Commands.Test; |
12 | 13 | using NuGet.Common; |
| 14 | +using NuGet.Configuration; |
| 15 | +using NuGet.Frameworks; |
13 | 16 | using NuGet.LibraryModel; |
14 | 17 | using NuGet.Packaging; |
15 | 18 | using NuGet.ProjectModel; |
@@ -1456,23 +1459,27 @@ public void AnalyzePruningResults_WithMultiTargetingProjectAndVariousVersions_Wa |
1456 | 1459 | public void AnalyzePruningResults_WithCPMAndNullVersionRange_DoesNotThrowNullReferenceException() |
1457 | 1460 | { |
1458 | 1461 | // Test for issue: NullReferenceException in package pruning when using CPM and a version is not specified |
1459 | | - var rootProject = @" |
| 1462 | + var projectSpec = new PackageSpec(new List<TargetFrameworkInformation> |
| 1463 | + { |
| 1464 | + new TargetFrameworkInformation |
1460 | 1465 | { |
1461 | | - ""frameworks"": { |
1462 | | - ""net10.0"": { |
1463 | | - ""dependencies"": { |
1464 | | - ""A"": { |
1465 | | - ""target"": ""Package"", |
1466 | | - }, |
1467 | | - }, |
1468 | | - ""packagesToPrune"": { |
1469 | | - ""A"" : ""(,1.0.0]"" |
1470 | | - } |
| 1466 | + FrameworkName = NuGetFramework.Parse("net10.0"), |
| 1467 | + TargetAlias = "net10.0", |
| 1468 | + Dependencies = ImmutableArray.Create(new LibraryDependency |
| 1469 | + { |
| 1470 | + LibraryRange = new LibraryRange("A", null, LibraryDependencyTarget.Package) |
| 1471 | + }), |
| 1472 | + PackagesToPrune = new Dictionary<string, PrunePackageReference> |
| 1473 | + { |
| 1474 | + { "A", new PrunePackageReference("A", VersionRange.Parse("(,1.0.0]")) } |
1471 | 1475 | } |
1472 | | - } |
1473 | | - }"; |
| 1476 | + } |
| 1477 | + }) |
| 1478 | + { |
| 1479 | + Name = "Project1", |
| 1480 | + FilePath = Path.Combine(Path.GetTempPath(), "Project1.csproj") |
| 1481 | + }; |
1474 | 1482 |
|
1475 | | - var projectSpec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec("Project1", Path.GetTempPath(), rootProject); |
1476 | 1483 | var testLogger = new TestLogger(); |
1477 | 1484 | var testEvent = new TelemetryEvent("dummyEvent"); |
1478 | 1485 |
|
@@ -1501,24 +1508,43 @@ await SimpleTestPackageUtility.CreateFolderFeedV3Async( |
1501 | 1508 | PackageSaveMode.Defaultv3, |
1502 | 1509 | packageA); |
1503 | 1510 |
|
1504 | | - var rootProject = @" |
1505 | | - { |
1506 | | - ""frameworks"": { |
1507 | | - ""net10.0"": { |
1508 | | - ""dependencies"": { |
1509 | | - ""A"": { |
1510 | | - ""target"": ""Package"", |
1511 | | - }, |
1512 | | - }, |
1513 | | - ""packagesToPrune"": { |
1514 | | - ""A"" : ""(,1.0.0]"" |
| 1511 | + // Create PackageSpec manually with null version range to simulate CPM without version |
| 1512 | + var projectPath = Path.Combine(pathContext.SolutionRoot, "Project1", "Project1.csproj"); |
| 1513 | + var projectSpec = new PackageSpec(new List<TargetFrameworkInformation> |
| 1514 | + { |
| 1515 | + new TargetFrameworkInformation |
| 1516 | + { |
| 1517 | + FrameworkName = NuGetFramework.Parse("net10.0"), |
| 1518 | + TargetAlias = "net10.0", |
| 1519 | + Dependencies = ImmutableArray.Create(new LibraryDependency |
| 1520 | + { |
| 1521 | + LibraryRange = new LibraryRange("A", null, LibraryDependencyTarget.Package) |
| 1522 | + }), |
| 1523 | + PackagesToPrune = new Dictionary<string, PrunePackageReference> |
| 1524 | + { |
| 1525 | + { "A", new PrunePackageReference("A", VersionRange.Parse("(,1.0.0]")) } |
| 1526 | + } |
1515 | 1527 | } |
1516 | | - } |
1517 | | - } |
1518 | | - }"; |
| 1528 | + }) |
| 1529 | + { |
| 1530 | + Name = "Project1", |
| 1531 | + FilePath = projectPath, |
| 1532 | + RestoreMetadata = new ProjectRestoreMetadata |
| 1533 | + { |
| 1534 | + ProjectStyle = ProjectStyle.PackageReference, |
| 1535 | + ProjectPath = projectPath, |
| 1536 | + ProjectName = "Project1", |
| 1537 | + ProjectUniqueName = projectPath, |
| 1538 | + OutputPath = Path.Combine(pathContext.SolutionRoot, "Project1", "obj"), |
| 1539 | + OriginalTargetFrameworks = ["net10.0"], |
| 1540 | + ConfigFilePaths = [], |
| 1541 | + PackagesPath = pathContext.UserPackagesFolder, |
| 1542 | + Sources = [new PackageSource(pathContext.PackageSource)], |
| 1543 | + FallbackFolders = [], |
| 1544 | + CentralPackageVersionsEnabled = true |
| 1545 | + } |
| 1546 | + }; |
1519 | 1547 |
|
1520 | | - // Setup project |
1521 | | - var projectSpec = ProjectTestHelpers.GetPackageSpecWithProjectNameAndSpec("Project1", pathContext.SolutionRoot, rootProject); |
1522 | 1548 | var testLogger = new TestLogger(); |
1523 | 1549 |
|
1524 | 1550 | // Act - This should not throw a NullReferenceException during restore |
|
0 commit comments