GuillaumeSalouHF HF Staff
fix: isolate uploaded Markdown from application templates
b33130e verified Download tests/test_markdown_rendering.py from huggingface/Model_Cards_Writing_Tool: direct link, hf CLI and curl.
- Browser
- Download file 2.72 kB
-
https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool/resolve/refs%2Fpr%2F13/tests/test_markdown_rendering.py
- Command line
-
hf download hf://spaces/huggingface/Model_Cards_Writing_Tool@refs/pr/13/tests/test_markdown_rendering.py
-
curl -L -o test_markdown_rendering.py https://huggingface.co/spaces/huggingface/Model_Cards_Writing_Tool/resolve/refs%2Fpr%2F13/tests/test_markdown_rendering.py
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() | |