Spaces:
Sleeping
Sleeping
File size: 5,536 Bytes
5caedb4 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
import unittest
from unittest.mock import mock_open, patch
from llm_studio.src.tooltips import (
Tooltip,
Tooltips,
clean_docusaurus_tags,
clean_md_links,
cleanhtml,
read_tooltip_file,
)
class TestTooltipFunctions(unittest.TestCase):
def test_read_tooltip_file_mock_file(self):
mock_content = "This is a test file content\n\nwith multiple lines."
with patch("builtins.open", mock_open(read_data=mock_content)):
result = read_tooltip_file("dummy/path.mdx")
self.assertEqual(result, mock_content)
def test_read_tooltip_file_real_file(self):
expected_content = "Adds EOS token at end of answer."
result = read_tooltip_file(
"documentation/docs/tooltips/experiments/_add-eos-token-to-answer.mdx"
)
self.assertEqual(result, expected_content)
def test_read_tooltip_file_nonexistent_file(self):
with self.assertRaises(FileNotFoundError):
read_tooltip_file("nonexistent/path.mdx")
def test_cleanhtml(self):
html = "<p>This is <b>bold</b> text</p><br><script>Script</script>"
expected = "This is bold textScript"
self.assertEqual(cleanhtml(html), expected)
def test_clean_docusaurus_tags_note(self):
text = ":::info note Some note :::"
expected = "Some note"
self.assertEqual(clean_docusaurus_tags(text), expected)
text = ":::info Note Some note :::"
expected = "Some note"
self.assertEqual(clean_docusaurus_tags(text), expected)
def test_clean_docusaurus_tags_tip(self):
text = ":::tip tip Some tip :::"
expected = "Some tip"
self.assertEqual(clean_docusaurus_tags(text), expected)
def test_clean_md_links(self):
md_text = "This is a [link](https://example.com) in text"
expected = "This is a link in text"
self.assertEqual(clean_md_links(md_text), expected)
class TestTooltip(unittest.TestCase):
def test_tooltip_creation(self):
tooltip = Tooltip("test", "This is a test tooltip")
self.assertEqual(tooltip.name, "test")
self.assertEqual(tooltip.text, "This is a test tooltip")
def test_tooltip_repr(self):
tooltip = Tooltip("test", "This is a test tooltip")
self.assertEqual(repr(tooltip), "test: This is a test tooltip")
class TestTooltips(unittest.TestCase):
@patch("llm_studio.src.tooltips.read_tooltip_file")
def setUp(self, mock_read):
mock_files = [
"documentation/docs/tooltips/section1/_file1.mdx",
"documentation/docs/tooltips/section1/_file2.mdx",
"documentation/docs/tooltips/section2/_file1.mdx",
"documentation/docs/tooltips/section2/_file2.mdx",
]
mock_read.side_effect = ["Content 1", "Content 2", "Content 3", "Content 4"]
self.tooltips = Tooltips(tooltip_files=mock_files)
@patch("llm_studio.src.tooltips.read_tooltip_file")
def test_tooltips_no_underscore(self, mock_read):
mock_files = [
"documentation/docs/tooltips/section1/_file1.mdx",
"documentation/docs/tooltips/section2/file2.mdx",
]
mock_read.side_effect = ["Content 1", "Content 2"]
with self.assertRaises(ValueError):
Tooltips(tooltip_files=mock_files)
def test_tooltips_initialization(self):
self.assertEqual(len(self.tooltips), 4)
self.assertIn("section1_file1", self.tooltips.tooltips)
self.assertIn("section1_file2", self.tooltips.tooltips)
self.assertIn("section2_file1", self.tooltips.tooltips)
self.assertIn("section2_file2", self.tooltips.tooltips)
def test_add_tooltip(self):
length_before = len(self.tooltips)
new_tooltip = Tooltip("new", "New tooltip")
self.tooltips.add_tooltip(new_tooltip)
self.assertEqual(len(self.tooltips), length_before + 1)
self.assertEqual(self.tooltips["new"], "New tooltip")
def test_getitem(self):
self.assertEqual(self.tooltips["section1_file1"], "Content 1")
self.assertEqual(self.tooltips["section1_file2"], "Content 2")
self.assertEqual(self.tooltips["section2_file1"], "Content 3")
self.assertEqual(self.tooltips["section2_file2"], "Content 4")
self.assertIsNone(self.tooltips["nonexistent"])
def test_len(self):
self.assertEqual(len(self.tooltips), 4)
def test_repr(self):
repr_string = repr(self.tooltips)
self.assertIn("section1_file1", repr_string)
self.assertIn("section1_file2", repr_string)
self.assertIn("section2_file1", repr_string)
self.assertIn("section2_file2", repr_string)
def test_get(self):
self.assertEqual(self.tooltips.get("section1_file1"), "Content 1")
self.assertEqual(self.tooltips.get("section1_file1", "default"), "Content 1")
self.assertEqual(self.tooltips.get("nonexistent", "default"), "default")
@patch("llm_studio.src.tooltips.read_tooltip_file")
def test_duplicate_tooltip_name(self, mock_read):
with self.assertRaises(ValueError):
mock_files = [
"documentation/docs/tooltips/section1/_file1.mdx",
"documentation/docs/tooltips/section1/_file2.mdx",
"documentation/docs/tooltips/section1/_file1.mdx",
]
mock_read.side_effect = ["Content 1", "Content 2", "Content 3"]
Tooltips(tooltip_files=mock_files)
if __name__ == "__main__":
unittest.main()
|