Model_Cards_Writing_Tool / tests /test_markdown_rendering.py
GuillaumeSalouHF's picture
fix: isolate uploaded Markdown from application templates
b33130e verified
Raw History Blame
2.72 kB
"""Run with: python -m unittest discover -s tests -v."""
import os
from pathlib import Path
import tempfile
from types import SimpleNamespace
import unittest
from unittest.mock import patch
import middleMan
class FormState(dict):
"""Blank form fixture; named fields are supplied by each test."""
def __missing__(self, key):
return ""
def __getattr__(self, key):
return self[key]
class MarkdownRenderingTests(unittest.TestCase):
def render(self, **values):
state = FormState(markdown_upload="language_model_template1.md", model_name="Example model")
state.update(values)
with patch.object(middleMan, "st", SimpleNamespace(session_state=state)):
return middleMan.parse_into_jinja_markdown()
def test_imported_markdown_preserves_literal_template_syntax(self):
markdown = "# My card\n\n{{ 7 * 7 }}\n{% include 'README.md' %}\n"
self.assertEqual(self.render(uploaded_markdown=markdown), markdown)
def test_empty_import_is_not_replaced_with_a_default_template(self):
self.assertEqual(self.render(uploaded_markdown=""), "")
def test_imported_markdown_is_not_shared_with_another_session(self):
marker = "SESSION_A_ONLY"
self.assertEqual(self.render(uploaded_markdown=marker), marker)
self.assertNotIn(marker, self.render())
def test_only_built_in_templates_can_be_loaded(self):
for filename in ["README.md", "../language_model_template1.md", "/tmp/card.md"]:
with self.subTest(filename=filename), self.assertRaises(ValueError):
self.render(markdown_upload=filename)
def test_built_in_templates_still_render_form_fields(self):
for filename in ["language_model_template1.md", "current_card.md"]:
with self.subTest(filename=filename):
content = self.render(markdown_upload=filename)
self.assertIn("Example model", content)
self.assertNotIn("{{ model_id }}", content)
def test_form_values_are_data_even_for_built_in_templates(self):
self.assertIn("{{ 7 * 7 }}", self.render(model_name="{{ 7 * 7 }}"))
def test_working_directory_cannot_shadow_built_in_templates(self):
original_directory = Path.cwd()
with tempfile.TemporaryDirectory() as directory:
Path(directory, "language_model_template1.md").write_text("SHADOW_TEMPLATE")
try:
os.chdir(directory)
content = self.render()
finally:
os.chdir(original_directory)
self.assertNotIn("SHADOW_TEMPLATE", content)
self.assertIn("Example model", content)
if __name__ == "__main__":
unittest.main()