diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonElementTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonElementTests.cs index 2a72b17d4d25ea..aa4ee7597879fc 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonElementTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.Tests/Serialization/JsonElementTests.cs @@ -3,7 +3,8 @@ using System.Buffers; using System.IO; -using System.Linq; +using System.Threading; +using System.Threading.Tasks; using Xunit; namespace System.Text.Json.Serialization.Tests @@ -219,9 +220,8 @@ public static void DeepEquals_NotEqualValuesReturnFalse(string value1, string va } [Theory] - [InlineData(10)] - [InlineData(100)] - [InlineData(500)] + [InlineData(5)] + [InlineData(50)] public static void DeepEquals_DeepJsonDocument(int depth) { using JsonDocument jDoc = CreateDeepJsonDocument(depth); @@ -229,12 +229,27 @@ public static void DeepEquals_DeepJsonDocument(int depth) Assert.True(JsonElement.DeepEquals(element, element)); } - [Fact] - public static void DeepEquals_TooDeepJsonDocument_ThrowsInsufficientExecutionStackException() + [ConditionalFact(typeof(PlatformDetection), nameof(PlatformDetection.IsThreadingSupported))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/105490", TestRuntimes.Mono)] + public static async Task DeepEquals_TooDeepJsonDocument_ThrowsInsufficientExecutionStackException() { - using JsonDocument jDoc = CreateDeepJsonDocument(10_000); - JsonElement element = jDoc.RootElement; - Assert.Throws(() => JsonElement.DeepEquals(element, element)); + var tcs = new TaskCompletionSource(); + new Thread(() => + { + try + { + using JsonDocument jDoc = CreateDeepJsonDocument(10_000); + JsonElement element = jDoc.RootElement; + Assert.Throws(() => JsonElement.DeepEquals(element, element)); + tcs.SetResult(true); + } + catch (Exception e) + { + tcs.SetException(e); + } + }, maxStackSize: 100_000) { IsBackground = true }.Start(); + + await tcs.Task; } private static JsonDocument CreateDeepJsonDocument(int depth)