Compare commits

..

1 Commits

Author SHA1 Message Date
4c843d95d3 question cmd: added test module 2023-09-09 08:31:45 +02:00
2 changed files with 4 additions and 34 deletions

View File

@ -1,6 +1,5 @@
import argparse import argparse
from pathlib import Path from pathlib import Path
from itertools import zip_longest
from ..configuration import Config from ..configuration import Config
from ..chat import ChatDB from ..chat import ChatDB
from ..message import Message, Question from ..message import Message, Question
@ -12,26 +11,8 @@ def create_message(chat: ChatDB, args: argparse.Namespace) -> Message:
""" """
Creates (and writes) a new message from the given arguments. Creates (and writes) a new message from the given arguments.
""" """
question_parts = [] # FIXME: add sources to the question
question_list = args.question if args.question is not None else [] message = Message(question=Question(args.question),
source_list = args.source if args.source is not None else []
# FIXME: don't surround all sourced files with ```
# -> do it only if '--source-code-only' is True and no source code
# could be extracted from that file
for question, source in zip_longest(question_list, source_list, fillvalue=None):
if question is not None and source is not None:
with open(source) as r:
question_parts.append(f"{question}\n\n```\n{r.read().strip()}\n```")
elif question is not None:
question_parts.append(question)
elif source is not None:
with open(source) as r:
question_parts.append(f"```\n{r.read().strip()}\n```")
full_question = '\n\n'.join(question_parts)
message = Message(question=Question(full_question),
tags=args.output_tags, # FIXME tags=args.output_tags, # FIXME
ai=args.ai, ai=args.ai,
model=args.model) model=args.model)

View File

@ -20,7 +20,6 @@ class TestMessageCreate(unittest.TestCase):
db_path=Path(self.db_path.name)) db_path=Path(self.db_path.name))
# create arguments mock # create arguments mock
self.args = MagicMock(spec=argparse.Namespace) self.args = MagicMock(spec=argparse.Namespace)
self.args.source = None
self.args.ai = None self.args.ai = None
self.args.model = None self.args.model = None
self.args.output_tags = None self.args.output_tags = None
@ -30,7 +29,7 @@ class TestMessageCreate(unittest.TestCase):
return list(Path(tmp_dir.name).glob('*.[ty]*')) return list(Path(tmp_dir.name).glob('*.[ty]*'))
def test_message_file_created(self) -> None: def test_message_file_created(self) -> None:
self.args.question = ["What is this?"] self.args.question = "What is this?"
cache_dir_files = self.message_list(self.cache_path) cache_dir_files = self.message_list(self.cache_path)
self.assertEqual(len(cache_dir_files), 0) self.assertEqual(len(cache_dir_files), 0)
create_message(self.chat, self.args) create_message(self.chat, self.args)
@ -41,18 +40,8 @@ class TestMessageCreate(unittest.TestCase):
self.assertEqual(message.question, Question("What is this?")) # type: ignore [union-attr] self.assertEqual(message.question, Question("What is this?")) # type: ignore [union-attr]
def test_single_question(self) -> None: def test_single_question(self) -> None:
self.args.question = ["What is this?"] self.args.question = "What is this?"
message = create_message(self.chat, self.args) message = create_message(self.chat, self.args)
self.assertIsInstance(message, Message) self.assertIsInstance(message, Message)
self.assertEqual(message.question, Question("What is this?")) self.assertEqual(message.question, Question("What is this?"))
self.assertEqual(len(message.question.source_code()), 0) self.assertEqual(len(message.question.source_code()), 0)
def test_multipart_question(self) -> None:
self.args.question = ["What is this", "'bard' thing?", "Is it good?"]
message = create_message(self.chat, self.args)
self.assertIsInstance(message, Message)
self.assertEqual(message.question, Question("""What is this
'bard' thing?
Is it good?"""))