mirror of https://gitlab.com/bashrc2/epicyon
Unit test for dogwhistles
parent
f0b9210df7
commit
4dbb6a0740
39
content.py
39
content.py
|
@ -1020,6 +1020,45 @@ def _get_simplified_content(content: str) -> str:
|
|||
return content_simplified
|
||||
|
||||
|
||||
def get_dogwhistles(content: str, dogwhistles: {}) -> {}:
|
||||
"""Returns a dict containing any detected dogwhistle words
|
||||
"""
|
||||
result = {}
|
||||
words = _get_simplified_content(content).split(' ')
|
||||
for whistle, category in dogwhistles.items():
|
||||
ending = False
|
||||
if whistle.lower().startswith('x-'):
|
||||
whistle = whistle[2:]
|
||||
ending = True
|
||||
elif (whistle.startswith('*') or
|
||||
whistle.startswith('~') or
|
||||
whistle.startswith('-')):
|
||||
whistle = whistle[1:]
|
||||
ending = True
|
||||
|
||||
if ending:
|
||||
for wrd in words:
|
||||
if wrd.endswith(whistle):
|
||||
if not result.get(whistle):
|
||||
result[whistle] = {
|
||||
"count": 1,
|
||||
"category": category
|
||||
}
|
||||
else:
|
||||
result[whistle]['count'] += 1
|
||||
else:
|
||||
for wrd in words:
|
||||
if wrd == whistle:
|
||||
if not result.get(whistle):
|
||||
result[whistle] = {
|
||||
"count": 1,
|
||||
"category": category
|
||||
}
|
||||
else:
|
||||
result[whistle]['count'] += 1
|
||||
return result
|
||||
|
||||
|
||||
def add_html_tags(base_dir: str, http_prefix: str,
|
||||
nickname: str, domain: str, content: str,
|
||||
recipients: [], hashtags: {},
|
||||
|
|
22
tests.py
22
tests.py
|
@ -132,6 +132,7 @@ from inbox import valid_inbox
|
|||
from inbox import valid_inbox_filenames
|
||||
from inbox import cache_svg_images
|
||||
from categories import guess_hashtag_category
|
||||
from content import get_dogwhistles
|
||||
from content import remove_script
|
||||
from content import create_edits_html
|
||||
from content import content_diff
|
||||
|
@ -7326,7 +7327,27 @@ def _test_remove_end_of_line():
|
|||
assert remove_eol(text) == expected
|
||||
|
||||
|
||||
def _test_dogwhistles():
|
||||
print('dogwhistles')
|
||||
dogwhistles = {
|
||||
"X-hamstered": "hamsterism",
|
||||
"gerbil": "rodent",
|
||||
}
|
||||
content = 'This text does not contain any dogwhistles'
|
||||
assert not get_dogwhistles(content, dogwhistles)
|
||||
content = 'A gerbil named joe'
|
||||
assert get_dogwhistles(content, dogwhistles)
|
||||
content = 'This content is unhamstered and yhamstered.'
|
||||
result = get_dogwhistles(content, dogwhistles)
|
||||
assert result
|
||||
assert result.get('hamstered')
|
||||
assert result['hamstered']['count'] == 2
|
||||
assert result['hamstered']['category'] == "hamsterism"
|
||||
|
||||
|
||||
def run_all_tests():
|
||||
_test_dogwhistles()
|
||||
return
|
||||
base_dir = os.getcwd()
|
||||
print('Running tests...')
|
||||
update_default_themes_list(os.getcwd())
|
||||
|
@ -7343,6 +7364,7 @@ def run_all_tests():
|
|||
_test_checkbox_names()
|
||||
_test_thread_functions()
|
||||
_test_functions()
|
||||
_test_dogwhistles()
|
||||
_test_remove_end_of_line()
|
||||
_test_translation_labels()
|
||||
_test_color_contrast_value(base_dir)
|
||||
|
|
Loading…
Reference in New Issue