From 457aa995dbd9143038cfd157d277678fab0b7c05 Mon Sep 17 00:00:00 2001 From: Corniel Nobel Date: Wed, 31 Jul 2024 17:52:17 +0200 Subject: [PATCH] Fix failing test. --- .../References/NuGetLatestVersions.cs | 40 ++++++++++++++----- .../References/NuGetRepository.cs | 1 - 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/src/CodeAnalysis.TestTools/References/NuGetLatestVersions.cs b/src/CodeAnalysis.TestTools/References/NuGetLatestVersions.cs index ead04c3..11c27b3 100644 --- a/src/CodeAnalysis.TestTools/References/NuGetLatestVersions.cs +++ b/src/CodeAnalysis.TestTools/References/NuGetLatestVersions.cs @@ -3,7 +3,6 @@ namespace CodeAnalysis.TestTools.References; /// Contains NuGet packages and their latest versions. -[Serializable] public sealed class NuGetLatestVersions : Dictionary { /// Initializes a new instance of the class. @@ -12,8 +11,8 @@ public NuGetLatestVersions() { } /// Saves the latests versions to a file. public Task SaveAsync(FileInfo file) { - using var stream = new FileStream(file.FullName, FileMode.Create, FileAccess.Write); - return JsonSerializer.SerializeAsync(stream, this, new JsonSerializerOptions { WriteIndented = true }); + using var stream = new FileStream(file.FullName, SaveOptions); + return JsonSerializer.SerializeAsync(stream, this, JsonOptions); } /// Saves the latests versions to a stream. @@ -27,14 +26,35 @@ public static async Task LoadAsync(FileInfo file) Guard.NotNull(file); if (file.Exists) { - using var stream = new FileStream(file.FullName, FileMode.Open, FileAccess.Read); - return await LoadAsync(stream); + using var stream = new FileStream(file.FullName, LoadOptions); + try + { + return (await JsonSerializer.DeserializeAsync(stream)) ?? []; + } + catch (JsonException) + { + return []; + } } - else return new(); + else return []; } - /// Loads the latests versions from a stream. - [Pure] - public static Task LoadAsync(Stream stream) - => JsonSerializer.DeserializeAsync(stream).AsTask()!; + private static readonly FileStreamOptions LoadOptions = new() + { + Access = FileAccess.Read, + Mode = FileMode.Open, + Options = FileOptions.Asynchronous, + }; + + private static readonly FileStreamOptions SaveOptions = new() + { + Access = FileAccess.Write, + Mode = FileMode.Create, + Options = FileOptions.Asynchronous, + }; + + private static readonly JsonSerializerOptions JsonOptions = new() + { + WriteIndented = true, + }; } diff --git a/src/CodeAnalysis.TestTools/References/NuGetRepository.cs b/src/CodeAnalysis.TestTools/References/NuGetRepository.cs index fb359b5..d0c006d 100644 --- a/src/CodeAnalysis.TestTools/References/NuGetRepository.cs +++ b/src/CodeAnalysis.TestTools/References/NuGetRepository.cs @@ -1,5 +1,4 @@ using NuGet.Common; -using NuGet.Configuration; using NuGet.Packaging; using NuGet.Protocol; using NuGet.Protocol.Core.Types;