dependabot-nuget 0.287.0 → 0.289.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/.gitignore +1 -0
- data/helpers/lib/NuGetUpdater/Directory.Build.targets +17 -0
- data/helpers/lib/NuGetUpdater/Directory.Packages.props +26 -17
- data/helpers/lib/NuGetUpdater/NuGetProjects/NuGet.Packaging/NuGet.Packaging.csproj +0 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/DiscoverCommand.cs +7 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli/Commands/RunCommand.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Analyze.cs +3 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Cli.Test/EntryPointTests.Discover.cs +88 -47
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/AnalyzeWorker.cs +31 -16
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/CompatabilityChecker.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/RequirementArrayConverter.cs +39 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/VersionFinder.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Clone/ShellGitCommandHandler.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscovery.props +7 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/DependencyDiscovery.targets +10 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DiscoveryWorker.cs +64 -53
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DotNetToolsJsonDiscovery.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/GlobalJsonDiscovery.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscovery.cs +17 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/PackagesConfigDiscoveryResult.cs +3 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/ProjectDiscoveryResult.cs +3 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs +429 -12
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/WorkspaceDiscoveryResult.cs +0 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/ExperimentsManager.cs +12 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Files/JsonBuildFile.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/FrameworkChecker/CompatabilityChecker.cs +2 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/NuGetUpdater.Core.csproj +7 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/ApiModel/Job.cs +23 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Run/RunWorker.cs +43 -58
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/TargetFrameworkReporter.targets +13 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/BindingRedirectManager.cs +13 -43
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/DotNetToolsJsonUpdater.cs +4 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/GlobalJsonUpdater.cs +5 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/LockFileUpdater.cs +3 -10
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackageReferenceUpdater.cs +40 -33
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/PackagesConfigUpdater.cs +12 -11
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Updater/UpdaterWorker.cs +16 -12
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/CollectionExtensions.cs +17 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ConsoleLogger.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/DependencyConflictResolver.cs +19 -19
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ILogger.cs +11 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/MSBuildHelper.cs +74 -20
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/NuGetHelper.cs +1 -17
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathComparer.cs +31 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/PathHelper.cs +46 -10
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Utilities/ProjectHelper.cs +96 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Analyze/AnalyzeWorkerTests.cs +135 -3
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTestBase.cs +71 -38
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.PackagesConfig.cs +66 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Proj.cs +11 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs +808 -222
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.cs +477 -97
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/ExpectedDiscoveryResults.cs +5 -9
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/SdkProjectDiscoveryTests.cs +494 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/MockNuGetPackage.cs +46 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/NuGetUpdater.Core.Test.csproj +0 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/RunWorkerTests.cs +401 -77
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/SerializationTests.cs +35 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Run/UpdatedDependencyListTests.cs +60 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TemporaryDirectory.cs +3 -2
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/TestLogger.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/BindingRedirectsTests.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTestBase.cs +8 -4
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackageReference.cs +40 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Update/UpdateWorkerTests.PackagesConfig.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/AssertEx.cs +1 -1
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/LinuxOnlyAttribute.cs +12 -0
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/MSBuildHelperTests.cs +8 -5
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Utilities/PathHelperTests.cs +49 -3
- data/lib/dependabot/nuget/analysis/analysis_json_reader.rb +3 -1
- data/lib/dependabot/nuget/file_fetcher.rb +12 -393
- data/lib/dependabot/nuget/file_parser.rb +23 -54
- data/lib/dependabot/nuget/file_updater.rb +21 -16
- data/lib/dependabot/nuget/native_discovery/native_dependency_file_discovery.rb +2 -9
- data/lib/dependabot/nuget/native_discovery/native_discovery_json_reader.rb +183 -80
- data/lib/dependabot/nuget/native_discovery/native_project_discovery.rb +25 -3
- data/lib/dependabot/nuget/native_discovery/native_workspace_discovery.rb +1 -11
- data/lib/dependabot/nuget/native_helpers.rb +13 -4
- data/lib/dependabot/nuget/native_update_checker/native_update_checker.rb +17 -4
- metadata +15 -12
- data/helpers/lib/NuGetUpdater/NuGetProjects/Directory.Packages.props +0 -29
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Analyze/RequirementConverter.cs +0 -17
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DirectoryPackagesPropsDiscovery.cs +0 -69
- data/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/DirectoryPackagesPropsDiscoveryResult.cs +0 -11
- data/lib/dependabot/nuget/file_fetcher/import_paths_finder.rb +0 -73
- data/lib/dependabot/nuget/file_fetcher/sln_project_paths_finder.rb +0 -60
- data/lib/dependabot/nuget/native_discovery/native_directory_packages_props_discovery.rb +0 -44
data/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs
CHANGED
@@ -7,33 +7,40 @@ public partial class DiscoveryWorkerTests
|
|
7
7
|
public class Projects : DiscoveryWorkerTestBase
|
8
8
|
{
|
9
9
|
[Fact]
|
10
|
-
public async Task
|
10
|
+
public async Task TargetFrameworksAreHonoredInConditions_DirectDiscovery()
|
11
11
|
{
|
12
12
|
await TestDiscoveryAsync(
|
13
|
-
|
13
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
14
|
+
packages:
|
15
|
+
[
|
16
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "net7.0"),
|
17
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "2.0.0", "net7.0"),
|
18
|
+
],
|
14
19
|
workspacePath: "",
|
15
20
|
files: [
|
16
21
|
("myproj.csproj", """
|
17
22
|
<Project Sdk="Microsoft.NET.Sdk">
|
18
23
|
<PropertyGroup>
|
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>
|
20
24
|
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
21
25
|
</PropertyGroup>
|
22
|
-
|
23
|
-
<ItemGroup>
|
24
|
-
<EmbeddedResource Include="ErrorHandling\Resources\**\*.*;Diagnostics\Resources\**\*.*;Diagnostics\Views\**\*.*" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
|
25
|
-
</ItemGroup>
|
26
|
-
|
27
26
|
<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
|
28
|
-
<PackageReference Include="Package.A"
|
27
|
+
<PackageReference Include="Package.A" />
|
29
28
|
<PackageReference Include="Package.B" />
|
30
29
|
</ItemGroup>
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
</Project>
|
31
|
+
"""),
|
32
|
+
("Directory.Build.props", "<Project />"),
|
33
|
+
("Directory.Packages.props", """
|
34
|
+
<Project>
|
35
|
+
<PropertyGroup>
|
36
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
37
|
+
</PropertyGroup>
|
38
|
+
<ItemGroup>
|
39
|
+
<PackageVersion Include="Package.A" Version="1.0.0" />
|
40
|
+
<PackageVersion Include="Package.B" Version="2.0.0" />
|
34
41
|
</ItemGroup>
|
35
42
|
</Project>
|
36
|
-
""")
|
43
|
+
"""),
|
37
44
|
],
|
38
45
|
expectedResult: new()
|
39
46
|
{
|
@@ -42,66 +49,58 @@ public partial class DiscoveryWorkerTests
|
|
42
49
|
new()
|
43
50
|
{
|
44
51
|
FilePath = "myproj.csproj",
|
45
|
-
ExpectedDependencyCount = 3,
|
46
52
|
Dependencies = [
|
47
|
-
new("
|
48
|
-
new("Package.
|
49
|
-
new("Package.B", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
|
53
|
+
new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
54
|
+
new("Package.B", "2.0.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
50
55
|
],
|
51
56
|
Properties = [
|
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"),
|
53
57
|
new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
|
54
58
|
],
|
55
|
-
TargetFrameworks = ["net7.0",
|
59
|
+
TargetFrameworks = ["net7.0"], // net8.0 has no packages and is not reported
|
56
60
|
ReferencedProjectPaths = [],
|
57
|
-
|
61
|
+
ImportedFiles = [
|
62
|
+
"Directory.Build.props",
|
63
|
+
"Directory.Packages.props",
|
64
|
+
],
|
65
|
+
AdditionalFiles = [],
|
66
|
+
},
|
58
67
|
],
|
59
68
|
}
|
60
69
|
);
|
61
70
|
}
|
62
71
|
|
63
72
|
[Fact]
|
64
|
-
public async Task
|
73
|
+
public async Task TargetFrameworksAreHonoredInConditions_TemporaryProjectDiscovery()
|
65
74
|
{
|
66
75
|
await TestDiscoveryAsync(
|
67
|
-
|
76
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
77
|
+
packages:
|
78
|
+
[
|
79
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.0.0", "net7.0"),
|
80
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "2.0.0", "net7.0"),
|
81
|
+
],
|
68
82
|
workspacePath: "",
|
69
83
|
files: [
|
70
84
|
("myproj.csproj", """
|
71
85
|
<Project Sdk="Microsoft.NET.Sdk">
|
72
86
|
<PropertyGroup>
|
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>
|
74
87
|
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
75
88
|
</PropertyGroup>
|
76
|
-
|
77
|
-
<ItemGroup>
|
78
|
-
<EmbeddedResource Include="ErrorHandling\Resources\**\*.*;Diagnostics\Resources\**\*.*;Diagnostics\Views\**\*.*" Exclude="bin\**;obj\**;**\*.xproj;packages\**;@(EmbeddedResource)" />
|
79
|
-
</ItemGroup>
|
80
|
-
|
81
89
|
<ItemGroup Condition=" '$(TargetFramework)' == 'net7.0' ">
|
82
|
-
<PackageReference Include="
|
83
|
-
<PackageReference Include="
|
84
|
-
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="" />
|
85
|
-
<PackageReference Include="Microsoft.Extensions.PlatformAbstractions" version="1.1.0"></PackageReference>
|
86
|
-
<PackageReference Include="System.Collections.Specialized"><Version>4.3.0</Version></PackageReference>
|
87
|
-
</ItemGroup>
|
88
|
-
|
89
|
-
<ItemGroup Condition=" '$(TargetFramework)' == 'net8.0' ">
|
90
|
-
<Reference Include="System.Xml" />
|
90
|
+
<PackageReference Include="Package.A" />
|
91
|
+
<PackageReference Include="Package.B" />
|
91
92
|
</ItemGroup>
|
92
93
|
</Project>
|
93
94
|
"""),
|
94
95
|
("Directory.Build.props", "<Project />"),
|
95
96
|
("Directory.Packages.props", """
|
96
|
-
<Project
|
97
|
+
<Project>
|
97
98
|
<PropertyGroup>
|
98
99
|
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
99
100
|
</PropertyGroup>
|
100
101
|
<ItemGroup>
|
101
|
-
<PackageVersion Include="
|
102
|
-
<PackageVersion Include="
|
103
|
-
<PackageVersion Include="System.Google" Version="0.1.0-beta.3" />
|
104
|
-
<PackageVersion Include="System.WebCrawler" Version="1.1.1" />
|
102
|
+
<PackageVersion Include="Package.A" Version="1.0.0" />
|
103
|
+
<PackageVersion Include="Package.B" Version="2.0.0" />
|
105
104
|
</ItemGroup>
|
106
105
|
</Project>
|
107
106
|
"""),
|
@@ -109,81 +108,138 @@ public partial class DiscoveryWorkerTests
|
|
109
108
|
expectedResult: new()
|
110
109
|
{
|
111
110
|
Path = "",
|
112
|
-
ExpectedProjectCount = 2,
|
113
111
|
Projects = [
|
114
112
|
new()
|
115
113
|
{
|
116
114
|
FilePath = "myproj.csproj",
|
117
|
-
ExpectedDependencyCount = 6,
|
118
115
|
Dependencies = [
|
119
|
-
new("
|
120
|
-
new("
|
121
|
-
new("Microsoft.NET.Test.Sdk", "", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
|
122
|
-
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
|
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),
|
116
|
+
new("Package.A", "1.0.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
|
117
|
+
new("Package.B", "2.0.0", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
|
125
118
|
],
|
126
119
|
Properties = [
|
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"),
|
128
120
|
new("ManagePackageVersionsCentrally", "true", "Directory.Packages.props"),
|
129
121
|
new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
|
130
122
|
],
|
131
123
|
TargetFrameworks = ["net7.0", "net8.0"],
|
124
|
+
ReferencedProjectPaths = [],
|
125
|
+
ImportedFiles = [
|
126
|
+
"Directory.Build.props",
|
127
|
+
"Directory.Packages.props",
|
128
|
+
],
|
129
|
+
AdditionalFiles = [],
|
132
130
|
},
|
133
131
|
],
|
134
|
-
DirectoryPackagesProps = new()
|
135
|
-
{
|
136
|
-
FilePath = "Directory.Packages.props",
|
137
|
-
Dependencies = [
|
138
|
-
new("System.Lycos", "3.23.3", DependencyType.PackageVersion, IsDirect: true),
|
139
|
-
new("System.AskJeeves", "2.2.2", DependencyType.PackageVersion, IsDirect: true),
|
140
|
-
new("System.Google", "0.1.0-beta.3", DependencyType.PackageVersion, IsDirect: true),
|
141
|
-
new("System.WebCrawler", "1.1.1", DependencyType.PackageVersion, IsDirect: true),
|
142
|
-
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
|
143
|
-
],
|
144
|
-
},
|
145
132
|
}
|
146
133
|
);
|
147
134
|
}
|
148
135
|
|
149
136
|
[Fact]
|
150
|
-
public async Task
|
137
|
+
public async Task WithDirectoryBuildPropsAndTargets_DirectDiscovery()
|
151
138
|
{
|
152
139
|
await TestDiscoveryAsync(
|
153
|
-
|
140
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
141
|
+
packages:
|
142
|
+
[
|
143
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
144
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
145
|
+
],
|
154
146
|
workspacePath: "",
|
155
147
|
files: [
|
156
148
|
("project.csproj", """
|
157
149
|
<Project Sdk="Microsoft.NET.Sdk">
|
158
|
-
|
159
150
|
<PropertyGroup>
|
160
151
|
<OutputType>Exe</OutputType>
|
161
|
-
<TargetFramework>
|
152
|
+
<TargetFramework>net8.0</TargetFramework>
|
162
153
|
<ImplicitUsings>enable</ImplicitUsings>
|
163
154
|
<Nullable>enable</Nullable>
|
164
155
|
</PropertyGroup>
|
165
|
-
|
166
156
|
</Project>
|
167
157
|
"""),
|
168
158
|
("Directory.Build.props", """
|
169
159
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
170
|
-
|
171
160
|
<ItemGroup>
|
172
|
-
<PackageReference Include="
|
161
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
173
162
|
</ItemGroup>
|
174
|
-
|
175
163
|
</Project>
|
176
164
|
"""),
|
177
165
|
("Directory.Build.targets", """
|
178
166
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
179
|
-
|
180
167
|
<ItemGroup>
|
181
|
-
<PackageReference Include="
|
168
|
+
<PackageReference Include="Package.B" Version="4.5.6">
|
182
169
|
<PrivateAssets>all</PrivateAssets>
|
183
170
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
184
171
|
</PackageReference>
|
185
172
|
</ItemGroup>
|
173
|
+
</Project>
|
174
|
+
"""),
|
175
|
+
],
|
176
|
+
expectedResult: new()
|
177
|
+
{
|
178
|
+
Path = "",
|
179
|
+
Projects = [
|
180
|
+
new()
|
181
|
+
{
|
182
|
+
FilePath = "project.csproj",
|
183
|
+
Dependencies = [
|
184
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
185
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
186
|
+
],
|
187
|
+
Properties = [
|
188
|
+
new("ImplicitUsings", "enable", "project.csproj"),
|
189
|
+
new("Nullable", "enable", "project.csproj"),
|
190
|
+
new("OutputType", "Exe", "project.csproj"),
|
191
|
+
new("TargetFramework", "net8.0", "project.csproj"),
|
192
|
+
],
|
193
|
+
TargetFrameworks = ["net8.0"],
|
194
|
+
ReferencedProjectPaths = [],
|
195
|
+
ImportedFiles = [
|
196
|
+
"Directory.Build.props",
|
197
|
+
"Directory.Build.targets",
|
198
|
+
],
|
199
|
+
AdditionalFiles = [],
|
200
|
+
}
|
201
|
+
],
|
202
|
+
}
|
203
|
+
);
|
204
|
+
}
|
186
205
|
|
206
|
+
[Fact]
|
207
|
+
public async Task WithDirectoryBuildPropsAndTargets_TemporaryProjectDiscovery()
|
208
|
+
{
|
209
|
+
await TestDiscoveryAsync(
|
210
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
211
|
+
packages:
|
212
|
+
[
|
213
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
214
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
215
|
+
],
|
216
|
+
workspacePath: "",
|
217
|
+
files: [
|
218
|
+
("project.csproj", """
|
219
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
220
|
+
<PropertyGroup>
|
221
|
+
<OutputType>Exe</OutputType>
|
222
|
+
<TargetFramework>net8.0</TargetFramework>
|
223
|
+
<ImplicitUsings>enable</ImplicitUsings>
|
224
|
+
<Nullable>enable</Nullable>
|
225
|
+
</PropertyGroup>
|
226
|
+
</Project>
|
227
|
+
"""),
|
228
|
+
("Directory.Build.props", """
|
229
|
+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
230
|
+
<ItemGroup>
|
231
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
232
|
+
</ItemGroup>
|
233
|
+
</Project>
|
234
|
+
"""),
|
235
|
+
("Directory.Build.targets", """
|
236
|
+
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
237
|
+
<ItemGroup>
|
238
|
+
<PackageReference Include="Package.B" Version="4.5.6">
|
239
|
+
<PrivateAssets>all</PrivateAssets>
|
240
|
+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
241
|
+
</PackageReference>
|
242
|
+
</ItemGroup>
|
187
243
|
</Project>
|
188
244
|
"""),
|
189
245
|
],
|
@@ -194,38 +250,131 @@ public partial class DiscoveryWorkerTests
|
|
194
250
|
new()
|
195
251
|
{
|
196
252
|
FilePath = "project.csproj",
|
197
|
-
ExpectedDependencyCount = 3,
|
198
253
|
Dependencies = [
|
199
|
-
new("
|
200
|
-
new("
|
254
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"]),
|
255
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"]),
|
201
256
|
],
|
202
257
|
Properties = [
|
203
258
|
new("ImplicitUsings", "enable", "project.csproj"),
|
204
259
|
new("Nullable", "enable", "project.csproj"),
|
205
260
|
new("OutputType", "Exe", "project.csproj"),
|
206
|
-
new("TargetFramework", "
|
261
|
+
new("TargetFramework", "net8.0", "project.csproj"),
|
207
262
|
],
|
208
|
-
TargetFrameworks = ["
|
209
|
-
|
263
|
+
TargetFrameworks = ["net8.0"],
|
264
|
+
ReferencedProjectPaths = [],
|
265
|
+
ImportedFiles = [
|
266
|
+
"Directory.Build.props",
|
267
|
+
"Directory.Build.targets"
|
268
|
+
],
|
269
|
+
AdditionalFiles = [],
|
270
|
+
}
|
271
|
+
],
|
272
|
+
}
|
273
|
+
);
|
274
|
+
}
|
275
|
+
|
276
|
+
[Fact]
|
277
|
+
public async Task WithGlobalPackageReference_DirectDiscovery()
|
278
|
+
{
|
279
|
+
await TestDiscoveryAsync(
|
280
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
281
|
+
packages:
|
282
|
+
[
|
283
|
+
MockNuGetPackage.CreateSimplePackage("Global.Package", "1.2.3", "net8.0"),
|
284
|
+
],
|
285
|
+
workspacePath: "",
|
286
|
+
files:
|
287
|
+
[
|
288
|
+
("project.csproj", """
|
289
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
290
|
+
<PropertyGroup>
|
291
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
292
|
+
<TargetFramework>net8.0</TargetFramework>
|
293
|
+
</PropertyGroup>
|
294
|
+
</Project>
|
295
|
+
"""),
|
296
|
+
("Directory.Packages.props", """
|
297
|
+
<Project>
|
298
|
+
<ItemGroup>
|
299
|
+
<GlobalPackageReference Include="Global.Package" Version="1.2.3" />
|
300
|
+
</ItemGroup>
|
301
|
+
</Project>
|
302
|
+
"""),
|
303
|
+
],
|
304
|
+
expectedResult: new()
|
305
|
+
{
|
306
|
+
Path = "",
|
307
|
+
Projects = [
|
210
308
|
new()
|
211
309
|
{
|
212
|
-
FilePath = "
|
213
|
-
ExpectedDependencyCount = 1,
|
310
|
+
FilePath = "project.csproj",
|
214
311
|
Dependencies = [
|
215
|
-
new("
|
312
|
+
new("Global.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
216
313
|
],
|
217
|
-
Properties = [
|
218
|
-
|
314
|
+
Properties = [
|
315
|
+
new("ManagePackageVersionsCentrally", "true", "project.csproj"),
|
316
|
+
new("TargetFramework", "net8.0", "project.csproj"),
|
317
|
+
],
|
318
|
+
TargetFrameworks = ["net8.0"],
|
319
|
+
ReferencedProjectPaths = [],
|
320
|
+
ImportedFiles = [
|
321
|
+
"Directory.Packages.props"
|
322
|
+
],
|
323
|
+
AdditionalFiles = [],
|
219
324
|
},
|
325
|
+
],
|
326
|
+
}
|
327
|
+
);
|
328
|
+
}
|
329
|
+
|
330
|
+
[Fact]
|
331
|
+
public async Task WithGlobalPackageReference_TemporaryProjectDiscovery()
|
332
|
+
{
|
333
|
+
await TestDiscoveryAsync(
|
334
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
335
|
+
packages:
|
336
|
+
[
|
337
|
+
MockNuGetPackage.CreateSimplePackage("Global.Package", "1.2.3", "net8.0"),
|
338
|
+
],
|
339
|
+
workspacePath: "",
|
340
|
+
files:
|
341
|
+
[
|
342
|
+
("project.csproj", """
|
343
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
344
|
+
<PropertyGroup>
|
345
|
+
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
|
346
|
+
<TargetFramework>net8.0</TargetFramework>
|
347
|
+
</PropertyGroup>
|
348
|
+
</Project>
|
349
|
+
"""),
|
350
|
+
("Directory.Packages.props", """
|
351
|
+
<Project>
|
352
|
+
<ItemGroup>
|
353
|
+
<GlobalPackageReference Include="Global.Package" Version="1.2.3" />
|
354
|
+
</ItemGroup>
|
355
|
+
</Project>
|
356
|
+
"""),
|
357
|
+
],
|
358
|
+
expectedResult: new()
|
359
|
+
{
|
360
|
+
Path = "",
|
361
|
+
Projects = [
|
220
362
|
new()
|
221
363
|
{
|
222
|
-
FilePath = "
|
223
|
-
ExpectedDependencyCount = 1,
|
364
|
+
FilePath = "project.csproj",
|
224
365
|
Dependencies = [
|
225
|
-
new("
|
366
|
+
new("Global.Package", "1.2.3", DependencyType.GlobalPackageReference, TargetFrameworks: ["net8.0"]),
|
367
|
+
],
|
368
|
+
Properties = [
|
369
|
+
new("ManagePackageVersionsCentrally", "true", "project.csproj"),
|
370
|
+
new("TargetFramework", "net8.0", "project.csproj"),
|
371
|
+
],
|
372
|
+
TargetFrameworks = ["net8.0"],
|
373
|
+
ReferencedProjectPaths = [],
|
374
|
+
ImportedFiles = [
|
375
|
+
"Directory.Packages.props"
|
226
376
|
],
|
227
|
-
|
228
|
-
TargetFrameworks = [],
|
377
|
+
AdditionalFiles = [],
|
229
378
|
},
|
230
379
|
],
|
231
380
|
}
|
@@ -233,134 +382,271 @@ public partial class DiscoveryWorkerTests
|
|
233
382
|
}
|
234
383
|
|
235
384
|
[Fact]
|
236
|
-
public async Task
|
385
|
+
public async Task WithPackagesProps_DirectDiscovery()
|
237
386
|
{
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
387
|
+
await TestDiscoveryAsync(
|
388
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
389
|
+
packages:
|
390
|
+
[
|
391
|
+
MockNuGetPackage.CentralPackageVersionsPackage,
|
392
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net7.0"),
|
393
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net7.0"),
|
394
|
+
MockNuGetPackage.CreateSimplePackage("Global.Package", "7.8.9", "net7.0"),
|
395
|
+
],
|
396
|
+
workspacePath: "",
|
397
|
+
files: [
|
398
|
+
("myproj.csproj", """
|
399
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
400
|
+
<PropertyGroup>
|
401
|
+
<TargetFramework>net7.0</TargetFramework>
|
402
|
+
</PropertyGroup>
|
403
|
+
<ItemGroup>
|
404
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
405
|
+
<PackageReference Include="Package.B" />
|
406
|
+
</ItemGroup>
|
407
|
+
</Project>
|
408
|
+
"""),
|
409
|
+
("Packages.props", """
|
410
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
411
|
+
<ItemGroup>
|
412
|
+
<GlobalPackageReference Include="Global.Package" Version="7.8.9" />
|
413
|
+
<PackageReference Update="@(GlobalPackageReference)" PrivateAssets="Build" />
|
414
|
+
<PackageReference Update="Package.B" Version="4.5.6" />
|
415
|
+
</ItemGroup>
|
416
|
+
</Project>
|
417
|
+
"""),
|
418
|
+
("Directory.Build.targets", """
|
419
|
+
<Project>
|
420
|
+
<!-- this forces `Packages.props` to be imported -->
|
421
|
+
<Sdk Name="Microsoft.Build.CentralPackageVersions" Version="2.1.3" />
|
422
|
+
</Project>
|
423
|
+
"""),
|
424
|
+
],
|
425
|
+
expectedResult: new()
|
426
|
+
{
|
427
|
+
Path = "",
|
428
|
+
Projects = [
|
429
|
+
new()
|
430
|
+
{
|
431
|
+
FilePath = "myproj.csproj",
|
432
|
+
Dependencies = [
|
433
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
434
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
435
|
+
new("Global.Package", "7.8.9", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
436
|
+
],
|
437
|
+
Properties = [
|
438
|
+
new("TargetFramework", "net7.0", "myproj.csproj"),
|
439
|
+
],
|
440
|
+
TargetFrameworks = ["net7.0"],
|
441
|
+
ReferencedProjectPaths = [],
|
442
|
+
ImportedFiles = [
|
443
|
+
"Directory.Build.targets",
|
444
|
+
"NUGET_PACKAGES/microsoft.build.centralpackageversions/2.1.3/Sdk/Sdk.props", // this is an artifact of the package cache existing next to the csproj
|
445
|
+
"NUGET_PACKAGES/microsoft.build.centralpackageversions/2.1.3/Sdk/Sdk.targets", // this is an artifact of the package cache existing next to the csproj
|
446
|
+
"Packages.props",
|
447
|
+
],
|
448
|
+
AdditionalFiles = [],
|
449
|
+
},
|
255
450
|
],
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
<Project Sdk="Microsoft.NET.Sdk">
|
260
|
-
<PropertyGroup>
|
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>
|
262
|
-
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
263
|
-
</PropertyGroup>
|
451
|
+
}
|
452
|
+
);
|
453
|
+
}
|
264
454
|
|
265
|
-
|
266
|
-
|
267
|
-
|
455
|
+
[Fact]
|
456
|
+
public async Task WithPackagesProps_TemporaryProjectDiscovery()
|
457
|
+
{
|
458
|
+
await TestDiscoveryAsync(
|
459
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
460
|
+
packages:
|
461
|
+
[
|
462
|
+
MockNuGetPackage.CentralPackageVersionsPackage,
|
463
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net7.0"),
|
464
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net7.0"),
|
465
|
+
MockNuGetPackage.CreateSimplePackage("Global.Package", "7.8.9", "net7.0"),
|
466
|
+
],
|
467
|
+
workspacePath: "",
|
468
|
+
files: [
|
469
|
+
("myproj.csproj", """
|
470
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
471
|
+
<PropertyGroup>
|
472
|
+
<TargetFramework>net7.0</TargetFramework>
|
473
|
+
</PropertyGroup>
|
474
|
+
<ItemGroup>
|
475
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
476
|
+
<PackageReference Include="Package.B" />
|
477
|
+
</ItemGroup>
|
478
|
+
</Project>
|
479
|
+
"""),
|
480
|
+
("Packages.props", """
|
481
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
482
|
+
<ItemGroup>
|
483
|
+
<GlobalPackageReference Include="Global.Package" Version="7.8.9" />
|
484
|
+
<PackageReference Update="@(GlobalPackageReference)" PrivateAssets="Build" />
|
485
|
+
<PackageReference Update="Package.B" Version="4.5.6" />
|
486
|
+
</ItemGroup>
|
487
|
+
</Project>
|
488
|
+
"""),
|
489
|
+
("Directory.Build.targets", """
|
490
|
+
<Project>
|
491
|
+
<!-- this forces `Packages.props` to be imported -->
|
492
|
+
<Sdk Name="Microsoft.Build.CentralPackageVersions" Version="2.1.3" />
|
493
|
+
</Project>
|
494
|
+
"""),
|
495
|
+
],
|
496
|
+
expectedResult: new()
|
497
|
+
{
|
498
|
+
Path = "",
|
499
|
+
Projects = [
|
500
|
+
new()
|
501
|
+
{
|
502
|
+
FilePath = "myproj.csproj",
|
503
|
+
ExpectedDependencyCount = 4,
|
504
|
+
Dependencies = [
|
505
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
506
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
507
|
+
new("Global.Package", "7.8.9", DependencyType.GlobalPackageReference, TargetFrameworks: ["net7.0"]),
|
508
|
+
],
|
509
|
+
Properties = [
|
510
|
+
new("TargetFramework", "net7.0", "myproj.csproj"),
|
511
|
+
],
|
512
|
+
TargetFrameworks = ["net7.0"],
|
513
|
+
ReferencedProjectPaths = [],
|
514
|
+
ImportedFiles = [
|
515
|
+
"Directory.Build.targets",
|
516
|
+
"NUGET_PACKAGES/microsoft.build.centralpackageversions/2.1.3/Sdk/Sdk.props", // this is an artifact of the package cache existing next to the csproj
|
517
|
+
"NUGET_PACKAGES/microsoft.build.centralpackageversions/2.1.3/Sdk/Sdk.targets", // this is an artifact of the package cache existing next to the csproj
|
518
|
+
"Packages.props",
|
519
|
+
],
|
520
|
+
AdditionalFiles = [],
|
521
|
+
},
|
522
|
+
],
|
523
|
+
}
|
524
|
+
);
|
525
|
+
}
|
268
526
|
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
527
|
+
[Fact]
|
528
|
+
public async Task ReturnsDependenciesThatCannotBeEvaluated_DirectDiscovery()
|
529
|
+
{
|
530
|
+
await TestDiscoveryAsync(
|
531
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
532
|
+
packages:
|
533
|
+
[
|
534
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
535
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
536
|
+
],
|
537
|
+
workspacePath: "",
|
538
|
+
files: [
|
539
|
+
("myproj.csproj", """
|
540
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
541
|
+
<PropertyGroup>
|
542
|
+
<TargetFramework>net8.0</TargetFramework>
|
543
|
+
</PropertyGroup>
|
544
|
+
<ItemGroup>
|
545
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
546
|
+
<PackageReference Include="Package.B" Version="$(ThisPropertyCannotBeResolved)" />
|
547
|
+
</ItemGroup>
|
548
|
+
</Project>
|
549
|
+
""")
|
550
|
+
],
|
551
|
+
expectedResult: new()
|
552
|
+
{
|
553
|
+
Path = "",
|
554
|
+
Projects = [
|
555
|
+
new()
|
556
|
+
{
|
557
|
+
FilePath = "myproj.csproj",
|
558
|
+
Dependencies = [
|
559
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
560
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
561
|
+
],
|
562
|
+
Properties = [
|
563
|
+
new("TargetFramework", "net8.0", "myproj.csproj"),
|
564
|
+
],
|
565
|
+
TargetFrameworks = ["net8.0"],
|
566
|
+
ReferencedProjectPaths = [],
|
567
|
+
ImportedFiles = [],
|
568
|
+
AdditionalFiles = [],
|
569
|
+
}
|
570
|
+
],
|
571
|
+
}
|
572
|
+
);
|
573
|
+
}
|
276
574
|
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
</
|
293
|
-
|
294
|
-
|
295
|
-
<
|
296
|
-
|
297
|
-
|
298
|
-
|
575
|
+
[Fact]
|
576
|
+
public async Task ReturnsDependenciesThatCannotBeEvaluated_TemporaryProjectDiscovery()
|
577
|
+
{
|
578
|
+
await TestDiscoveryAsync(
|
579
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
580
|
+
packages:
|
581
|
+
[
|
582
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
583
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
584
|
+
],
|
585
|
+
workspacePath: "",
|
586
|
+
files: [
|
587
|
+
("myproj.csproj", """
|
588
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
589
|
+
<PropertyGroup>
|
590
|
+
<TargetFramework>net8.0</TargetFramework>
|
591
|
+
</PropertyGroup>
|
592
|
+
<ItemGroup>
|
593
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
594
|
+
<PackageReference Include="Package.B" Version="$(ThisPropertyCannotBeResolved)" />
|
595
|
+
</ItemGroup>
|
596
|
+
</Project>
|
597
|
+
""")
|
598
|
+
],
|
599
|
+
expectedResult: new()
|
600
|
+
{
|
601
|
+
Path = "",
|
602
|
+
Projects = [
|
603
|
+
new()
|
604
|
+
{
|
605
|
+
FilePath = "myproj.csproj",
|
606
|
+
ExpectedDependencyCount = 2,
|
607
|
+
Dependencies = [
|
608
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
609
|
+
],
|
610
|
+
Properties = [
|
611
|
+
new("TargetFramework", "net8.0", "myproj.csproj"),
|
612
|
+
],
|
613
|
+
TargetFrameworks = ["net8.0"],
|
614
|
+
ReferencedProjectPaths = [],
|
615
|
+
ImportedFiles = [],
|
616
|
+
AdditionalFiles = [],
|
617
|
+
}
|
299
618
|
],
|
300
|
-
|
301
|
-
|
302
|
-
Path = "",
|
303
|
-
ExpectedProjectCount = 5,
|
304
|
-
Projects = [
|
305
|
-
new()
|
306
|
-
{
|
307
|
-
FilePath = "myproj.csproj",
|
308
|
-
ExpectedDependencyCount = 12,
|
309
|
-
Dependencies = [
|
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),
|
313
|
-
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
|
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),
|
316
|
-
],
|
317
|
-
Properties = [
|
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"),
|
319
|
-
new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
|
320
|
-
],
|
321
|
-
TargetFrameworks = ["net7.0", "net8.0"],
|
322
|
-
},
|
323
|
-
new()
|
324
|
-
{
|
325
|
-
FilePath = "Packages.props",
|
326
|
-
Dependencies = [
|
327
|
-
new("Microsoft.SourceLink.GitHub", "1.0.0-beta2-19367-01", DependencyType.GlobalPackageReference, IsDirect: true),
|
328
|
-
new("System.Lycos", "3.23.3", DependencyType.PackageReference, IsDirect: true, IsUpdate: true),
|
329
|
-
new("System.AskJeeves", "2.2.2", DependencyType.PackageReference, IsDirect: true, IsUpdate: true),
|
330
|
-
new("System.Google", "0.1.0-beta.3", DependencyType.PackageReference, IsDirect: true, IsUpdate: true),
|
331
|
-
new("System.WebCrawler", "1.1.1", DependencyType.PackageReference, IsDirect: true, IsUpdate: true),
|
332
|
-
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
|
333
|
-
],
|
334
|
-
},
|
335
|
-
],
|
336
|
-
}
|
337
|
-
);
|
338
|
-
}
|
339
|
-
finally
|
340
|
-
{
|
341
|
-
// Restore the NuGet caches.
|
342
|
-
Environment.SetEnvironmentVariable("NUGET_PACKAGES", nugetPackagesDirectory);
|
343
|
-
Environment.SetEnvironmentVariable("NUGET_HTTP_CACHE_PATH", nugetHttpCacheDirectory);
|
344
|
-
}
|
619
|
+
}
|
620
|
+
);
|
345
621
|
}
|
346
622
|
|
347
623
|
[Fact]
|
348
|
-
public async Task
|
624
|
+
public async Task TargetFrameworkCanBeResolvedFromImplicitlyImportedFile_DirectDiscovery()
|
349
625
|
{
|
350
626
|
await TestDiscoveryAsync(
|
351
|
-
|
627
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
628
|
+
packages:
|
629
|
+
[
|
630
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
631
|
+
],
|
352
632
|
workspacePath: "",
|
353
633
|
files: [
|
354
634
|
("myproj.csproj", """
|
355
635
|
<Project Sdk="Microsoft.NET.Sdk">
|
356
636
|
<PropertyGroup>
|
357
|
-
<TargetFramework
|
637
|
+
<TargetFramework>$(SomeTfm)</TargetFramework>
|
358
638
|
</PropertyGroup>
|
359
639
|
<ItemGroup>
|
360
640
|
<PackageReference Include="Package.A" Version="1.2.3" />
|
361
|
-
<PackageReference Include="Package.B" Version="$(ThisPropertyCannotBeResolved)" />
|
362
641
|
</ItemGroup>
|
363
642
|
</Project>
|
643
|
+
"""),
|
644
|
+
("Directory.Build.props", """
|
645
|
+
<Project>
|
646
|
+
<PropertyGroup>
|
647
|
+
<SomeTfm>net8.0</SomeTfm>
|
648
|
+
</PropertyGroup>
|
649
|
+
</Project>
|
364
650
|
""")
|
365
651
|
],
|
366
652
|
expectedResult: new()
|
@@ -371,15 +657,17 @@ public partial class DiscoveryWorkerTests
|
|
371
657
|
{
|
372
658
|
FilePath = "myproj.csproj",
|
373
659
|
Dependencies = [
|
374
|
-
new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
|
375
660
|
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
376
|
-
new("Package.B", "$(ThisPropertyCannotBeResolved)", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
377
661
|
],
|
378
662
|
Properties = [
|
379
663
|
new("TargetFramework", "net8.0", "myproj.csproj"),
|
380
664
|
],
|
381
665
|
TargetFrameworks = ["net8.0"],
|
382
666
|
ReferencedProjectPaths = [],
|
667
|
+
ImportedFiles = [
|
668
|
+
"Directory.Build.props"
|
669
|
+
],
|
670
|
+
AdditionalFiles = [],
|
383
671
|
}
|
384
672
|
],
|
385
673
|
}
|
@@ -387,10 +675,14 @@ public partial class DiscoveryWorkerTests
|
|
387
675
|
}
|
388
676
|
|
389
677
|
[Fact]
|
390
|
-
public async Task
|
678
|
+
public async Task TargetFrameworkCanBeResolvedFromImplicitlyImportedFile_TemporaryProjectDiscovery()
|
391
679
|
{
|
392
680
|
await TestDiscoveryAsync(
|
393
|
-
|
681
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
682
|
+
packages:
|
683
|
+
[
|
684
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
685
|
+
],
|
394
686
|
workspacePath: "",
|
395
687
|
files: [
|
396
688
|
("myproj.csproj", """
|
@@ -415,15 +707,9 @@ public partial class DiscoveryWorkerTests
|
|
415
707
|
{
|
416
708
|
Path = "",
|
417
709
|
Projects = [
|
418
|
-
new()
|
419
|
-
{
|
420
|
-
FilePath = "Directory.Build.props",
|
421
|
-
Dependencies = [],
|
422
|
-
},
|
423
710
|
new()
|
424
711
|
{
|
425
712
|
FilePath = "myproj.csproj",
|
426
|
-
ExpectedDependencyCount = 2,
|
427
713
|
Dependencies = [
|
428
714
|
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
429
715
|
],
|
@@ -433,17 +719,24 @@ public partial class DiscoveryWorkerTests
|
|
433
719
|
],
|
434
720
|
TargetFrameworks = ["net8.0"],
|
435
721
|
ReferencedProjectPaths = [],
|
722
|
+
ImportedFiles = [
|
723
|
+
"Directory.Build.props"
|
724
|
+
],
|
725
|
+
AdditionalFiles = [],
|
436
726
|
}
|
437
|
-
]
|
727
|
+
],
|
438
728
|
}
|
439
729
|
);
|
440
730
|
}
|
441
731
|
|
442
|
-
[
|
732
|
+
[Theory]
|
733
|
+
[InlineData(true)]
|
734
|
+
[InlineData(false)]
|
443
735
|
|
444
|
-
public async Task NoDependenciesReturnedIfNoTargetFrameworkCanBeResolved()
|
736
|
+
public async Task NoDependenciesReturnedIfNoTargetFrameworkCanBeResolved(bool useDirectDiscovery)
|
445
737
|
{
|
446
738
|
await TestDiscoveryAsync(
|
739
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = useDirectDiscovery },
|
447
740
|
packages: [],
|
448
741
|
workspacePath: "",
|
449
742
|
files: [
|
@@ -467,10 +760,14 @@ public partial class DiscoveryWorkerTests
|
|
467
760
|
}
|
468
761
|
|
469
762
|
[Fact]
|
470
|
-
public async Task
|
763
|
+
public async Task WildcardVersionNumberIsResolved()
|
471
764
|
{
|
472
765
|
await TestDiscoveryAsync(
|
473
|
-
|
766
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
767
|
+
packages:
|
768
|
+
[
|
769
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3", "net8.0"),
|
770
|
+
],
|
474
771
|
workspacePath: "",
|
475
772
|
files: [
|
476
773
|
("myproj.csproj", """
|
@@ -491,15 +788,16 @@ public partial class DiscoveryWorkerTests
|
|
491
788
|
new()
|
492
789
|
{
|
493
790
|
FilePath = "myproj.csproj",
|
494
|
-
ExpectedDependencyCount = 2,
|
495
791
|
Dependencies = [
|
496
|
-
new("Some.Package", "1
|
792
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
497
793
|
],
|
498
794
|
Properties = [
|
499
795
|
new("TargetFramework", "net8.0", "myproj.csproj"),
|
500
796
|
],
|
501
797
|
TargetFrameworks = ["net8.0"],
|
502
798
|
ReferencedProjectPaths = [],
|
799
|
+
ImportedFiles = [],
|
800
|
+
AdditionalFiles = [],
|
503
801
|
}
|
504
802
|
]
|
505
803
|
}
|
@@ -507,9 +805,60 @@ public partial class DiscoveryWorkerTests
|
|
507
805
|
}
|
508
806
|
|
509
807
|
[Fact]
|
510
|
-
public async Task
|
808
|
+
public async Task DiscoverReportsTransitivePackageVersionsWithFourPartsForMultipleTargetFrameworks_DirectDiscovery()
|
809
|
+
{
|
810
|
+
await TestDiscoveryAsync(
|
811
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
812
|
+
packages:
|
813
|
+
[
|
814
|
+
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")])]),
|
815
|
+
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>())]),
|
816
|
+
],
|
817
|
+
workspacePath: "",
|
818
|
+
files:
|
819
|
+
[
|
820
|
+
("myproj.csproj", """
|
821
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
822
|
+
<PropertyGroup>
|
823
|
+
<TargetFrameworks>net7.0;net8.0</TargetFrameworks>
|
824
|
+
</PropertyGroup>
|
825
|
+
<ItemGroup>
|
826
|
+
<PackageReference Include="Some.Package" Version="1.2.3.4" />
|
827
|
+
</ItemGroup>
|
828
|
+
</Project>
|
829
|
+
""")
|
830
|
+
],
|
831
|
+
expectedResult: new()
|
832
|
+
{
|
833
|
+
Path = "",
|
834
|
+
Projects = [
|
835
|
+
new()
|
836
|
+
{
|
837
|
+
FilePath = "myproj.csproj",
|
838
|
+
Dependencies = [
|
839
|
+
new("Some.Package", "1.2.3.4", DependencyType.PackageReference, TargetFrameworks: ["net7.0"], IsDirect: true),
|
840
|
+
new("Some.Package", "1.2.3.4", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
841
|
+
new("Transitive.Dependency", "5.6.7.8", DependencyType.Unknown, TargetFrameworks: ["net7.0"], IsTransitive: true),
|
842
|
+
new("Transitive.Dependency", "5.6.7.8", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true),
|
843
|
+
],
|
844
|
+
Properties = [
|
845
|
+
new("TargetFrameworks", "net7.0;net8.0", "myproj.csproj"),
|
846
|
+
],
|
847
|
+
TargetFrameworks = ["net7.0", "net8.0"],
|
848
|
+
ReferencedProjectPaths = [],
|
849
|
+
ImportedFiles = [],
|
850
|
+
AdditionalFiles = [],
|
851
|
+
}
|
852
|
+
],
|
853
|
+
}
|
854
|
+
);
|
855
|
+
}
|
856
|
+
|
857
|
+
[Fact]
|
858
|
+
public async Task DiscoverReportsTransitivePackageVersionsWithFourPartsForMultipleTargetFrameworks_TemporaryProjectDiscovery()
|
511
859
|
{
|
512
860
|
await TestDiscoveryAsync(
|
861
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
513
862
|
packages:
|
514
863
|
[
|
515
864
|
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")])]),
|
@@ -536,7 +885,6 @@ public partial class DiscoveryWorkerTests
|
|
536
885
|
new()
|
537
886
|
{
|
538
887
|
FilePath = "myproj.csproj",
|
539
|
-
ExpectedDependencyCount = 3,
|
540
888
|
Dependencies = [
|
541
889
|
new("Some.Package", "1.2.3.4", DependencyType.PackageReference, TargetFrameworks: ["net7.0", "net8.0"], IsDirect: true),
|
542
890
|
new("Transitive.Dependency", "5.6.7.8", DependencyType.Unknown, TargetFrameworks: ["net7.0", "net8.0"], IsTransitive: true),
|
@@ -546,6 +894,8 @@ public partial class DiscoveryWorkerTests
|
|
546
894
|
],
|
547
895
|
TargetFrameworks = ["net7.0", "net8.0"],
|
548
896
|
ReferencedProjectPaths = [],
|
897
|
+
ImportedFiles = [],
|
898
|
+
AdditionalFiles = [],
|
549
899
|
}
|
550
900
|
],
|
551
901
|
}
|
@@ -553,10 +903,15 @@ public partial class DiscoveryWorkerTests
|
|
553
903
|
}
|
554
904
|
|
555
905
|
[Fact]
|
556
|
-
public async Task
|
906
|
+
public async Task DiscoverReportsPackagesThroughProjectReferenceElements_DirectDiscovery()
|
557
907
|
{
|
558
908
|
await TestDiscoveryAsync(
|
559
|
-
|
909
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
910
|
+
packages:
|
911
|
+
[
|
912
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
913
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
914
|
+
],
|
560
915
|
workspacePath: "test",
|
561
916
|
files:
|
562
917
|
[
|
@@ -591,22 +946,99 @@ public partial class DiscoveryWorkerTests
|
|
591
946
|
new()
|
592
947
|
{
|
593
948
|
FilePath = "unit-tests.csproj",
|
594
|
-
ExpectedDependencyCount = 2,
|
595
949
|
Dependencies = [
|
596
|
-
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
950
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true),
|
951
|
+
new("Package.B", "4.5.6", DependencyType.Unknown, TargetFrameworks: ["net8.0"], IsTransitive: true)
|
952
|
+
],
|
953
|
+
ReferencedProjectPaths = [
|
954
|
+
"../src/helpers.csproj",
|
597
955
|
],
|
598
956
|
Properties = [
|
599
957
|
new("TargetFramework", "net8.0", @"test/unit-tests.csproj"),
|
600
958
|
],
|
601
959
|
TargetFrameworks = ["net8.0"],
|
960
|
+
ImportedFiles = [],
|
961
|
+
AdditionalFiles = [],
|
962
|
+
},
|
963
|
+
new()
|
964
|
+
{
|
965
|
+
FilePath = "../src/helpers.csproj",
|
966
|
+
Dependencies = [
|
967
|
+
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
968
|
+
],
|
969
|
+
Properties = [
|
970
|
+
new("TargetFramework", "net8.0", @"src/helpers.csproj"),
|
971
|
+
],
|
972
|
+
TargetFrameworks = ["net8.0"],
|
973
|
+
ReferencedProjectPaths = [],
|
974
|
+
ImportedFiles = [],
|
975
|
+
AdditionalFiles = [],
|
976
|
+
}
|
977
|
+
]
|
978
|
+
}
|
979
|
+
);
|
980
|
+
}
|
981
|
+
|
982
|
+
[Fact]
|
983
|
+
public async Task DiscoverReportsPackagesThroughProjectReferenceElements_TemporaryProjectDiscovery()
|
984
|
+
{
|
985
|
+
await TestDiscoveryAsync(
|
986
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
987
|
+
packages:
|
988
|
+
[
|
989
|
+
MockNuGetPackage.CreateSimplePackage("Package.A", "1.2.3", "net8.0"),
|
990
|
+
MockNuGetPackage.CreateSimplePackage("Package.B", "4.5.6", "net8.0"),
|
991
|
+
],
|
992
|
+
workspacePath: "test",
|
993
|
+
files:
|
994
|
+
[
|
995
|
+
("test/unit-tests.csproj", """
|
996
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
997
|
+
<PropertyGroup>
|
998
|
+
<TargetFramework>net8.0</TargetFramework>
|
999
|
+
</PropertyGroup>
|
1000
|
+
<ItemGroup>
|
1001
|
+
<ProjectReference Include="..\src\helpers.csproj" />
|
1002
|
+
</ItemGroup>
|
1003
|
+
<ItemGroup>
|
1004
|
+
<PackageReference Include="Package.A" Version="1.2.3" />
|
1005
|
+
</ItemGroup>
|
1006
|
+
</Project>
|
1007
|
+
"""),
|
1008
|
+
("src/helpers.csproj", """
|
1009
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1010
|
+
<PropertyGroup>
|
1011
|
+
<TargetFramework>net8.0</TargetFramework>
|
1012
|
+
</PropertyGroup>
|
1013
|
+
<ItemGroup>
|
1014
|
+
<PackageReference Include="Package.B" Version="4.5.6" />
|
1015
|
+
</ItemGroup>
|
1016
|
+
</Project>
|
1017
|
+
""")
|
1018
|
+
],
|
1019
|
+
expectedResult: new()
|
1020
|
+
{
|
1021
|
+
Path = "test",
|
1022
|
+
Projects = [
|
1023
|
+
new()
|
1024
|
+
{
|
1025
|
+
FilePath = "unit-tests.csproj",
|
1026
|
+
Dependencies = [
|
1027
|
+
new("Package.A", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
1028
|
+
],
|
602
1029
|
ReferencedProjectPaths = [
|
603
|
-
"../src/helpers.csproj"
|
1030
|
+
"../src/helpers.csproj",
|
604
1031
|
],
|
1032
|
+
Properties = [
|
1033
|
+
new("TargetFramework", "net8.0", @"test/unit-tests.csproj"),
|
1034
|
+
],
|
1035
|
+
TargetFrameworks = ["net8.0"],
|
1036
|
+
ImportedFiles = [],
|
1037
|
+
AdditionalFiles = [],
|
605
1038
|
},
|
606
1039
|
new()
|
607
1040
|
{
|
608
1041
|
FilePath = "../src/helpers.csproj",
|
609
|
-
ExpectedDependencyCount = 2,
|
610
1042
|
Dependencies = [
|
611
1043
|
new("Package.B", "4.5.6", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
612
1044
|
],
|
@@ -615,6 +1047,8 @@ public partial class DiscoveryWorkerTests
|
|
615
1047
|
],
|
616
1048
|
TargetFrameworks = ["net8.0"],
|
617
1049
|
ReferencedProjectPaths = [],
|
1050
|
+
ImportedFiles = [],
|
1051
|
+
AdditionalFiles = [],
|
618
1052
|
}
|
619
1053
|
]
|
620
1054
|
}
|
@@ -625,7 +1059,10 @@ public partial class DiscoveryWorkerTests
|
|
625
1059
|
public async Task DiscoverReportsPackagesThroughSolutionFilesNotInTheSameDirectoryTreeAsTheProjects()
|
626
1060
|
{
|
627
1061
|
await TestDiscoveryAsync(
|
628
|
-
packages:
|
1062
|
+
packages:
|
1063
|
+
[
|
1064
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3", "net8.0"),
|
1065
|
+
],
|
629
1066
|
workspacePath: "solutions",
|
630
1067
|
files:
|
631
1068
|
[
|
@@ -667,7 +1104,6 @@ public partial class DiscoveryWorkerTests
|
|
667
1104
|
new()
|
668
1105
|
{
|
669
1106
|
FilePath = "../projects/library.csproj",
|
670
|
-
ExpectedDependencyCount = 2,
|
671
1107
|
Dependencies = [
|
672
1108
|
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
673
1109
|
],
|
@@ -676,6 +1112,156 @@ public partial class DiscoveryWorkerTests
|
|
676
1112
|
],
|
677
1113
|
TargetFrameworks = ["net8.0"],
|
678
1114
|
ReferencedProjectPaths = [],
|
1115
|
+
ImportedFiles = [],
|
1116
|
+
AdditionalFiles = [],
|
1117
|
+
}
|
1118
|
+
]
|
1119
|
+
}
|
1120
|
+
);
|
1121
|
+
}
|
1122
|
+
|
1123
|
+
[Fact]
|
1124
|
+
public async Task DiscoveryWithTargetPlaformVersion_DirectDiscovery()
|
1125
|
+
{
|
1126
|
+
await TestDiscoveryAsync(
|
1127
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = true },
|
1128
|
+
packages:
|
1129
|
+
[
|
1130
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3", "net8.0"),
|
1131
|
+
],
|
1132
|
+
workspacePath: "src",
|
1133
|
+
files:
|
1134
|
+
[
|
1135
|
+
("src/project.csproj", """
|
1136
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1137
|
+
<PropertyGroup>
|
1138
|
+
<TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst</TargetFrameworks>
|
1139
|
+
</PropertyGroup>
|
1140
|
+
<ItemGroup>
|
1141
|
+
<PackageReference Include="Some.Package" Version="1.2.3" />
|
1142
|
+
</ItemGroup>
|
1143
|
+
</Project>
|
1144
|
+
"""),
|
1145
|
+
],
|
1146
|
+
expectedResult: new()
|
1147
|
+
{
|
1148
|
+
Path = "src",
|
1149
|
+
Projects = [
|
1150
|
+
new()
|
1151
|
+
{
|
1152
|
+
FilePath = "project.csproj",
|
1153
|
+
Dependencies = [
|
1154
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0-android"], IsDirect: true),
|
1155
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0-ios"], IsDirect: true),
|
1156
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0-maccatalyst"], IsDirect: true),
|
1157
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0-macos"], IsDirect: true),
|
1158
|
+
],
|
1159
|
+
Properties = [
|
1160
|
+
new("TargetFrameworks", "net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst", @"src/project.csproj"),
|
1161
|
+
],
|
1162
|
+
TargetFrameworks = ["net8.0-android", "net8.0-ios", "net8.0-maccatalyst", "net8.0-macos"],
|
1163
|
+
ReferencedProjectPaths = [],
|
1164
|
+
ImportedFiles = [],
|
1165
|
+
AdditionalFiles = [],
|
1166
|
+
}
|
1167
|
+
]
|
1168
|
+
}
|
1169
|
+
);
|
1170
|
+
}
|
1171
|
+
|
1172
|
+
[Fact]
|
1173
|
+
public async Task DiscoveryWithTargetPlaformVersion_TemporaryProjectDiscovery()
|
1174
|
+
{
|
1175
|
+
await TestDiscoveryAsync(
|
1176
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = false },
|
1177
|
+
packages:
|
1178
|
+
[
|
1179
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3", "net8.0"),
|
1180
|
+
],
|
1181
|
+
workspacePath: "src",
|
1182
|
+
files:
|
1183
|
+
[
|
1184
|
+
("src/project.csproj", """
|
1185
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1186
|
+
<PropertyGroup>
|
1187
|
+
<TargetFrameworks>net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst</TargetFrameworks>
|
1188
|
+
</PropertyGroup>
|
1189
|
+
<ItemGroup>
|
1190
|
+
<PackageReference Include="Some.Package" Version="1.2.3" />
|
1191
|
+
</ItemGroup>
|
1192
|
+
</Project>
|
1193
|
+
"""),
|
1194
|
+
],
|
1195
|
+
expectedResult: new()
|
1196
|
+
{
|
1197
|
+
Path = "src",
|
1198
|
+
Projects = [
|
1199
|
+
new()
|
1200
|
+
{
|
1201
|
+
FilePath = "project.csproj",
|
1202
|
+
Dependencies = [
|
1203
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0-android", "net8.0-ios", "net8.0-maccatalyst", "net8.0-macos"], IsDirect: true)
|
1204
|
+
],
|
1205
|
+
Properties = [
|
1206
|
+
new("TargetFrameworks", "net8.0-ios;net8.0-android;net8.0-macos;net8.0-maccatalyst", @"src/project.csproj"),
|
1207
|
+
],
|
1208
|
+
TargetFrameworks = ["net8.0-android", "net8.0-ios", "net8.0-maccatalyst", "net8.0-macos"],
|
1209
|
+
ReferencedProjectPaths = [],
|
1210
|
+
ImportedFiles = [],
|
1211
|
+
AdditionalFiles = [],
|
1212
|
+
}
|
1213
|
+
]
|
1214
|
+
}
|
1215
|
+
);
|
1216
|
+
}
|
1217
|
+
|
1218
|
+
[Theory]
|
1219
|
+
[InlineData(true)]
|
1220
|
+
[InlineData(false)]
|
1221
|
+
public async Task PackageLockJsonFileIsReported(bool useDirectDiscovery)
|
1222
|
+
{
|
1223
|
+
await TestDiscoveryAsync(
|
1224
|
+
experimentsManager: new ExperimentsManager() { UseDirectDiscovery = useDirectDiscovery },
|
1225
|
+
packages:
|
1226
|
+
[
|
1227
|
+
MockNuGetPackage.CreateSimplePackage("Some.Package", "1.2.3", "net8.0"),
|
1228
|
+
],
|
1229
|
+
workspacePath: "src",
|
1230
|
+
files:
|
1231
|
+
[
|
1232
|
+
("src/project.csproj", """
|
1233
|
+
<Project Sdk="Microsoft.NET.Sdk">
|
1234
|
+
<PropertyGroup>
|
1235
|
+
<TargetFramework>net8.0</TargetFramework>
|
1236
|
+
</PropertyGroup>
|
1237
|
+
<ItemGroup>
|
1238
|
+
<PackageReference Include="Some.Package" Version="1.2.3" />
|
1239
|
+
</ItemGroup>
|
1240
|
+
</Project>
|
1241
|
+
"""),
|
1242
|
+
("src/packages.lock.json", """
|
1243
|
+
{}
|
1244
|
+
"""),
|
1245
|
+
],
|
1246
|
+
expectedResult: new()
|
1247
|
+
{
|
1248
|
+
Path = "src",
|
1249
|
+
Projects = [
|
1250
|
+
new()
|
1251
|
+
{
|
1252
|
+
FilePath = "project.csproj",
|
1253
|
+
Dependencies = [
|
1254
|
+
new("Some.Package", "1.2.3", DependencyType.PackageReference, TargetFrameworks: ["net8.0"], IsDirect: true)
|
1255
|
+
],
|
1256
|
+
Properties = [
|
1257
|
+
new("TargetFramework", "net8.0", "src/project.csproj"),
|
1258
|
+
],
|
1259
|
+
TargetFrameworks = ["net8.0"],
|
1260
|
+
ReferencedProjectPaths = [],
|
1261
|
+
ImportedFiles = [],
|
1262
|
+
AdditionalFiles = [
|
1263
|
+
"packages.lock.json"
|
1264
|
+
],
|
679
1265
|
}
|
680
1266
|
]
|
681
1267
|
}
|