Compare commits

..

7 Commits

2 changed files with 27 additions and 13 deletions

View File

@ -188,7 +188,7 @@ class Message():
tags: set[Tag] = set()
question: Question
answer: Answer
answer: Optional[Answer] = None
if file_path.suffix == '.txt':
with open(file_path, "r") as fd:
try:
@ -201,9 +201,12 @@ class Message():
return None
text = fd.read().strip().split('\n')
question_idx = text.index(Question.txt_header) + 1
answer_idx = text.index(Answer.txt_header)
question = Question.from_list(text[question_idx:answer_idx])
answer = Answer.from_list(text[answer_idx + 1:])
try:
answer_idx = text.index(Answer.txt_header)
question = Question.from_list(text[question_idx:answer_idx])
answer = Answer.from_list(text[answer_idx + 1:])
except ValueError:
question = Question.from_list(text[question_idx:])
return cls(question, answer, tags, file_path)
else: # '.yaml'
with open(file_path, "r") as fd:

View File

@ -207,7 +207,7 @@ This is a question.
message = Message.from_file(self.file_path)
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
@ -217,17 +217,27 @@ This is a question.
message = Message.from_file(self.file_path_no_tags)
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), set())
self.assertEqual(message.file_path, self.file_path_no_tags)
def test_from_file_txt_no_answer(self) -> None:
message = Message.from_file(self.file_path_no_answer)
self.assertIsInstance(message, Message)
self.assertIsNotNone(message)
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
self.assertEqual(message.file_path, self.file_path_no_answer)
self.assertIsNone(message.answer)
def test_from_file_txt_tags_match(self) -> None:
message = Message.from_file(self.file_path, tags_or={Tag('tag1')})
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
@ -245,7 +255,7 @@ This is a question.
message = Message.from_file(self.file_path_no_tags, tags_not={Tag('tag1')})
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), set())
@ -300,7 +310,7 @@ class MessageFromFileYamlTestCase(CmmTestCase):
message = Message.from_file(self.file_path)
self.assertIsInstance(message, Message)
self.assertIsNotNone(message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
@ -310,7 +320,7 @@ class MessageFromFileYamlTestCase(CmmTestCase):
message = Message.from_file(self.file_path_no_tags)
self.assertIsInstance(message, Message)
self.assertIsNotNone(message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), set())
@ -320,10 +330,11 @@ class MessageFromFileYamlTestCase(CmmTestCase):
message = Message.from_file(self.file_path_no_answer)
self.assertIsInstance(message, Message)
self.assertIsNotNone(message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
self.assertEqual(message.file_path, self.file_path_no_answer)
self.assertIsNone(message.answer)
def test_from_file_not_exists(self) -> None:
file_not_exists = pathlib.Path("example.yaml")
@ -335,7 +346,7 @@ class MessageFromFileYamlTestCase(CmmTestCase):
message = Message.from_file(self.file_path, tags_or={Tag('tag1')})
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), {Tag('tag1'), Tag('tag2')})
@ -353,7 +364,7 @@ class MessageFromFileYamlTestCase(CmmTestCase):
message = Message.from_file(self.file_path_no_tags, tags_not={Tag('tag1')})
self.assertIsNotNone(message)
self.assertIsInstance(message, Message)
if message:
if message: # mypy bug
self.assertEqual(message.question, 'This is a question.')
self.assertEqual(message.answer, 'This is an answer.')
self.assertSetEqual(cast(set[Tag], message.tags), set())