Compare commits
2 Commits
1d6ae0c8e2
...
cede223fdf
| Author | SHA1 | Date | |
|---|---|---|---|
| cede223fdf | |||
| aae158fa0c |
@ -226,20 +226,25 @@ class Message():
|
|||||||
Return only the tags from the given Message file,
|
Return only the tags from the given Message file,
|
||||||
optionally filtered based on prefix.
|
optionally filtered based on prefix.
|
||||||
"""
|
"""
|
||||||
|
tags: set[Tag] = set()
|
||||||
if not file_path.exists():
|
if not file_path.exists():
|
||||||
raise MessageError(f"Message file '{file_path}' does not exist")
|
raise MessageError(f"Message file '{file_path}' does not exist")
|
||||||
if file_path.suffix not in cls.file_suffixes:
|
if file_path.suffix not in cls.file_suffixes:
|
||||||
raise MessageError(f"File type '{file_path.suffix}' is not supported")
|
raise MessageError(f"File type '{file_path.suffix}' is not supported")
|
||||||
if file_path.suffix == '.txt':
|
if file_path.suffix == '.txt':
|
||||||
with open(file_path, "r") as fd:
|
with open(file_path, "r") as fd:
|
||||||
tags = TagLine(fd.readline()).tags(prefix)
|
try:
|
||||||
|
tags = TagLine(fd.readline()).tags(prefix)
|
||||||
|
except TagError:
|
||||||
|
pass # message without tags
|
||||||
else: # '.yaml'
|
else: # '.yaml'
|
||||||
with open(file_path, "r") as fd:
|
with open(file_path, "r") as fd:
|
||||||
data = yaml.load(fd, Loader=yaml.FullLoader)
|
data = yaml.load(fd, Loader=yaml.FullLoader)
|
||||||
if prefix and len(prefix) > 0:
|
if cls.tags_yaml_key in data:
|
||||||
tags = set(sorted([t.strip() for t in data[cls.tags_yaml_key] if t.startswith(prefix)]))
|
if prefix and len(prefix) > 0:
|
||||||
else:
|
tags = set(sorted([t.strip() for t in data[cls.tags_yaml_key] if t.startswith(prefix)]))
|
||||||
tags = set(sorted(data[cls.tags_yaml_key]))
|
else:
|
||||||
|
tags = set(sorted(data[cls.tags_yaml_key]))
|
||||||
return tags
|
return tags
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
|
|||||||
@ -548,6 +548,14 @@ class TagsFromFileTestCase(CmmTestCase):
|
|||||||
This is a question.
|
This is a question.
|
||||||
{Answer.txt_header}
|
{Answer.txt_header}
|
||||||
This is an answer.
|
This is an answer.
|
||||||
|
""")
|
||||||
|
self.file_txt_no_tags = tempfile.NamedTemporaryFile(delete=False, suffix='.txt')
|
||||||
|
self.file_path_txt_no_tags = pathlib.Path(self.file_txt_no_tags.name)
|
||||||
|
with open(self.file_path_txt_no_tags, "w") as fd:
|
||||||
|
fd.write(f"""{Question.txt_header}
|
||||||
|
This is a question.
|
||||||
|
{Answer.txt_header}
|
||||||
|
This is an answer.
|
||||||
""")
|
""")
|
||||||
self.file_yaml = tempfile.NamedTemporaryFile(delete=False, suffix='.yaml')
|
self.file_yaml = tempfile.NamedTemporaryFile(delete=False, suffix='.yaml')
|
||||||
self.file_path_yaml = pathlib.Path(self.file_yaml.name)
|
self.file_path_yaml = pathlib.Path(self.file_yaml.name)
|
||||||
@ -562,6 +570,15 @@ This is an answer.
|
|||||||
- tag2
|
- tag2
|
||||||
- ptag3
|
- ptag3
|
||||||
""")
|
""")
|
||||||
|
self.file_yaml_no_tags = tempfile.NamedTemporaryFile(delete=False, suffix='.yaml')
|
||||||
|
self.file_path_yaml_no_tags = pathlib.Path(self.file_yaml_no_tags.name)
|
||||||
|
with open(self.file_path_yaml_no_tags, "w") as fd:
|
||||||
|
fd.write(f"""
|
||||||
|
{Question.yaml_key}: |-
|
||||||
|
This is a question.
|
||||||
|
{Answer.yaml_key}: |-
|
||||||
|
This is an answer.
|
||||||
|
""")
|
||||||
|
|
||||||
def tearDown(self) -> None:
|
def tearDown(self) -> None:
|
||||||
self.file_txt.close()
|
self.file_txt.close()
|
||||||
@ -573,10 +590,18 @@ This is an answer.
|
|||||||
tags = Message.tags_from_file(self.file_path_txt)
|
tags = Message.tags_from_file(self.file_path_txt)
|
||||||
self.assertSetEqual(tags, {Tag('tag1'), Tag('tag2'), Tag('ptag3')})
|
self.assertSetEqual(tags, {Tag('tag1'), Tag('tag2'), Tag('ptag3')})
|
||||||
|
|
||||||
|
def test_tags_from_file_txt_no_tags(self) -> None:
|
||||||
|
tags = Message.tags_from_file(self.file_path_txt_no_tags)
|
||||||
|
self.assertSetEqual(tags, set())
|
||||||
|
|
||||||
def test_tags_from_file_yaml(self) -> None:
|
def test_tags_from_file_yaml(self) -> None:
|
||||||
tags = Message.tags_from_file(self.file_path_yaml)
|
tags = Message.tags_from_file(self.file_path_yaml)
|
||||||
self.assertSetEqual(tags, {Tag('tag1'), Tag('tag2'), Tag('ptag3')})
|
self.assertSetEqual(tags, {Tag('tag1'), Tag('tag2'), Tag('ptag3')})
|
||||||
|
|
||||||
|
def test_tags_from_file_yaml_no_tags(self) -> None:
|
||||||
|
tags = Message.tags_from_file(self.file_path_yaml_no_tags)
|
||||||
|
self.assertSetEqual(tags, set())
|
||||||
|
|
||||||
def test_tags_from_file_txt_prefix(self) -> None:
|
def test_tags_from_file_txt_prefix(self) -> None:
|
||||||
tags = Message.tags_from_file(self.file_path_txt, prefix='p')
|
tags = Message.tags_from_file(self.file_path_txt, prefix='p')
|
||||||
self.assertSetEqual(tags, {Tag('ptag3')})
|
self.assertSetEqual(tags, {Tag('ptag3')})
|
||||||
@ -628,10 +653,9 @@ class TestTagsFromFile(CmmTestCase):
|
|||||||
expected_tags = self.tag_sets[0]
|
expected_tags = self.tag_sets[0]
|
||||||
self.assertEqual(atags, expected_tags)
|
self.assertEqual(atags, expected_tags)
|
||||||
|
|
||||||
# FIXME
|
def test_tags_from_dir_no_tags(self) -> None:
|
||||||
# def test_tags_from_dir_no_tags(self) -> None:
|
all_tags = Message.tags_from_dir(pathlib.Path(self.temp_dir_no_tags.name))
|
||||||
# all_tags = Message.tags_from_dir(pathlib.Path(self.temp_dir_no_tags.name))
|
self.assertSetEqual(all_tags, set())
|
||||||
# self.assertSetEqual(all_tags, set())
|
|
||||||
|
|
||||||
|
|
||||||
class MessageIDTestCase(CmmTestCase):
|
class MessageIDTestCase(CmmTestCase):
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user