dependabot-nuget 0.258.0 → 0.259.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/helpers/lib/NuGetUpdater/Directory.Packages.props +2 -0
  3. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +2 -2
  4. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +255 -191
  5. data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Update.cs +63 -35
  6. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +107 -14
  7. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +9 -5
  8. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +18 -0
  9. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +6 -1
  10. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.DotNetToolsJson.cs +6 -2
  11. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.GlobalJson.cs +6 -2
  12. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +11 -21
  13. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Proj.cs +95 -0
  14. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +204 -62
  15. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +64 -45
  16. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/MockNuGetPackage.cs +419 -0
  17. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +1 -0
  18. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +7 -2
  19. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +77 -19
  20. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DirsProj.cs +120 -91
  21. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.DotNetTools.cs +132 -97
  22. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.GlobalJson.cs +93 -75
  23. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Mixed.cs +45 -42
  24. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +1089 -956
  25. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.Sdk.cs +1624 -1291
  26. data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +296 -293
  27. data/helpers/lib/NuGetUpdater/global.json +6 -0
  28. data/lib/dependabot/nuget/file_parser.rb +4 -5
  29. data/lib/dependabot/nuget/file_updater.rb +1 -1
  30. data/lib/dependabot/nuget/update_checker/dependency_finder.rb +7 -2
  31. data/lib/dependabot/nuget/update_checker/property_updater.rb +1 -0
  32. data/lib/dependabot/nuget/update_checker/version_finder.rb +2 -3
  33. data/lib/dependabot/nuget/update_checker.rb +1 -0
  34. metadata +8 -5
@@ -10,29 +10,27 @@ public partial class DiscoveryWorkerTests
10
10
  public async Task ReturnsPackageReferencesMissingVersions()
11
11
  {
12
12
  await TestDiscoveryAsync(
13
+ packages: [],
13
14
  workspacePath: "",
14
15
  files: [
15
16
  ("myproj.csproj", """
16
17
  <Project Sdk="Microsoft.NET.Sdk">
17
18
  <PropertyGroup>
18
19
  <Description>Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.</Description>
19
- <TargetFrameworks>netstandard1.6;net462</TargetFrameworks>
20
+ <TargetFrameworks>net7.0;net8.0</TargetFrameworks>
20
21
  </PropertyGroup>
21
22
 
22
23
  <ItemGroup>
23
24
  <EmbeddedResource Include="ErrorHandling\Resources\**\*.*;Diagnostics\Resources\**\*.*;Diagnostics\Views\**\*.*" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
24
25
  </ItemGroup>
25
26
 
26
- <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
27
- <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.1" />
28
- <PackageReference Include="Microsoft.AspNetCore.App" />
29
- <PackageReference Include="Microsoft.NET.Test.Sdk" Version="" />
30
- <PackageReference Include="Microsoft.Extensions.PlatformAbstractions" version="1.1.0"></PackageReference>
31
- <PackageReference Include="System.Collections.Specialized"><Version>4.3.0</Version></PackageReference>
27
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
28
+ <PackageReference Include="Package.A" Version="1.1.1" />
29
+ <PackageReference Include="Package.B" />
32
30
  </ItemGroup>
33
31
 
34
- <ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
35
- <Reference Include="System.Xml" />
32
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
33
+ <Reference Include="Package.C" />
36
34
  </ItemGroup>
37
35
  </Project>
38
36
  """)
@@ -44,44 +42,43 @@ public partial class DiscoveryWorkerTests
44
42
  new()
45
43
  {
46
44
  FilePath = "myproj.csproj",
47
- ExpectedDependencyCount = 52,
45
+ ExpectedDependencyCount = 3,
48
46
  Dependencies = [
49
- new("Microsoft.Extensions.DependencyModel", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
50
- new("Microsoft.AspNetCore.App", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
51
- new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
52
47
  new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
53
- new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
54
- new("System.Collections.Specialized", "4.3.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
48
+ new("Package.A", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
49
+ new("Package.B", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
55
50
  ],
56
51
  Properties = [
57
52
  new("Description", "Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.", "myproj.csproj"),
58
- new("TargetFrameworks", "netstandard1.6;net462", "myproj.csproj"),
53
+ new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
59
54
  ],
60
- TargetFrameworks = ["net462", "netstandard1.6"],
55
+ TargetFrameworks = ["net7.0", "net8.0"],
61
56
  ReferencedProjectPaths = [],
62
57
  }
63
58
  ],
64
- });
59
+ }
60
+ );
65
61
  }
66
62
 
67
63
  [Fact]
68
64
  public async Task WithDirectoryPackagesProps()
69
65
  {
70
66
  await TestDiscoveryAsync(
67
+ packages: [],
71
68
  workspacePath: "",
72
69
  files: [
73
70
  ("myproj.csproj", """
74
71
  <Project Sdk="Microsoft.NET.Sdk">
75
72
  <PropertyGroup>
76
73
  <Description>Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.</Description>
77
- <TargetFrameworks>netstandard1.6;net462</TargetFrameworks>
74
+ <TargetFrameworks>net7.0;net8.0</TargetFrameworks>
78
75
  </PropertyGroup>
79
76
 
80
77
  <ItemGroup>
81
78
  <EmbeddedResource Include="ErrorHandling\Resources\**\*.*;Diagnostics\Resources\**\*.*;Diagnostics\Views\**\*.*" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
82
79
  </ItemGroup>
83
80
 
84
- <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
81
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
85
82
  <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.1" />
86
83
  <PackageReference Include="Microsoft.AspNetCore.App" />
87
84
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="" />
@@ -89,11 +86,12 @@ public partial class DiscoveryWorkerTests
89
86
  <PackageReference Include="System.Collections.Specialized"><Version>4.3.0</Version></PackageReference>
90
87
  </ItemGroup>
91
88
 
92
- <ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
89
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
93
90
  <Reference Include="System.Xml" />
94
91
  </ItemGroup>
95
92
  </Project>
96
93
  """),
94
+ ("Directory.Build.props", "<Project />"),
97
95
  ("Directory.Packages.props", """
98
96
  <Project Sdk="Microsoft.NET.Sdk">
99
97
  <PropertyGroup>
@@ -111,25 +109,26 @@ public partial class DiscoveryWorkerTests
111
109
  expectedResult: new()
112
110
  {
113
111
  FilePath = "",
112
+ ExpectedProjectCount = 2,
114
113
  Projects = [
115
114
  new()
116
115
  {
117
116
  FilePath = "myproj.csproj",
118
- ExpectedDependencyCount = 52,
117
+ ExpectedDependencyCount = 6,
119
118
  Dependencies = [
120
- new("Microsoft.Extensions.DependencyModel", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
121
- new("Microsoft.AspNetCore.App", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
122
- new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
119
+ new("Microsoft.Extensions.DependencyModel", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
120
+ new("Microsoft.AspNetCore.App", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
121
+ new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
123
122
  new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
124
- new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
125
- new("System.Collections.Specialized", "4.3.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
123
+ new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
124
+ new("System.Collections.Specialized", "4.3.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
126
125
  ],
127
126
  Properties = [
128
127
  new("Description", "Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.", "myproj.csproj"),
129
128
  new("ManagePackageVersionsCentrally", "true", "Directory.Packages.props"),
130
- new("TargetFrameworks", "netstandard1.6;net462", "myproj.csproj"),
129
+ new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
131
130
  ],
132
- TargetFrameworks = ["net462", "netstandard1.6"],
131
+ TargetFrameworks = ["net7.0", "net8.0"],
133
132
  },
134
133
  ],
135
134
  DirectoryPackagesProps = new()
@@ -143,13 +142,15 @@ public partial class DiscoveryWorkerTests
143
142
  new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
144
143
  ],
145
144
  },
146
- });
145
+ }
146
+ );
147
147
  }
148
148
 
149
149
  [Fact]
150
150
  public async Task WithDirectoryBuildPropsAndTargets()
151
151
  {
152
152
  await TestDiscoveryAsync(
153
+ packages: [],
153
154
  workspacePath: "",
154
155
  files: [
155
156
  ("project.csproj", """
@@ -157,7 +158,7 @@ public partial class DiscoveryWorkerTests
157
158
 
158
159
  <PropertyGroup>
159
160
  <OutputType>Exe</OutputType>
160
- <TargetFramework>net6.0</TargetFramework>
161
+ <TargetFramework>net7.0</TargetFramework>
161
162
  <ImplicitUsings>enable</ImplicitUsings>
162
163
  <Nullable>enable</Nullable>
163
164
  </PropertyGroup>
@@ -195,16 +196,16 @@ public partial class DiscoveryWorkerTests
195
196
  FilePath = "project.csproj",
196
197
  ExpectedDependencyCount = 3,
197
198
  Dependencies = [
198
- new("NuGet.Versioning", "6.1.0", DependencyType.PackageReference, TargetFrameworks: ["net6.0"], IsDirect: false),
199
- new("Microsoft.CodeAnalysis.Analyzers", "3.3.0", DependencyType.PackageReference, TargetFrameworks: ["net6.0"], IsDirect: false),
199
+ new("NuGet.Versioning", "6.1.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: false),
200
+ new("Microsoft.CodeAnalysis.Analyzers", "3.3.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: false),
200
201
  ],
201
202
  Properties = [
202
203
  new("ImplicitUsings", "enable", "project.csproj"),
203
204
  new("Nullable", "enable", "project.csproj"),
204
205
  new("OutputType", "Exe", "project.csproj"),
205
- new("TargetFramework", "net6.0", "project.csproj"),
206
+ new("TargetFramework", "net7.0", "project.csproj"),
206
207
  ],
207
- TargetFrameworks = ["net6.0"],
208
+ TargetFrameworks = ["net7.0"],
208
209
  },
209
210
  new()
210
211
  {
@@ -227,7 +228,8 @@ public partial class DiscoveryWorkerTests
227
228
  TargetFrameworks = [],
228
229
  },
229
230
  ],
230
- });
231
+ }
232
+ );
231
233
  }
232
234
 
233
235
  [Fact]
@@ -247,20 +249,24 @@ public partial class DiscoveryWorkerTests
247
249
  Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", tempNuGetHttpCacheDirectory);
248
250
 
249
251
  await TestDiscoveryAsync(
252
+ packages:
253
+ [
254
+ MockNuGetPackage.CentralPackageVersionsPackage,
255
+ ],
250
256
  workspacePath: "",
251
257
  files: [
252
258
  ("myproj.csproj", """
253
259
  <Project Sdk="Microsoft.NET.Sdk">
254
260
  <PropertyGroup>
255
261
  <Description>Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.</Description>
256
- <TargetFrameworks>netstandard1.6;net462</TargetFrameworks>
262
+ <TargetFrameworks>net7.0;net8.0</TargetFrameworks>
257
263
  </PropertyGroup>
258
264
 
259
265
  <ItemGroup>
260
266
  <EmbeddedResource Include="ErrorHandling\Resources\**\*.*;Diagnostics\Resources\**\*.*;Diagnostics\Views\**\*.*" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
261
267
  </ItemGroup>
262
268
 
263
- <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.6' ">
269
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
264
270
  <PackageReference Include="Microsoft.Extensions.DependencyModel" Version="1.1.1" />
265
271
  <PackageReference Include="Microsoft.AspNetCore.App" />
266
272
  <PackageReference Include="Microsoft.NET.Test.Sdk" Version="" />
@@ -268,7 +274,7 @@ public partial class DiscoveryWorkerTests
268
274
  <PackageReference Include="System.Collections.Specialized"><Version>4.3.0</Version></PackageReference>
269
275
  </ItemGroup>
270
276
 
271
- <ItemGroup Condition=" '$(TargetFramework)' == 'net462' ">
277
+ <ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
272
278
  <Reference Include="System.Xml" />
273
279
  </ItemGroup>
274
280
  </Project>
@@ -294,25 +300,25 @@ public partial class DiscoveryWorkerTests
294
300
  expectedResult: new()
295
301
  {
296
302
  FilePath = "",
297
- ExpectedProjectCount = 3,
303
+ ExpectedProjectCount = 5,
298
304
  Projects = [
299
305
  new()
300
306
  {
301
307
  FilePath = "myproj.csproj",
302
- ExpectedDependencyCount = 58,
308
+ ExpectedDependencyCount = 12,
303
309
  Dependencies = [
304
- new("Microsoft.Extensions.DependencyModel", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
305
- new("Microsoft.AspNetCore.App", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
306
- new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
310
+ new("Microsoft.Extensions.DependencyModel", "1.1.1", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
311
+ new("Microsoft.AspNetCore.App", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
312
+ new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
307
313
  new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
308
- new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
309
- new("System.Collections.Specialized", "4.3.0", DependencyType.PackageReference, TargetFrameworks: ["net462", "netstandard1.6"], IsDirect: true),
314
+ new("Microsoft.Extensions.PlatformAbstractions", "1.1.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
315
+ new("System.Collections.Specialized", "4.3.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
310
316
  ],
311
317
  Properties = [
312
318
  new("Description", "Nancy is a lightweight web framework for the .Net platform, inspired by Sinatra. Nancy aim at delivering a low ceremony approach to building light, fast web applications.", "myproj.csproj"),
313
- new("TargetFrameworks", "netstandard1.6;net462", "myproj.csproj"),
319
+ new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
314
320
  ],
315
- TargetFrameworks = ["net462", "netstandard1.6"],
321
+ TargetFrameworks = ["net7.0", "net8.0"],
316
322
  },
317
323
  new()
318
324
  {
@@ -327,7 +333,8 @@ public partial class DiscoveryWorkerTests
327
333
  ],
328
334
  },
329
335
  ],
330
- });
336
+ }
337
+ );
331
338
  }
332
339
  finally
333
340
  {
@@ -341,6 +348,7 @@ public partial class DiscoveryWorkerTests
341
348
  public async Task ReturnsDependenciesThatCannotBeEvaluated()
342
349
  {
343
350
  await TestDiscoveryAsync(
351
+ packages: [],
344
352
  workspacePath: "",
345
353
  files: [
346
354
  ("myproj.csproj", """
@@ -374,7 +382,8 @@ public partial class DiscoveryWorkerTests
374
382
  ReferencedProjectPaths = [],
375
383
  }
376
384
  ],
377
- });
385
+ }
386
+ );
378
387
  }
379
388
 
380
389
  [Fact]
@@ -382,6 +391,7 @@ public partial class DiscoveryWorkerTests
382
391
  public async Task NoDependenciesReturnedIfNoTargetFrameworkCanBeResolved()
383
392
  {
384
393
  await TestDiscoveryAsync(
394
+ packages: [],
385
395
  workspacePath: "",
386
396
  files: [
387
397
  ("myproj.csproj", """
@@ -399,23 +409,29 @@ public partial class DiscoveryWorkerTests
399
409
  {
400
410
  FilePath = "",
401
411
  Projects = []
402
- });
412
+ }
413
+ );
403
414
  }
404
415
 
405
416
  [Fact]
406
417
  public async Task DiscoverReportsTransitivePackageVersionsWithFourPartsForMultipleTargetFrameworks()
407
418
  {
408
419
  await TestDiscoveryAsync(
420
+ packages:
421
+ [
422
+ new("Some.Package", "1.2.3.4", Files: [("lib/net7.0/Some.Package.dll", Array.Empty<byte>()), ("lib/net8.0/Some.Package.dll", Array.Empty<byte>())], DependencyGroups: [(null, [("Transitive.Dependency", "5.6.7.8")])]),
423
+ new("Transitive.Dependency", "5.6.7.8", Files: [("lib/net7.0/Transitive.Dependency.dll", Array.Empty<byte>()), ("lib/net8.0/Transitive.Dependency.dll", Array.Empty<byte>())]),
424
+ ],
409
425
  workspacePath: "",
410
426
  files:
411
427
  [
412
428
  ("myproj.csproj", """
413
429
  <Project Sdk="Microsoft.NET.Sdk">
414
430
  <PropertyGroup>
415
- <TargetFrameworks>netstandard2.0;net8.0</TargetFrameworks>
431
+ <TargetFrameworks>net7.0;net8.0</TargetFrameworks>
416
432
  </PropertyGroup>
417
433
  <ItemGroup>
418
- <PackageReference Include="AWSSDK.S3" Version="3.7.307.29" />
434
+ <PackageReference Include="Some.Package" Version="1.2.3.4" />
419
435
  </ItemGroup>
420
436
  </Project>
421
437
  """)
@@ -427,24 +443,150 @@ public partial class DiscoveryWorkerTests
427
443
  new()
428
444
  {
429
445
  FilePath = "myproj.csproj",
446
+ ExpectedDependencyCount = 3,
430
447
  Dependencies = [
431
- new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
432
- new("AWSSDK.S3", "3.7.307.29", DependencyType.PackageReference, TargetFrameworks: ["net8.0", "netstandard2.0"], IsDirect: true),
433
- new("AWSSDK.Core", "3.7.303.27", DependencyType.Unknown, TargetFrameworks: ["net8.0", "netstandard2.0"], IsTransitive: true),
434
- new("Microsoft.Bcl.AsyncInterfaces", "1.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
435
- new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
436
- new("System.Runtime.CompilerServices.Unsafe", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
437
- new("System.Threading.Tasks.Extensions", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
448
+ new("Some.Package", "1.2.3.4", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
449
+ new("Transitive.Dependency", "5.6.7.8", DependencyType.Unknown, TargetFrameworks: ["net7.0", "net8.0"], IsTransitive: true),
438
450
  ],
439
451
  Properties = [
440
- new("TargetFrameworks", "netstandard2.0;net8.0", "myproj.csproj"),
452
+ new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
441
453
  ],
442
- TargetFrameworks = ["net8.0", "netstandard2.0"],
454
+ TargetFrameworks = ["net7.0", "net8.0"],
443
455
  ReferencedProjectPaths = [],
444
456
  }
445
457
  ],
446
458
  }
447
459
  );
448
460
  }
461
+
462
+ [Fact]
463
+ public async Task DiscoverReportsPackagesThroughProjectReferenceElements()
464
+ {
465
+ await TestDiscoveryAsync(
466
+ packages: [],
467
+ workspacePath: "test",
468
+ files:
469
+ [
470
+ ("test/unit-tests.csproj", """
471
+ <Project Sdk="Microsoft.NET.Sdk">
472
+ <PropertyGroup>
473
+ <TargetFramework>net8.0</TargetFramework>
474
+ </PropertyGroup>
475
+ <ItemGroup>
476
+ <ProjectReference Include="..\src\helpers.csproj" />
477
+ </ItemGroup>
478
+ <ItemGroup>
479
+ <PackageReference Include="Package.A" Version="1.2.3" />
480
+ </ItemGroup>
481
+ </Project>
482
+ """),
483
+ ("src/helpers.csproj", """
484
+ <Project Sdk="Microsoft.NET.Sdk">
485
+ <PropertyGroup>
486
+ <TargetFramework>net8.0</TargetFramework>
487
+ </PropertyGroup>
488
+ <ItemGroup>
489
+ <PackageReference Include="Package.B" Version="4.5.6" />
490
+ </ItemGroup>
491
+ </Project>
492
+ """)
493
+ ],
494
+ expectedResult: new()
495
+ {
496
+ FilePath = "test",
497
+ Projects = [
498
+ new()
499
+ {
500
+ FilePath = "unit-tests.csproj",
501
+ ExpectedDependencyCount = 2,
502
+ Dependencies = [
503
+ new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
504
+ ],
505
+ Properties = [
506
+ new("TargetFramework", "net8.0", @"test/unit-tests.csproj"),
507
+ ],
508
+ TargetFrameworks = ["net8.0"],
509
+ ReferencedProjectPaths = [
510
+ "../src/helpers.csproj"
511
+ ],
512
+ },
513
+ new()
514
+ {
515
+ FilePath = "../src/helpers.csproj",
516
+ ExpectedDependencyCount = 2,
517
+ Dependencies = [
518
+ new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
519
+ ],
520
+ Properties = [
521
+ new("TargetFramework", "net8.0", @"src/helpers.csproj"),
522
+ ],
523
+ TargetFrameworks = ["net8.0"],
524
+ ReferencedProjectPaths = [],
525
+ }
526
+ ]
527
+ }
528
+ );
529
+ }
530
+
531
+ [Fact]
532
+ public async Task DiscoverReportsPackagesThroughSolutionFilesNotInTheSameDirectoryTreeAsTheProjects()
533
+ {
534
+ await TestDiscoveryAsync(
535
+ packages: [],
536
+ workspacePath: "solutions",
537
+ files:
538
+ [
539
+ ("solutions/sln.sln", """
540
+ Microsoft Visual Studio Solution File, Format Version 12.00
541
+ # Visual Studio Version 17
542
+ VisualStudioVersion = 17.5.33516.290
543
+ MinimumVisualStudioVersion = 10.0.40219.1
544
+ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "library", "..\projects\library.csproj", "{DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}"
545
+ EndProject
546
+ Global
547
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
548
+ Debug|Any CPU = Debug|Any CPU
549
+ Release|Any CPU = Release|Any CPU
550
+ EndGlobalSection
551
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
552
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
553
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Debug|Any CPU.Build.0 = Debug|Any CPU
554
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Release|Any CPU.ActiveCfg = Release|Any CPU
555
+ {DA55A30A-048A-4D8A-A3EC-4F2CF4B294B8}.Release|Any CPU.Build.0 = Release|Any CPU
556
+ EndGlobalSection
557
+ EndGlobal
558
+ """),
559
+ ("projects/library.csproj", """
560
+ <Project Sdk="Microsoft.NET.Sdk">
561
+ <PropertyGroup>
562
+ <TargetFramework>net8.0</TargetFramework>
563
+ </PropertyGroup>
564
+ <ItemGroup>
565
+ <PackageReference Include="Some.Package" Version="1.2.3" />
566
+ </ItemGroup>
567
+ </Project>
568
+ """)
569
+ ],
570
+ expectedResult: new()
571
+ {
572
+ FilePath = "solutions",
573
+ Projects = [
574
+ new()
575
+ {
576
+ FilePath = "../projects/library.csproj",
577
+ ExpectedDependencyCount = 2,
578
+ Dependencies = [
579
+ new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
580
+ ],
581
+ Properties = [
582
+ new("TargetFramework", "net8.0", @"projects/library.csproj"),
583
+ ],
584
+ TargetFrameworks = ["net8.0"],
585
+ ReferencedProjectPaths = [],
586
+ }
587
+ ]
588
+ }
589
+ );
590
+ }
449
591
  }
450
592
  }