From b4fdf167a1f1a41e6cfe30deec30d785ae6171cf Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Wed, 29 Apr 2026 11:17:59 +0000 Subject: [PATCH 1/2] test: add OutputBlock, AnchorLink, and code-block language tests Add four unit tests that cover previously-untested paths in Markdown.ToMd and Markdown.ToHtml: - ToMd preserves fenced code block language specifier (```fsharp) - ToMd serialises OutputBlock non-HTML as a fenced code block - ToMd serialises OutputBlock HTML as raw inline HTML (no fence) - ToHtml renders AnchorLink as a named anchor element All 350 FSharp.Markdown.Tests pass. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- tests/FSharp.Markdown.Tests/Markdown.fs | 42 +++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/tests/FSharp.Markdown.Tests/Markdown.fs b/tests/FSharp.Markdown.Tests/Markdown.fs index 9c91c63d2..d68997f55 100644 --- a/tests/FSharp.Markdown.Tests/Markdown.fs +++ b/tests/FSharp.Markdown.Tests/Markdown.fs @@ -1894,3 +1894,45 @@ let ``ToLatex EmbedParagraphs delegates to Render()`` () = let doc = MarkdownDocument([ EmbedParagraphs(inner, MarkdownRange.zero) ], dict []) let result = Markdown.ToLatex(doc) result |> should contain "latex text" + +// -------------------------------------------------------------------------------------- +// ToMd: untested paragraph types — OutputBlock, code-block language specifier +// -------------------------------------------------------------------------------------- + +[] +let ``ToMd preserves fenced code block language specifier`` () = + // Existing test only checks the code body; this test verifies the language tag is kept. + let md = "```fsharp\nlet x = 1\n```" + let result = toMd md + result |> should contain "```fsharp" + +[] +let ``ToMd serialises OutputBlock non-HTML as fenced code block`` () = + // OutputBlock with a non-HTML kind should be wrapped in a fenced code block. + let doc = MarkdownDocument([ OutputBlock("hello output", "text/plain", None) ], dict []) + let result = Markdown.ToMd(doc, newline = "\n") + result |> should contain "```" + result |> should contain "hello output" + +[] +let ``ToMd serialises OutputBlock HTML as raw HTML`` () = + // OutputBlock with kind "text/html" should emit the HTML directly, not wrapped in a fence. + let doc = MarkdownDocument([ OutputBlock("

output

", "text/html", None) ], dict []) + let result = Markdown.ToMd(doc, newline = "\n") + result |> should contain "

output

" + result |> should not' (contain "```") + +// -------------------------------------------------------------------------------------- +// ToHtml: AnchorLink renders as a named anchor element +// -------------------------------------------------------------------------------------- + +[] +let ``ToHtml renders AnchorLink as named anchor`` () = + // AnchorLink is used internally by ApiDocs to emit in-page anchors. + // It should produce   in HTML output. + let doc = + MarkdownDocument([ Paragraph([ AnchorLink("my-section", MarkdownRange.zero) ], MarkdownRange.zero) ], dict []) + + let result = Markdown.ToHtml(doc) + result |> should contain "name=\"my-section\"" + result |> should contain " Date: Wed, 29 Apr 2026 11:18:02 +0000 Subject: [PATCH 2/2] ci: trigger checks