diff --git a/chatmastermind/commands/question.py b/chatmastermind/commands/question.py index da77e1a..785349b 100644 --- a/chatmastermind/commands/question.py +++ b/chatmastermind/commands/question.py @@ -10,6 +10,10 @@ from ..ai_factory import create_ai from ..ai import AI, AIResponse +class QuestionCmdError(Exception): + pass + + def add_file_as_text(question_parts: list[str], file: str) -> None: """ Add the given file as plain text to the question part list. @@ -57,7 +61,12 @@ def create_message(chat: ChatDB, args: argparse.Namespace) -> Message: to the cache directory. """ question_parts = [] - question_list = args.ask if args.ask is not None else [] + if args.create is not None: + question_list = args.create + elif args.ask is not None: + question_list = args.ask + else: + raise QuestionCmdError("No question found") text_files = args.source_text if args.source_text is not None else [] code_files = args.source_code if args.source_code is not None else [] diff --git a/tests/test_question_cmd.py b/tests/test_question_cmd.py index 77d679c..5033e9f 100644 --- a/tests/test_question_cmd.py +++ b/tests/test_question_cmd.py @@ -38,6 +38,8 @@ class TestMessageCreate(TestWithFakeAI): self.args.AI = None self.args.model = None self.args.output_tags = None + self.args.ask = None + self.args.create = None # File 1 : no source code block, only text self.source_file1 = tempfile.NamedTemporaryFile(delete=False) self.source_file1_content = """This is just text. @@ -201,6 +203,21 @@ It is embedded code """)) +class TestCreateOption(TestMessageCreate): + + def test_message_file_created(self) -> None: + self.args.create = ["How does question --create work?"] + self.args.ask = None + cache_dir_files = self.message_list(self.cache_dir) + self.assertEqual(len(cache_dir_files), 0) + create_message(self.chat, self.args) + cache_dir_files = self.message_list(self.cache_dir) + self.assertEqual(len(cache_dir_files), 1) + message = Message.from_file(cache_dir_files[0]) + self.assertIsInstance(message, Message) + self.assertEqual(message.question, Question("How does question --create work?")) # type: ignore [union-attr] + + class TestQuestionCmd(TestWithFakeAI): def setUp(self) -> None: