Skip to content

Commit 8757d9f

Browse files
Fix shared JSON options for icon database
1 parent 7054ea8 commit 8757d9f

2 files changed

Lines changed: 29 additions & 1 deletion

File tree

src/UniGetUI.Core.Tools.Tests/MetaTests.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,34 @@ public void TestHttpClientInstantiation()
6767
}
6868
}
6969

70+
[Fact]
71+
public void TestJsonSerializerContextsDoNotReuseSharedOptions()
72+
{
73+
var solutionDirectory = FindRepositoryRoot();
74+
var csFiles = Directory
75+
.GetFiles(solutionDirectory, "*.cs", SearchOption.AllDirectories)
76+
.Where(file =>
77+
!file.Contains(@"bin\")
78+
&& !file.Contains(@"obj\")
79+
&& !file.EndsWith(".g.cs")
80+
&& !file.EndsWith("Tests.cs")
81+
);
82+
83+
Regex forbiddenPattern = new(
84+
@"JsonContext\s+\w+\s*=\s*new\(\s*SerializationHelpers\.DefaultOptions\s*\)",
85+
RegexOptions.Multiline
86+
);
87+
88+
foreach (var file in csFiles)
89+
{
90+
var fileContent = File.ReadAllText(file);
91+
Assert.False(
92+
forbiddenPattern.IsMatch(fileContent),
93+
$"File {file} reuses SerializationHelpers.DefaultOptions when constructing a generated JsonSerializerContext. Clone the options first to avoid rebinding the shared resolver."
94+
);
95+
}
96+
}
97+
7098
private static string FindRepositoryRoot()
7199
{
72100
DirectoryInfo? currentDirectory = new(AppDomain.CurrentDomain.BaseDirectory);

src/UniGetUI/AutoUpdater.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ public partial class AutoUpdater
4040
];
4141

4242
private static readonly AutoUpdaterJsonContext ProductInfoJsonContext = new(
43-
SerializationHelpers.DefaultOptions
43+
new JsonSerializerOptions(SerializationHelpers.DefaultOptions)
4444
);
4545

4646
public static Window Window = null!;

0 commit comments

Comments
 (0)