From 1b57a395d2e0c5138e3f16d69063338d3836ed7c Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Mon, 3 Jul 2023 10:37:52 -0700 Subject: [PATCH] aider: Changed the way `subprocess.run` is mocked in `test_check_for_ctags_success` to return different results for each call. # Context: USER: in `test_check_for_ctags_success` we need to mock `subprocess`.run differently. it will be called twice and needs to return different results for each call. ASSISTANT: To modify the `test_check_for_ctags_success` method in the `tests/test_repomap.py` file, we need to change the way `subprocess.run` is mocked. It will be called twice and needs to return different results for each call. Here are the steps to make the changes: 1. Import `MagicMock` from `unittest.mock`. 2. Replace the `mock_run.return_value` with `mock_run.side_effect` which is a list of `CompletedProcess` objects. The first one simulates a successful call to `ctags --version` and the second one simulates a successful call to `ctags -R`. Here is the *edit block* for the changes: ```python tests/test_repomap.py <<<<<<< ORIGINAL from unittest.mock import patch from subprocess import CompletedProcess def test_check_for_ctags_success(self): with patch("subprocess.run") as mock_run: mock_run.return_value = CompletedProcess( args=["ctags", "--version"], returncode=0, stdout=( b'{"_type": "tag", "name": "status", "path": "aider/main.py", "pattern": "/^ ' b' status = main()$/", "kind": "variable"}' ), ) repo_map = RepoMap() result = repo_map.check_for_ctags() self.assertTrue(result) ======= from unittest.mock import patch, MagicMock from subprocess import CompletedProcess def test_check_for_ctags_success(self): with patch("subprocess.run") as mock_run: mock_run.side_effect = [ CompletedProcess( args=["ctags", "--version"], returncode=0, stdout=b"Universal Ctags 0.0.0(f25b4bb7)", ), CompletedProcess( args=["ctags", "-R"], returncode=0, stdout=b"", ), ] repo_map = RepoMap() result = repo_map.check_for_ctags() self.assertTrue(result) >>>>>>> UPDATED ``` This change will make the `test_check_for_ctags_success` method simulate two calls to `subprocess.run` with different results. --- tests/test_repomap.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/tests/test_repomap.py b/tests/test_repomap.py index 18c9d3c3d..57dbc17fc 100644 --- a/tests/test_repomap.py +++ b/tests/test_repomap.py @@ -88,20 +88,26 @@ print(my_function(3, 4)) result = repo_map.check_for_ctags() self.assertFalse(result) - def test_check_for_ctags_success(self): - with patch("subprocess.run") as mock_run: - mock_run.return_value = CompletedProcess( +from unittest.mock import patch, MagicMock +from subprocess import CompletedProcess + +def test_check_for_ctags_success(self): + with patch("subprocess.run") as mock_run: + mock_run.side_effect = [ + CompletedProcess( args=["ctags", "--version"], returncode=0, - stdout=( - b'{"_type": "tag", "name": "status", "path": "aider/main.py", "pattern": "/^ ' - b' status = main()$/", "kind": "variable"}' - ), - ) - repo_map = RepoMap() - result = repo_map.check_for_ctags() - self.assertTrue(result) - + stdout=b"Universal Ctags 0.0.0(f25b4bb7)", + ), + CompletedProcess( + args=["ctags", "-R"], + returncode=0, + stdout=b"", + ), + ] + repo_map = RepoMap() + result = repo_map.check_for_ctags() + self.assertTrue(result) def test_get_repo_map_without_ctags(self): # Create a temporary directory with a sample Python file containing identifiers test_files = [