#!/usr/bin/env python3 """Tests for md_translate.py — run with `python test_md_translate.py`.""" import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent)) import md_translate def test_passthrough_basics(): src = "# Heading\n\n- item\n\n```python\nx=1\n```" assert md_translate.translate(src) == src def test_callout_note(): out = md_translate.translate("> [!NOTE]\n> Be careful") assert '' in out assert "\tBe careful" in out assert "" in out def test_callout_warning_color(): out = md_translate.translate("> [!WARNING]\n> Danger") assert 'color="yellow_bg"' in out assert 'icon="⚠️"' in out def test_columns(): src = "::: columns\n::: column\nLeft\n:::\n::: column\nRight\n:::\n:::" out = md_translate.translate(src) assert "" in out assert out.count("") == 2 assert "" in out assert "\tLeft" in out or "\t\tLeft" in out def test_toggle_children_indented(): src = "
\nMore\nBody line\n
" out = md_translate.translate(src) assert "More" in out assert "\tBody line" in out def test_mention_url(): out = md_translate.translate( "See @[ADR](https://notion.so/X-abcdef0123456789abcdef0123456789).") assert "ADR" in out def test_mention_invalid_plain(): out = md_translate.translate("ping @[Bob](not-an-id)") assert "@Bob" in out assert "mention-page" not in out def test_fence_passthrough_no_transform(): """Lines inside fenced code blocks must pass through verbatim — no callout, columns, or mention transformation applied.""" raw_id = "abcdef0123456789abcdef0123456789" src = ( "```\n" "> [!NOTE]\n" "::: columns\n" f"@[Page]({raw_id})\n" "```" ) out = md_translate.translate(src) # No transformation should have occurred assert "" not in out, "columns must not be emitted inside fence" assert " [!NOTE]" in out assert "::: columns" in out assert f"@[Page]({raw_id})" in out def run_all(): tests = [ test_passthrough_basics, test_callout_note, test_callout_warning_color, test_columns, test_toggle_children_indented, test_mention_url, test_mention_invalid_plain, test_fence_passthrough_no_transform, ] for t in tests: print(f"\n{t.__name__}") t() print("\n" + "=" * 50) print(f"✅ All {len(tests)} tests passed") print("=" * 50) if __name__ == "__main__": run_all()