From 55998051966b99229351aec741dd8d78762e5fb6 Mon Sep 17 00:00:00 2001 From: Laura Hausmann Date: Sun, 28 Apr 2024 23:46:05 +0200 Subject: [PATCH] [backend/libmfm] Fix code block serialization --- .../LibMfm/Serialization/MfmSerializer.cs | 2 +- Iceshrimp.Tests/Parsing/MfmTests.cs | 23 +++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs index 64b391d1..c0d0a323 100644 --- a/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs +++ b/Iceshrimp.Backend/Core/Helpers/LibMfm/Serialization/MfmSerializer.cs @@ -17,7 +17,7 @@ public static class MfmSerializer { result.Append($"```{mfmCodeBlockNode.Language?.Value ?? ""}\n"); result.Append(mfmCodeBlockNode.Code); - result.Append("```"); + result.Append("\n```"); break; } case MfmMathBlockNode mfmMathBlockNode: diff --git a/Iceshrimp.Tests/Parsing/MfmTests.cs b/Iceshrimp.Tests/Parsing/MfmTests.cs index 4c07e55e..b80a0f94 100644 --- a/Iceshrimp.Tests/Parsing/MfmTests.cs +++ b/Iceshrimp.Tests/Parsing/MfmTests.cs @@ -93,6 +93,29 @@ public class MfmTests MfmSerializer.Serialize(res).Should().BeEquivalentTo(input); } + [TestMethod] + public void TestCodeBlock() + { + const string input = """ + test 123 + ``` + this is a code block + ``` + test 123 + """; + List expected = + [ + new MfmTextNode("test 123\n"), + new MfmCodeBlockNode("this is a code block", null), + new MfmTextNode("\ntest 123") + ]; + var res = Mfm.parse(input); + + AssertionOptions.FormattingOptions.MaxDepth = 100; + res.ToList().Should().Equal(expected, MfmNodeEqual); + MfmSerializer.Serialize(res).Should().BeEquivalentTo(input); + } + [TestMethod] public void Benchmark() {