diff --git a/tests/basic/test_coder.py b/tests/basic/test_coder.py index f18ce5515..e0488b8c2 100644 --- a/tests/basic/test_coder.py +++ b/tests/basic/test_coder.py @@ -905,6 +905,67 @@ This command will print 'Hello, World!' to the console.""" self.assertIsInstance(exc.valid_formats, list) self.assertTrue(len(exc.valid_formats) > 0) + def test_system_prompt_prefix(self): + # Test that system_prompt_prefix is properly set and used + io = InputOutput(yes=True) + test_prefix = "Test prefix. " + + # Create a model with system_prompt_prefix + model = Model("gpt-3.5-turbo") + model.system_prompt_prefix = test_prefix + + coder = Coder.create(model, None, io=io) + + # Get the formatted messages + chunks = coder.format_messages() + messages = chunks.all_messages() + + # Check if the system message contains our prefix + system_message = next(msg for msg in messages if msg["role"] == "system") + self.assertTrue(system_message["content"].startswith(test_prefix)) + + def test_system_prompt_prefix_none(self): + # Test behavior when system_prompt_prefix is None + io = InputOutput(yes=True) + + # Create a model without system_prompt_prefix + model = Model("gpt-3.5-turbo") + model.system_prompt_prefix = None + + coder = Coder.create(model, None, io=io) + + # Get the formatted messages + chunks = coder.format_messages() + messages = chunks.all_messages() + + # Get the system message + system_message = next(msg for msg in messages if msg["role"] == "system") + original_content = coder.fmt_system_prompt(coder.gpt_prompts.main_system) + + # Check that the content matches the original prompt without prefix + self.assertEqual(system_message["content"], original_content) + + def test_system_prompt_prefix_empty(self): + # Test behavior when system_prompt_prefix is empty string + io = InputOutput(yes=True) + + # Create a model with empty system_prompt_prefix + model = Model("gpt-3.5-turbo") + model.system_prompt_prefix = "" + + coder = Coder.create(model, None, io=io) + + # Get the formatted messages + chunks = coder.format_messages() + messages = chunks.all_messages() + + # Get the system message + system_message = next(msg for msg in messages if msg["role"] == "system") + original_content = coder.fmt_system_prompt(coder.gpt_prompts.main_system) + + # Check that the content matches the original prompt without prefix + self.assertEqual(system_message["content"], original_content) + def test_coder_create_with_new_file_oserror(self): with GitTemporaryDirectory(): io = InputOutput(yes=True)