From ca36d082fdf638f9b4ba25b7e0eddc94cd66f6db Mon Sep 17 00:00:00 2001 From: Sudo-Ivan Date: Wed, 14 Jan 2026 13:08:26 -0600 Subject: [PATCH] Update Markdown rendering and add robust identity restoration tests - Updated the MarkdownRenderer to prevent rendering issues with single asterisks and underscores by ensuring they are not surrounded by whitespace. - Introduced new property-based tests for IdentityManager to validate robustness against various input scenarios. - Added tests for Markdown list and link rendering to ensure correct HTML output from Markdown input. --- meshchatx/src/backend/markdown_renderer.py | 4 +- tests/backend/test_property_based.py | 60 ++++++++++++++++++++++ 2 files changed, 62 insertions(+), 2 deletions(-) diff --git a/meshchatx/src/backend/markdown_renderer.py b/meshchatx/src/backend/markdown_renderer.py index a31ee0c..7d50e75 100644 --- a/meshchatx/src/backend/markdown_renderer.py +++ b/meshchatx/src/backend/markdown_renderer.py @@ -72,10 +72,10 @@ class MarkdownRenderer: # Bold and Italic text = re.sub(r"\*\*\*(.*?)\*\*\*", r"\1", text) text = re.sub(r"\*\*(.*?)\*\*", r"\1", text) - text = re.sub(r"\*(.*?)\*", r"\1", text) + text = re.sub(r"\*(?!\s)(.*?)(?\1", text) text = re.sub(r"___(.*?)___", r"\1", text) text = re.sub(r"__(.*?)__", r"\1", text) - text = re.sub(r"_(.*?)_", r"\1", text) + text = re.sub(r"_(?!\s)(.*?)(?\1", text) # Strikethrough text = re.sub(r"~~(.*?)~~", r"\1", text) diff --git a/tests/backend/test_property_based.py b/tests/backend/test_property_based.py index 0511c75..d80cc3b 100644 --- a/tests/backend/test_property_based.py +++ b/tests/backend/test_property_based.py @@ -1,12 +1,15 @@ import html import json import math +import os +import shutil import pytest from hypothesis import HealthCheck, given, settings from hypothesis import strategies as st from meshchatx.src.backend.colour_utils import ColourUtils +from meshchatx.src.backend.identity_manager import IdentityManager from meshchatx.src.backend.interface_config_parser import InterfaceConfigParser from meshchatx.src.backend.lxmf_utils import convert_db_lxmf_message_to_dict from meshchatx.src.backend.markdown_renderer import MarkdownRenderer @@ -337,3 +340,60 @@ def test_markdown_renderer_headers(content): result = MarkdownRenderer.render(input_text) assert "