From 7f0136f8c6f79b64ddfe1abc8aec3813bfdf9668 Mon Sep 17 00:00:00 2001 From: Joowon-Seo Date: Fri, 20 Mar 2026 01:12:35 +0900 Subject: [PATCH] Add boundary tests for JsonValueWriter max nesting depth Verify behavior at the maxNestingDepth boundary. Signed-off-by: Joowon-Seo See gh-49662 --- .../boot/json/JsonValueWriterTests.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java index 10ebb94ce10..d38db8d9889 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java +++ b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/json/JsonValueWriterTests.java @@ -296,6 +296,38 @@ class JsonValueWriterTests { "JSON nesting depth (129) exceeds maximum depth of 128 (current path: [0][0][0][0][0][0][0][0][0][0][0][0]"); } + @Test + void shouldAllowStartingObjectWhenCurrentDepthIsMaxDepth() { + StringBuilder out = new StringBuilder(); + JsonValueWriter writer = new JsonValueWriter(out, 2); + + writer.start(Series.OBJECT); + writer.start(Series.OBJECT); + writer.start(Series.OBJECT); + + writer.end(Series.OBJECT); + writer.end(Series.OBJECT); + writer.end(Series.OBJECT); + + assertThat(out).hasToString("{{{}}}"); + } + + @Test + void shouldAllowStartingArrayWhenCurrentDepthIsMaxDepth() { + StringBuilder out = new StringBuilder(); + JsonValueWriter writer = new JsonValueWriter(out, 2); + + writer.start(Series.ARRAY); + writer.start(Series.ARRAY); + writer.start(Series.ARRAY); + + writer.end(Series.ARRAY); + writer.end(Series.ARRAY); + writer.end(Series.ARRAY); + + assertThat(out).hasToString("[[[]]]"); + } + private String write(V value) { return doWrite((valueWriter) -> valueWriter.write(value)); }