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
|
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,
|
def add_html_tags(base_dir: str, http_prefix: str,
|
||||||
nickname: str, domain: str, content: str,
|
nickname: str, domain: str, content: str,
|
||||||
recipients: [], hashtags: {},
|
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 valid_inbox_filenames
|
||||||
from inbox import cache_svg_images
|
from inbox import cache_svg_images
|
||||||
from categories import guess_hashtag_category
|
from categories import guess_hashtag_category
|
||||||
|
from content import get_dogwhistles
|
||||||
from content import remove_script
|
from content import remove_script
|
||||||
from content import create_edits_html
|
from content import create_edits_html
|
||||||
from content import content_diff
|
from content import content_diff
|
||||||
|
@ -7326,7 +7327,27 @@ def _test_remove_end_of_line():
|
||||||
assert remove_eol(text) == expected
|
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():
|
def run_all_tests():
|
||||||
|
_test_dogwhistles()
|
||||||
|
return
|
||||||
base_dir = os.getcwd()
|
base_dir = os.getcwd()
|
||||||
print('Running tests...')
|
print('Running tests...')
|
||||||
update_default_themes_list(os.getcwd())
|
update_default_themes_list(os.getcwd())
|
||||||
|
@ -7343,6 +7364,7 @@ def run_all_tests():
|
||||||
_test_checkbox_names()
|
_test_checkbox_names()
|
||||||
_test_thread_functions()
|
_test_thread_functions()
|
||||||
_test_functions()
|
_test_functions()
|
||||||
|
_test_dogwhistles()
|
||||||
_test_remove_end_of_line()
|
_test_remove_end_of_line()
|
||||||
_test_translation_labels()
|
_test_translation_labels()
|
||||||
_test_color_contrast_value(base_dir)
|
_test_color_contrast_value(base_dir)
|
||||||
|
|
Loading…
Reference in New Issue