diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 1deb5644d..434441fca 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -77,6 +77,54 @@ class TestMain(TestCase): self.assertTrue((subdir / "foo.txt").exists()) self.assertTrue((subdir / "bar.txt").exists()) + @patch('aider.main.Path.home') + @patch('aider.main.Path.glob') + @patch('aider.main.os.chdir') + @patch('aider.main.InputOutput') + def test_setup_git_home_existing_repo(self, mock_io, mock_chdir, mock_glob, mock_home): + mock_home.return_value = Path('/home/user') + mock_glob.return_value = [Path('/home/user/repo1/.git'), Path('/home/user/repo2/.git')] + mock_io.return_value.prompt_ask.return_value = '1' + + result = setup_git_home(mock_io.return_value) + + mock_io.return_value.tool_output.assert_called_with("Found git repositories in your home directory:") + mock_io.return_value.prompt_ask.assert_called_once() + mock_chdir.assert_called_once_with(Path('/home/user/repo1')) + self.assertEqual(result, str(Path('/home/user/repo1'))) + + @patch('aider.main.Path.home') + @patch('aider.main.Path.glob') + @patch('aider.main.os.chdir') + @patch('aider.main.InputOutput') + def test_setup_git_home_new_project(self, mock_io, mock_chdir, mock_glob, mock_home): + mock_home.return_value = Path('/home/user') + mock_glob.return_value = [Path('/home/user/repo1/.git'), Path('/home/user/repo2/.git')] + mock_io.return_value.prompt_ask.return_value = 'new_project' + + result = setup_git_home(mock_io.return_value) + + mock_io.return_value.tool_output.assert_called_with("Found git repositories in your home directory:") + mock_io.return_value.prompt_ask.assert_called_once() + mock_chdir.assert_called_once_with(Path('/home/user/new_project')) + self.assertEqual(result, str(Path('/home/user/new_project'))) + + @patch('aider.main.Path.home') + @patch('aider.main.Path.glob') + @patch('aider.main.os.chdir') + @patch('aider.main.InputOutput') + def test_setup_git_home_no_existing_repos(self, mock_io, mock_chdir, mock_glob, mock_home): + mock_home.return_value = Path('/home/user') + mock_glob.return_value = [] + mock_io.return_value.user_input.return_value = 'new_project' + + result = setup_git_home(mock_io.return_value) + + mock_io.return_value.tool_output.assert_not_called() + mock_io.return_value.user_input.assert_called_once_with("Enter a name for your new project directory:") + mock_chdir.assert_called_once_with(Path('/home/user/new_project')) + self.assertEqual(result, str(Path('/home/user/new_project'))) + def test_main_with_git_config_yml(self): make_repo()