diff --git a/chatmastermind/message.py b/chatmastermind/message.py index d88ac5c..ced11bb 100644 --- a/chatmastermind/message.py +++ b/chatmastermind/message.py @@ -517,6 +517,13 @@ class Message(): yaml.dump(data, temp_fd, sort_keys=False) shutil.move(temp_file_path, file_path) + def rm_file(self) -> None: + """ + Delete the message file. Ignore empty file_path and not existing files. + """ + if self.file_path is not None: + self.file_path.unlink(missing_ok=True) + def filter_tags(self, prefix: Optional[str] = None, contain: Optional[str] = None) -> set[Tag]: """ Filter tags based on their prefix (i. e. the tag starts with a given string) diff --git a/tests/test_message.py b/tests/test_message.py index e486ce1..6e39143 100644 --- a/tests/test_message.py +++ b/tests/test_message.py @@ -874,3 +874,22 @@ This is a question. {Answer.txt_header} This is an answer.""" self.assertEqual(self.message.to_str(with_tags=True, with_file=True), expected_output) + + +class MessageRmFileTestCase(unittest.TestCase): + def setUp(self) -> None: + self.file = tempfile.NamedTemporaryFile(delete=False, suffix=msg_suffix) + self.file_path = pathlib.Path(self.file.name) + self.message = Message(Question('This is a question.'), + file_path=self.file_path) + self.message.to_file() + + def tearDown(self) -> None: + self.file.close() + self.file_path.unlink(missing_ok=True) + + def test_rm_file(self) -> None: + assert self.message.file_path + self.assertTrue(self.message.file_path.exists()) + self.message.rm_file() + self.assertFalse(self.message.file_path.exists())