From 1d715586f2da476d11ca0f4225be34f0e545626a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2026 03:27:27 +0000 Subject: [PATCH] fix: quote string elements in formatObject array formatting Previously, string values in arrays formatted by formatObject were unquoted (e.g. {Tags=[alpha; beta]}), while string scalar properties were correctly quoted (e.g. {Name="Alice"}). This inconsistency arose because the else-branch in appendFormattedArray used x.ToString() directly instead of the shared appendFormattedValue helper. Fix: use appendFormattedValue in the else-branch so array element formatting is consistent with scalar property formatting. Updated 3 test assertions to reflect the new correct behavior. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/SwaggerProvider.Runtime/RuntimeHelpers.fs | 2 +- tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/SwaggerProvider.Runtime/RuntimeHelpers.fs b/src/SwaggerProvider.Runtime/RuntimeHelpers.fs index 922fa6f4..8193acd0 100644 --- a/src/SwaggerProvider.Runtime/RuntimeHelpers.fs +++ b/src/SwaggerProvider.Runtime/RuntimeHelpers.fs @@ -433,7 +433,7 @@ module RuntimeHelpers = else sb.Append("null") |> ignore else - sb.Append(x.ToString()) |> ignore + appendFormattedValue sb x (x.GetType()) sb.Append(']') |> ignore diff --git a/tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs b/tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs index 326da46d..7f0d003d 100644 --- a/tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs +++ b/tests/SwaggerProvider.Tests/RuntimeHelpersTests.fs @@ -1212,9 +1212,9 @@ module FormatObjectTests = formatObject obj |> shouldEqual "{Label=null}" [] - let ``formatObject formats array property as bracketed list``() = + let ``formatObject formats array property as bracketed list with quoted strings``() = let obj = FmtArray([| "alpha"; "beta" |]) - formatObject obj |> shouldEqual "{Tags=[alpha; beta]}" + formatObject obj |> shouldEqual "{Tags=[\"alpha\"; \"beta\"]}" [] let ``formatObject formats empty array property as empty brackets``() = @@ -1229,7 +1229,7 @@ module FormatObjectTests = [] let ``formatObject formats array with mixed null and non-null elements``() = let obj = FmtArray([| "a"; null; "b" |]) - formatObject obj |> shouldEqual "{Tags=[a; null; b]}" + formatObject obj |> shouldEqual "{Tags=[\"a\"; null; \"b\"]}" [] let ``formatObject formats object with no properties as empty braces``() = @@ -1310,7 +1310,7 @@ module FormatObjectTests = [] let ``formatObject formats Option string array Some as bracketed list``() = let obj = FmtOptionStringArray(Some([| "first"; "second" |])) - formatObject obj |> shouldEqual "{Tags=[first; second]}" + formatObject obj |> shouldEqual "{Tags=[\"first\"; \"second\"]}" [] let ``formatObject formats Option DateOnly array Some as ISO 8601 list``() =