dependabot-nuget 0.288.0 → 0.290.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 (117) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +19 -17
  3. data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Packaging/NuGet.Packaging.csproj +0 -1
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/AnalyzeCommand.cs +7 -3
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +1 -1
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +29 -2
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +25 -4
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Run.cs +0 -6
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +33 -16
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/CompatabilityChecker.cs +25 -10
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/NuGetContext.cs +0 -13
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/RequirementArrayConverter.cs +39 -0
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/VersionFinder.cs +1 -1
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Clone/ShellGitCommandHandler.cs +1 -1
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +60 -66
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DotNetToolsJsonDiscovery.cs +2 -2
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/GlobalJsonDiscovery.cs +2 -2
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscovery.cs +11 -3
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscoveryResult.cs +1 -0
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/ProjectDiscoveryResult.cs +2 -4
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +54 -11
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/WorkspaceDiscoveryResult.cs +0 -1
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +1 -2
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +1 -1
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +2 -2
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Advisory.cs +13 -0
  27. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/AllowedUpdate.cs +18 -1
  28. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/CommitOptions.cs +8 -0
  29. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Condition.cs +19 -0
  30. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/DependencyGroup.cs +8 -0
  31. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/GroupPullRequest.cs +9 -0
  32. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Job.cs +13 -10
  33. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/PullRequest.cs +11 -0
  34. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/RequirementsUpdateStrategy.cs +15 -0
  35. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +67 -58
  36. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/VersionConverter.cs +19 -0
  37. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +15 -44
  38. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +4 -4
  39. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +5 -5
  40. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/LockFileUpdater.cs +2 -10
  41. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +38 -33
  42. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +25 -23
  43. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +16 -12
  44. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ConsoleLogger.cs +1 -1
  45. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/DependencyConflictResolver.cs +19 -19
  46. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ILogger.cs +11 -1
  47. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/JsonHelper.cs +2 -0
  48. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +18 -17
  49. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +1 -17
  50. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +17 -9
  51. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProjectHelper.cs +96 -0
  52. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTestBase.cs +5 -2
  53. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +87 -5
  54. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +2 -5
  55. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.DotNetToolsJson.cs +45 -1
  56. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +35 -1
  57. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +16 -0
  58. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Proj.cs +6 -0
  59. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +143 -36
  60. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +184 -48
  61. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/ExpectedDiscoveryResults.cs +5 -5
  62. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +32 -10
  63. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/MiscellaneousTests.cs +85 -0
  64. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +402 -102
  65. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +342 -2
  66. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatedDependencyListTests.cs +60 -2
  67. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +18 -7
  68. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestLogger.cs +1 -1
  69. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/BindingRedirectsTests.cs +1 -1
  70. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/PackagesConfigUpdaterTests.cs +24 -0
  71. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +4 -14
  72. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +84 -0
  73. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +66 -0
  74. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs +95 -0
  75. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +1 -7
  76. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/AssertEx.cs +1 -1
  77. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/LinuxOnlyAttribute.cs +12 -0
  78. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +558 -711
  79. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/PathHelperTests.cs +47 -2
  80. data/lib/dependabot/nuget/analysis/analysis_json_reader.rb +4 -2
  81. data/lib/dependabot/nuget/analysis/dependency_analysis.rb +3 -3
  82. data/lib/dependabot/nuget/discovery/dependency_details.rb +10 -3
  83. data/lib/dependabot/nuget/discovery/dependency_file_discovery.rb +8 -12
  84. data/lib/dependabot/nuget/discovery/discovery_json_reader.rb +214 -29
  85. data/lib/dependabot/nuget/discovery/project_discovery.rb +41 -8
  86. data/lib/dependabot/nuget/discovery/workspace_discovery.rb +14 -19
  87. data/lib/dependabot/nuget/file_fetcher.rb +11 -393
  88. data/lib/dependabot/nuget/file_parser.rb +23 -61
  89. data/lib/dependabot/nuget/file_updater.rb +28 -23
  90. data/lib/dependabot/nuget/native_helpers.rb +14 -5
  91. data/lib/dependabot/nuget/update_checker/requirements_updater.rb +23 -27
  92. data/lib/dependabot/nuget/update_checker.rb +116 -190
  93. metadata +20 -32
  94. data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Packages.props +0 -29
  95. data/lib/dependabot/nuget/discovery/directory_packages_props_discovery.rb +0 -43
  96. data/lib/dependabot/nuget/file_fetcher/import_paths_finder.rb +0 -73
  97. data/lib/dependabot/nuget/file_fetcher/sln_project_paths_finder.rb +0 -60
  98. data/lib/dependabot/nuget/http_response_helpers.rb +0 -19
  99. data/lib/dependabot/nuget/native_discovery/native_dependency_details.rb +0 -102
  100. data/lib/dependabot/nuget/native_discovery/native_dependency_file_discovery.rb +0 -129
  101. data/lib/dependabot/nuget/native_discovery/native_discovery_json_reader.rb +0 -171
  102. data/lib/dependabot/nuget/native_discovery/native_evaluation_details.rb +0 -63
  103. data/lib/dependabot/nuget/native_discovery/native_project_discovery.rb +0 -82
  104. data/lib/dependabot/nuget/native_discovery/native_property_details.rb +0 -43
  105. data/lib/dependabot/nuget/native_discovery/native_workspace_discovery.rb +0 -68
  106. data/lib/dependabot/nuget/native_update_checker/native_requirements_updater.rb +0 -105
  107. data/lib/dependabot/nuget/native_update_checker/native_update_checker.rb +0 -201
  108. data/lib/dependabot/nuget/nuget_client.rb +0 -223
  109. data/lib/dependabot/nuget/update_checker/compatibility_checker.rb +0 -116
  110. data/lib/dependabot/nuget/update_checker/dependency_finder.rb +0 -297
  111. data/lib/dependabot/nuget/update_checker/nupkg_fetcher.rb +0 -221
  112. data/lib/dependabot/nuget/update_checker/nuspec_fetcher.rb +0 -110
  113. data/lib/dependabot/nuget/update_checker/property_updater.rb +0 -196
  114. data/lib/dependabot/nuget/update_checker/repository_finder.rb +0 -466
  115. data/lib/dependabot/nuget/update_checker/tfm_comparer.rb +0 -34
  116. data/lib/dependabot/nuget/update_checker/tfm_finder.rb +0 -30
  117. data/lib/dependabot/nuget/update_checker/version_finder.rb +0 -449
@@ -32,6 +32,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
32
32
  Dependencies = [
33
33
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
34
34
  ],
35
+ ReferencedProjectPaths = [],
36
+ ImportedFiles = [],
37
+ AdditionalFiles = [],
35
38
  },
36
39
  ],
37
40
  },
@@ -80,6 +83,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
80
83
  new("Some.Package", "4.0.1", DependencyType.PackageReference),
81
84
  new("Some.Transitive.Dependency", "4.0.1", DependencyType.PackageReference),
82
85
  ],
86
+ ReferencedProjectPaths = [],
87
+ ImportedFiles = [],
88
+ AdditionalFiles = [],
83
89
  },
84
90
  ],
85
91
  },
@@ -129,6 +135,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
129
135
  Dependencies = [
130
136
  new("Some.Transitive.Dependency", "4.0.1", DependencyType.PackageReference, EvaluationResult: evaluationResult, TargetFrameworks: ["net8.0"]),
131
137
  ],
138
+ ReferencedProjectPaths = [],
139
+ ImportedFiles = [],
140
+ AdditionalFiles = [],
132
141
  },
133
142
  new()
134
143
  {
@@ -137,6 +146,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
137
146
  Dependencies = [
138
147
  new("Some.Package", "4.0.1", DependencyType.PackageReference, EvaluationResult: evaluationResult, TargetFrameworks: ["net8.0"]),
139
148
  ],
149
+ ReferencedProjectPaths = [],
150
+ ImportedFiles = [],
151
+ AdditionalFiles = [],
140
152
  },
141
153
  ],
142
154
  },
@@ -187,6 +199,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
187
199
  Dependencies = [
188
200
  new("Package.A", "4.5.0", DependencyType.PackageReference, EvaluationResult: evaluationResult, TargetFrameworks: ["net8.0"]),
189
201
  ],
202
+ ReferencedProjectPaths = [],
203
+ ImportedFiles = [],
204
+ AdditionalFiles = [],
190
205
  },
191
206
  new()
192
207
  {
@@ -195,6 +210,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
195
210
  Dependencies = [
196
211
  new("Package.B", "4.5.0", DependencyType.PackageReference, EvaluationResult: evaluationResult, TargetFrameworks: ["net8.0"]),
197
212
  ],
213
+ ReferencedProjectPaths = [],
214
+ ImportedFiles = [],
215
+ AdditionalFiles = [],
198
216
  },
199
217
  ],
200
218
  },
@@ -241,6 +259,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
241
259
  Dependencies = [
242
260
  new("Some.Transitive.Dependency", "$(MissingPackageVersion)", DependencyType.PackageReference, EvaluationResult: new EvaluationResult(EvaluationResultType.PropertyNotFound, "$(MissingPackageVersion)", "$(MissingPackageVersion)", "$(MissingPackageVersion)", ErrorMessage: null)),
243
261
  ],
262
+ ReferencedProjectPaths = [],
263
+ ImportedFiles = [],
264
+ AdditionalFiles = [],
244
265
  },
245
266
  ],
246
267
  },
@@ -281,6 +302,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
281
302
  Dependencies = [
282
303
  new("Some.Package", "1.0.0", DependencyType.PackageReference), // this was found in the source, but doesn't exist in any feed
283
304
  ],
305
+ ReferencedProjectPaths = [],
306
+ ImportedFiles = [],
307
+ AdditionalFiles = [],
284
308
  },
285
309
  ],
286
310
  },
@@ -326,6 +350,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
326
350
  Dependencies = [
327
351
  new("Some.Transitive.Dependency", "4.0.1", DependencyType.PackageReference),
328
352
  ],
353
+ ReferencedProjectPaths = [],
354
+ ImportedFiles = [],
355
+ AdditionalFiles = [],
329
356
  },
330
357
  ],
331
358
  },
@@ -366,7 +393,10 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
366
393
  TargetFrameworks = ["net8.0"],
367
394
  Dependencies = [
368
395
  new("Some.Package", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"]),
369
- ]
396
+ ],
397
+ ReferencedProjectPaths = [],
398
+ ImportedFiles = [],
399
+ AdditionalFiles = [],
370
400
  },
371
401
  new()
372
402
  {
@@ -374,7 +404,10 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
374
404
  TargetFrameworks = ["NET8.0"],
375
405
  Dependencies = [
376
406
  new("Some.Package", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net8.0"]),
377
- ]
407
+ ],
408
+ ReferencedProjectPaths = [],
409
+ ImportedFiles = [],
410
+ AdditionalFiles = [],
378
411
  }
379
412
  ]
380
413
  },
@@ -418,6 +451,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
418
451
  Dependencies = [
419
452
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
420
453
  ],
454
+ ReferencedProjectPaths = [],
455
+ ImportedFiles = [],
456
+ AdditionalFiles = [],
421
457
  },
422
458
  ],
423
459
  },
@@ -585,7 +621,10 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
585
621
  Dependencies =
586
622
  [
587
623
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
588
- ]
624
+ ],
625
+ ReferencedProjectPaths = [],
626
+ ImportedFiles = [],
627
+ AdditionalFiles = [],
589
628
  }
590
629
  ]
591
630
  },
@@ -754,7 +793,10 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
754
793
  Dependencies =
755
794
  [
756
795
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
757
- ]
796
+ ],
797
+ ReferencedProjectPaths = [],
798
+ ImportedFiles = [],
799
+ AdditionalFiles = [],
758
800
  }
759
801
  ]
760
802
  },
@@ -939,7 +981,10 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
939
981
  Dependencies =
940
982
  [
941
983
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
942
- ]
984
+ ],
985
+ ReferencedProjectPaths = [],
986
+ ImportedFiles = [],
987
+ AdditionalFiles = [],
943
988
  }
944
989
  ]
945
990
  },
@@ -1049,6 +1094,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
1049
1094
  Dependencies = [
1050
1095
  new("Some.Package", "1.2.3", DependencyType.PackageReference),
1051
1096
  ],
1097
+ ReferencedProjectPaths = [],
1098
+ ImportedFiles = [],
1099
+ AdditionalFiles = [],
1052
1100
  }
1053
1101
  ]
1054
1102
  },
@@ -1167,6 +1215,9 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
1167
1215
  Dependencies = [
1168
1216
  new("Some.Package", "1.0.0", DependencyType.PackageReference),
1169
1217
  ],
1218
+ ReferencedProjectPaths = [],
1219
+ ImportedFiles = [],
1220
+ AdditionalFiles = [],
1170
1221
  }
1171
1222
  ]
1172
1223
  },
@@ -1187,4 +1238,35 @@ public partial class AnalyzeWorkerTests : AnalyzeWorkerTestBase
1187
1238
  }
1188
1239
  );
1189
1240
  }
1241
+
1242
+ [Fact]
1243
+ public void DeserializeDependencyInfo_UnsupportedIgnoredVersionsAreIgnored()
1244
+ {
1245
+ // arrange
1246
+ // "1.0.0.pre.rc2" isn't a valid NuGet version; ignore that requirement
1247
+ var json = """
1248
+ {
1249
+ "Name": "Some.Package",
1250
+ "Version": "1.10.0",
1251
+ "IsVulnerable": false,
1252
+ "IgnoredVersions": [
1253
+ "> 1.0.0.pre.rc2, < 2",
1254
+ "< 1.0.1"
1255
+ ],
1256
+ "Vulnerabilities": []
1257
+ }
1258
+ """;
1259
+
1260
+ // act
1261
+ var dependencyInfo = AnalyzeWorker.DeserializeDependencyInfo(json);
1262
+
1263
+ // assert
1264
+ Assert.NotNull(dependencyInfo);
1265
+ Assert.Equal("Some.Package", dependencyInfo.Name);
1266
+ Assert.Equal("1.10.0", dependencyInfo.Version);
1267
+ Assert.False(dependencyInfo.IsVulnerable);
1268
+ Assert.Single(dependencyInfo.IgnoredVersions);
1269
+ Assert.Equal("< 1.0.1", dependencyInfo.IgnoredVersions.Single().ToString());
1270
+ Assert.Empty(dependencyInfo.Vulnerabilities);
1271
+ }
1190
1272
  }
@@ -43,7 +43,6 @@ public class DiscoveryWorkerTestBase : TestBase
43
43
  ValidateResultWithDependencies(expectedResult.GlobalJson, actualResult.GlobalJson);
44
44
  ValidateResultWithDependencies(expectedResult.DotNetToolsJson, actualResult.DotNetToolsJson);
45
45
  ValidateProjectResults(expectedResult.Projects, actualResult.Projects, experimentsManager);
46
- AssertEx.Equal(expectedResult.ImportedFiles, actualResult.ImportedFiles, PathComparer.Instance);
47
46
  Assert.Equal(expectedResult.ExpectedProjectCount ?? expectedResult.Projects.Length, actualResult.Projects.Length);
48
47
  Assert.Equal(expectedResult.ErrorType, actualResult.ErrorType);
49
48
  Assert.Equal(expectedResult.ErrorDetails, actualResult.ErrorDetails);
@@ -92,10 +91,8 @@ public class DiscoveryWorkerTestBase : TestBase
92
91
  AssertEx.Equal(expectedProject.Properties, actualProperties, PropertyComparer.Instance);
93
92
  AssertEx.Equal(expectedProject.TargetFrameworks, actualProject.TargetFrameworks);
94
93
  AssertEx.Equal(expectedProject.ReferencedProjectPaths, actualProject.ReferencedProjectPaths);
95
- if (expectedProject.ImportedFiles is not null)
96
- {
97
- AssertEx.Equal(expectedProject.ImportedFiles.Value.Select(PathHelper.NormalizePathToUnix), actualProject.ImportedFiles.Select(PathHelper.NormalizePathToUnix));
98
- }
94
+ AssertEx.Equal(expectedProject.ImportedFiles, actualProject.ImportedFiles);
95
+ AssertEx.Equal(expectedProject.AdditionalFiles, actualProject.AdditionalFiles);
99
96
 
100
97
  // some dependencies are byproducts of the older temporary project discovery process and shouldn't be returned
101
98
  var actualDependencies = actualProject.Dependencies;
@@ -50,6 +50,50 @@ public partial class DiscoveryWorkerTests
50
50
  );
51
51
  }
52
52
 
53
+ [Fact]
54
+ public async Task DiscoversDependenciesTrailingComma()
55
+ {
56
+ await TestDiscoveryAsync(
57
+ packages: [],
58
+ workspacePath: "",
59
+ files: [
60
+ (".config/dotnet-tools.json", """
61
+ {
62
+ "version": 1,
63
+ "isRoot": true,
64
+ "tools": {
65
+ "botsay": {
66
+ "version": "1.0.0",
67
+ "commands": [
68
+ "botsay"
69
+ ],
70
+ },
71
+ "dotnetsay": {
72
+ "version": "1.0.0",
73
+ "commands": [
74
+ "dotnetsay"
75
+ ],
76
+ }
77
+ }
78
+ }
79
+ """),
80
+ ],
81
+ expectedResult: new()
82
+ {
83
+ Path = "",
84
+ DotNetToolsJson = new()
85
+ {
86
+ FilePath = ".config/dotnet-tools.json",
87
+ Dependencies = [
88
+ new("botsay", "1.0.0", DependencyType.DotNetTool),
89
+ new("dotnetsay", "1.0.0", DependencyType.DotNetTool),
90
+ ]
91
+ },
92
+ ExpectedProjectCount = 0,
93
+ }
94
+ );
95
+ }
96
+
53
97
  [Fact]
54
98
  public async Task ReportsFailure()
55
99
  {
@@ -74,7 +118,7 @@ public partial class DiscoveryWorkerTests
74
118
  "dotnetsay"
75
119
  ]
76
120
  }
77
- }
121
+ } INVALID JSON
78
122
  }
79
123
  """),
80
124
  ],
@@ -40,6 +40,40 @@ public partial class DiscoveryWorkerTests
40
40
  );
41
41
  }
42
42
 
43
+ [Fact]
44
+ public async Task DiscoversDependencies_HandlesTrailingComma()
45
+ {
46
+ await TestDiscoveryAsync(
47
+ packages: [],
48
+ workspacePath: "",
49
+ files: [
50
+ ("global.json", """
51
+ {
52
+ "sdk": {
53
+ "version": "2.2.104"
54
+ },
55
+ "msbuild-sdks": {
56
+ "Microsoft.Build.Traversal": "1.0.45"
57
+ },
58
+ }
59
+ """),
60
+ ],
61
+ expectedResult: new()
62
+ {
63
+ Path = "",
64
+ GlobalJson = new()
65
+ {
66
+ FilePath = "global.json",
67
+ Dependencies = [
68
+ new("Microsoft.NET.Sdk", "2.2.104", DependencyType.MSBuildSdk),
69
+ new("Microsoft.Build.Traversal", "1.0.45", DependencyType.MSBuildSdk),
70
+ ]
71
+ },
72
+ ExpectedProjectCount = 0,
73
+ }
74
+ );
75
+ }
76
+
43
77
  [Fact]
44
78
  public async Task ReportsFailure()
45
79
  {
@@ -50,7 +84,7 @@ public partial class DiscoveryWorkerTests
50
84
  ("global.json", """
51
85
  {
52
86
  "sdk": {
53
- "version": "2.2.104",
87
+ "version": "2.2.104", INVALID JSON
54
88
  },
55
89
  "msbuild-sdks": {
56
90
  "Microsoft.Build.Traversal": "1.0.45"
@@ -30,6 +30,9 @@ public partial class DiscoveryWorkerTests
30
30
  <PropertyGroup>
31
31
  <TargetFramework>net46</TargetFramework>
32
32
  </PropertyGroup>
33
+ <ItemGroup>
34
+ <None Include="packages.config" />
35
+ </ItemGroup>
33
36
  </Project>
34
37
  """)
35
38
  ],
@@ -48,6 +51,11 @@ public partial class DiscoveryWorkerTests
48
51
  new("Package.A", "1.0.0", DependencyType.PackagesConfig, TargetFrameworks: ["net46"]),
49
52
  new("Package.B", "2.0.0", DependencyType.PackagesConfig, TargetFrameworks: ["net46"]),
50
53
  ],
54
+ ReferencedProjectPaths = [],
55
+ ImportedFiles = [],
56
+ AdditionalFiles = [
57
+ "packages.config"
58
+ ],
51
59
  }
52
60
  ],
53
61
  }
@@ -78,6 +86,9 @@ public partial class DiscoveryWorkerTests
78
86
  <PropertyGroup>
79
87
  <TargetFramework>net46</TargetFramework>
80
88
  </PropertyGroup>
89
+ <ItemGroup>
90
+ <None Include="packages.config" />
91
+ </ItemGroup>
81
92
  </Project>
82
93
  """)
83
94
  ],
@@ -94,6 +105,11 @@ public partial class DiscoveryWorkerTests
94
105
  new("Package.A", "1.0.0", DependencyType.PackagesConfig, TargetFrameworks: ["net46"]),
95
106
  new("Package.B", "2.0.0", DependencyType.PackagesConfig, TargetFrameworks: ["net46"]),
96
107
  ],
108
+ ReferencedProjectPaths = [],
109
+ ImportedFiles = [],
110
+ AdditionalFiles = [
111
+ "packages.config"
112
+ ],
97
113
  }
98
114
  ],
99
115
  }
@@ -73,6 +73,9 @@ public partial class DiscoveryWorkerTests
73
73
  new("TargetFramework", "net8.0", "src/project1/project1.csproj")
74
74
  ],
75
75
  TargetFrameworks = ["net8.0"],
76
+ ReferencedProjectPaths = [],
77
+ ImportedFiles = [],
78
+ AdditionalFiles = [],
76
79
  },
77
80
  new()
78
81
  {
@@ -86,6 +89,9 @@ public partial class DiscoveryWorkerTests
86
89
  new("TargetFramework", "net8.0", "src/project2/project2.csproj")
87
90
  ],
88
91
  TargetFrameworks = ["net8.0"],
92
+ ReferencedProjectPaths = [],
93
+ ImportedFiles = [],
94
+ AdditionalFiles = [],
89
95
  }
90
96
  ]
91
97
  }