|
|
@@ -10,8 +10,10 @@ using Nuke.Common.Tooling;
|
|
|
|
|
|
public static class ApiDiffValidation
|
|
|
{
|
|
|
+ private static readonly HttpClient s_httpClient = new();
|
|
|
+
|
|
|
public static async Task ValidatePackage(
|
|
|
- Tool apiCompatTool, string packagePath, Version baselineVersion,
|
|
|
+ Tool apiCompatTool, string packagePath, string baselineVersion,
|
|
|
string suppressionFilesFolder, bool updateSuppressionFile)
|
|
|
{
|
|
|
if (baselineVersion is null)
|
|
|
@@ -25,7 +27,7 @@ public static class ApiDiffValidation
|
|
|
Directory.CreateDirectory(suppressionFilesFolder!);
|
|
|
}
|
|
|
|
|
|
- using (var baselineStream = await DownloadBaselinePackage(packagePath, baselineVersion))
|
|
|
+ await using (var baselineStream = await DownloadBaselinePackage(packagePath, baselineVersion))
|
|
|
using (var target = new ZipArchive(File.Open(packagePath, FileMode.Open, FileAccess.Read), ZipArchiveMode.Read))
|
|
|
using (var baseline = new ZipArchive(baselineStream, ZipArchiveMode.Read))
|
|
|
using (Helpers.UseTempDir(out var tempFolder))
|
|
|
@@ -43,7 +45,7 @@ public static class ApiDiffValidation
|
|
|
var baselineDllPath = Path.Combine("baseline", baselineDll.target, baselineDll.entry.Name);
|
|
|
var baselineDllRealPath = Path.Combine(tempFolder, baselineDllPath);
|
|
|
Directory.CreateDirectory(Path.GetDirectoryName(baselineDllRealPath)!);
|
|
|
- using (var baselineDllFile = File.Create(baselineDllRealPath))
|
|
|
+ await using (var baselineDllFile = File.Create(baselineDllRealPath))
|
|
|
{
|
|
|
await baselineDll.entry.Open().CopyToAsync(baselineDllFile);
|
|
|
}
|
|
|
@@ -58,7 +60,7 @@ public static class ApiDiffValidation
|
|
|
var targetDllPath = Path.Combine("target", targetDll.target, targetDll.entry.Name);
|
|
|
var targetDllRealPath = Path.Combine(tempFolder, targetDllPath);
|
|
|
Directory.CreateDirectory(Path.GetDirectoryName(targetDllRealPath)!);
|
|
|
- using (var targetDllFile = File.Create(targetDllRealPath))
|
|
|
+ await using (var targetDllFile = File.Create(targetDllRealPath))
|
|
|
{
|
|
|
await targetDll.entry.Open().CopyToAsync(targetDllFile);
|
|
|
}
|
|
|
@@ -96,7 +98,7 @@ public static class ApiDiffValidation
|
|
|
.ToArray();
|
|
|
}
|
|
|
|
|
|
- static async Task<Stream> DownloadBaselinePackage(string packagePath, Version baselineVersion)
|
|
|
+ static async Task<Stream> DownloadBaselinePackage(string packagePath, string baselineVersion)
|
|
|
{
|
|
|
Build.Information("Downloading {0} baseline package for version {1}", Path.GetFileName(packagePath), baselineVersion);
|
|
|
|
|
|
@@ -106,9 +108,10 @@ public static class ApiDiffValidation
|
|
|
Path.GetFileNameWithoutExtension(packagePath),
|
|
|
"""(\.\d+\.\d+\.\d+)$""", "");
|
|
|
|
|
|
- using var httpClient = new HttpClient();
|
|
|
- using var response = await httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get,
|
|
|
- $"https://www.nuget.org/api/v2/package/{packageId}/{baselineVersion}"));
|
|
|
+ using var response = await s_httpClient.SendAsync(new HttpRequestMessage(HttpMethod.Get,
|
|
|
+ $"https://www.nuget.org/api/v2/package/{packageId}/{baselineVersion}"), HttpCompletionOption.ResponseHeadersRead);
|
|
|
+ response.EnsureSuccessStatusCode();
|
|
|
+
|
|
|
await using var stream = await response.Content.ReadAsStreamAsync();
|
|
|
var memoryStream = new MemoryStream();
|
|
|
await stream.CopyToAsync(memoryStream);
|