Skip to content

Commit c6c00e7

Browse files
committed
C#: Add tests cases for parsing dotnet restore output to find assets.json files.
1 parent 3a7df99 commit c6c00e7

File tree

2 files changed

+21
-7
lines changed

2 files changed

+21
-7
lines changed

csharp/extractor/Semmle.Extraction.Tests/DotNet.cs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,11 @@ private static IDotNet MakeDotnet(IDotNetCliInvoker dotnetCliInvoker) =>
4343
private static IList<string> MakeDotnetRestoreOutput() =>
4444
new List<string> {
4545
" Determining projects to restore...",
46+
" Writing assets file to disk. Path: /path/to/project.assets.json",
4647
" Restored /path/to/project.csproj (in 1.23 sec).",
4748
" Other output...",
4849
" More output...",
50+
" Assets file has not changed. Skipping assets file writing. Path: /path/to/project2.assets.json",
4951
" Restored /path/to/project2.csproj (in 4.56 sec).",
5052
" Other output...",
5153
};
@@ -99,7 +101,7 @@ public void TestDotnetRestoreProjectToDirectory1()
99101
var dotnet = MakeDotnet(dotnetCliInvoker);
100102

101103
// Execute
102-
dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false);
104+
dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, out var assets);
103105

104106
// Verify
105107
var lastArgs = dotnetCliInvoker.GetLastArgs();
@@ -110,15 +112,18 @@ public void TestDotnetRestoreProjectToDirectory1()
110112
public void TestDotnetRestoreProjectToDirectory2()
111113
{
112114
// Setup
113-
var dotnetCliInvoker = new DotNetCliInvokerStub(new List<string>());
115+
var dotnetCliInvoker = new DotNetCliInvokerStub(MakeDotnetRestoreOutput());
114116
var dotnet = MakeDotnet(dotnetCliInvoker);
115117

116118
// Execute
117-
dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, "myconfig.config");
119+
dotnet.RestoreProjectToDirectory("myproject.csproj", "mypackages", false, out var assets, "myconfig.config");
118120

119121
// Verify
120122
var lastArgs = dotnetCliInvoker.GetLastArgs();
121123
Assert.Equal("restore --no-dependencies \"myproject.csproj\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal --configfile \"myconfig.config\"", lastArgs);
124+
Assert.Equal(2, assets.Count());
125+
Assert.Contains("/path/to/project.assets.json", assets);
126+
Assert.Contains("/path/to/project2.assets.json", assets);
122127
}
123128

124129
[Fact]
@@ -129,14 +134,17 @@ public void TestDotnetRestoreSolutionToDirectory1()
129134
var dotnet = MakeDotnet(dotnetCliInvoker);
130135

131136
// Execute
132-
dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects);
137+
dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects, out var assets);
133138

134139
// Verify
135140
var lastArgs = dotnetCliInvoker.GetLastArgs();
136141
Assert.Equal("restore --no-dependencies \"mysolution.sln\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal", lastArgs);
137142
Assert.Equal(2, projects.Count());
138143
Assert.Contains("/path/to/project.csproj", projects);
139144
Assert.Contains("/path/to/project2.csproj", projects);
145+
Assert.Equal(2, assets.Count());
146+
Assert.Contains("/path/to/project.assets.json", assets);
147+
Assert.Contains("/path/to/project2.assets.json", assets);
140148
}
141149

142150
[Fact]
@@ -148,12 +156,13 @@ public void TestDotnetRestoreSolutionToDirectory2()
148156
dotnetCliInvoker.Success = false;
149157

150158
// Execute
151-
dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects);
159+
dotnet.RestoreSolutionToDirectory("mysolution.sln", "mypackages", false, out var projects, out var assets);
152160

153161
// Verify
154162
var lastArgs = dotnetCliInvoker.GetLastArgs();
155163
Assert.Equal("restore --no-dependencies \"mysolution.sln\" --packages \"mypackages\" /p:DisableImplicitNuGetFallbackFolder=true --verbosity normal", lastArgs);
156164
Assert.Empty(projects);
165+
Assert.Empty(assets);
157166
}
158167

159168
[Fact]

csharp/extractor/Semmle.Extraction.Tests/Runtime.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,16 @@ public DotNetStub(IList<string> runtimes, IList<string> sdks)
1919

2020
public bool New(string folder) => true;
2121

22-
public bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, string? pathToNugetConfig = null) => true;
22+
public bool RestoreProjectToDirectory(string project, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable<string> assets, string? pathToNugetConfig = null)
23+
{
24+
assets = Array.Empty<string>();
25+
return true;
26+
}
2327

24-
public bool RestoreSolutionToDirectory(string solution, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable<string> projects)
28+
public bool RestoreSolutionToDirectory(string solution, string directory, bool forceDotnetRefAssemblyFetching, out IEnumerable<string> projects, out IEnumerable<string> assets)
2529
{
2630
projects = Array.Empty<string>();
31+
assets = Array.Empty<string>();
2732
return true;
2833
}
2934

0 commit comments

Comments
 (0)