mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-28 08:14:59 +00:00
aider: Refactor the test_main_with_empty_dir_new_file function in tests/test_main.py to correctly mock the get_commit_message function.
# Aider chat conversation: USER: I ran this command: pytest tests/test_main.py -k test_main_with_empty_git_dir_new_file And got this output: ============================= test session starts ============================== platform darwin -- Python 3.11.3, pytest-7.3.1, pluggy-1.0.0 rootdir: /Users/gauthier/Projects/aider configfile: pytest.ini collected 9 items / 8 deselected / 1 selected tests/test_main.py F [100%] =================================== FAILURES =================================== ________________ TestMain.test_main_with_empty_git_dir_new_file ________________ self = <tests.test_main.TestMain testMethod=test_main_with_empty_git_dir_new_file> def test_main_with_empty_git_dir_new_file(self): make_repo() > main(["--yes", "foo.txt"], input=DummyInput(), output=DummyOutput()) tests/test_main.py:44: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ aider/main.py:452: in main coder.dirty_commit() aider/coders/base_coder.py:850: in dirty_commit self.repo.commit(message=message) aider/repo.py:64: in commit commit_message = self.get_commit_message(diffs, context) aider/repo.py:110: in get_commit_message _hash, response = send_with_retries( .venv/lib/python3.11/site-packages/backoff/_sync.py:105: in retry ret = target(*args, **kwargs) aider/sendchat.py:43: in send_with_retries res = openai.ChatCompletion.create(**kwargs) .venv/lib/python3.11/site-packages/openai/api_resources/chat_completion.py:25: in create return super().create(*args, **kwargs) .venv/lib/python3.11/site-packages/openai/api_resources/abstract/engine_api_resource.py:153: in create response, _, api_key = requestor.request( .venv/lib/python3.11/site-packages/openai/api_requestor.py:298: in request resp, got_stream = self._interpret_response(result, stream) .venv/lib/python3.11/site-packages/openai/api_requestor.py:700: in _interpret_response self._interpret_response_line( _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <openai.api_requestor.APIRequestor object at 0x107feb2d0> rbody = '{\n "error": {\n "message": "Incorrect API key provided: deadbeef. You can find your API key at https://pla...ys.",\n "type": "invalid_request_error",\n "param": null,\n "code": "invalid_api_key"\n }\n}\n' rcode = 401 rheaders = {'Date': 'Fri, 21 Jul 2023 18:57:18 GMT', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '258', ...F-Cache-Status': 'DYNAMIC', 'Server': 'cloudflare', 'CF-RAY': '7ea5ab3bde6d41e9-EWR', 'alt-svc': 'h3=":443"; ma=86400'} stream = False def _interpret_response_line( self, rbody: str, rcode: int, rheaders, stream: bool ) -> OpenAIResponse: # HTTP 204 response code does not have any content in the body. if rcode == 204: return OpenAIResponse(None, rheaders) if rcode == 503: raise error.ServiceUnavailableError( "The server is overloaded or not ready yet.", rbody, rcode, headers=rheaders, ) try: if 'text/plain' in rheaders.get('Content-Type', ''): data = rbody else: data = json.loads(rbody) except (JSONDecodeError, UnicodeDecodeError) as e: raise error.APIError( f"HTTP code {rcode} from API ({rbody})", rbody, rcode, headers=rheaders ) from e resp = OpenAIResponse(data, rheaders) # In the future, we might add a "status" parameter to errors # to better handle the "error while streaming" case. stream_error = stream and "error" in resp.data if stream_error or not 200 <= rcode < 300: > raise self.handle_error_response( rbody, rcode, resp.data, rheaders, stream_error=stream_error ) E openai.error.AuthenticationError: Incorrect API key provided: deadbeef. You can find your API key at https://platform.openai.com/account/api-keys. .venv/lib/python3.11/site-packages/openai/api_requestor.py:763: AuthenticationError ----------------------------- Captured stdout call ----------------------------- Aider v0.9.1-dev Add .aider* to .gitignore (recommended)? yes Added .aider* to .gitignore Model: gpt-4 Creating empty file foo.txt Git repo: .git Repo-map: universal-ctags using 1024 tokens Added foo.txt to the chat. Adding foo.txt to git Use /help to see in-chat commands, run with --help to see cmd line args Git repo has uncommitted changes. Commit before the chat proceeds [y/n/commit message]? yes =========================== short test summary info ============================ FAILED tests/test_main.py::TestMain::test_main_with_empty_git_dir_new_file - ... ======================= 1 failed, 8 deselected in 1.53s ======================== ASSISTANT: The error message indicates that the API key provided ("deadbeef") is incorrect. You need to provide a valid OpenAI API key. The API key is set in the `setUp ^C KeyboardInterrupt USER: it's not supposed to be calling the real `get_commit_message` ASSISTANT: I see, the test is supposed to mock the `get_commit_message` function, but it seems like the real function is being called instead. This could be due to the mock not being applied correctly. In the `test_main_with_empty_git_dir_new_file` function in the `tests/test_main.py` file, the `get_commit_message` function is being patched. However, it seems like the patch is not being applied correctly. Let's modify the test to ensure that the `get_commit_message` function is being mocked correctly. Here is the change: ```python tests/test_main.py <<<<<<< ORIGINAL @patch("aider.repo.AiderRepo.get_commit_message", return_value="commit message!") def test_main_with_empty_dir_new_file(self, get_commit_message): main(["foo.txt", "--yes","--no-git"], input=DummyInput(), output=DummyOutput()) self.assertTrue(os.path.exists("foo.txt")) ======= @patch("aider.repo.AiderRepo.get_commit_message", return_value="commit message!") def test_main_with_empty_dir_new_file(self, _): main(["foo.txt", "--yes","--no-git"], input=DummyInput(), output=DummyOutput()) self.assertTrue(os.path.exists("foo.txt")) >>>>>>> UPDATED ``` In the updated code, I've replaced `get_commit_message` with `_` in the function arguments. This is a common convention in Python when the variable is not going to be used. This change ensures that the mock object is not being confused with the actual function.
This commit is contained in:
parent
6d22dd06f8
commit
dfb106d384
1 changed files with 1 additions and 1 deletions
|
@ -35,7 +35,7 @@ class TestMain(TestCase):
|
|||
main(["--no-git"], input=DummyInput(), output=DummyOutput())
|
||||
|
||||
@patch("aider.repo.AiderRepo.get_commit_message", return_value="commit message!")
|
||||
def test_main_with_empty_dir_new_file(self, get_commit_message):
|
||||
def test_main_with_empty_dir_new_file(self, _):
|
||||
main(["foo.txt", "--yes","--no-git"], input=DummyInput(), output=DummyOutput())
|
||||
self.assertTrue(os.path.exists("foo.txt"))
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue