mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-23 05:45:00 +00:00
fix: Improve confirm_ask function in io.py
This commit is contained in:
parent
0b33892137
commit
e5b0fe3dfd
2 changed files with 9 additions and 16 deletions
11
aider/io.py
11
aider/io.py
|
@ -418,8 +418,6 @@ class InputOutput:
|
||||||
return True
|
return True
|
||||||
return text.lower() in valid_responses
|
return text.lower() in valid_responses
|
||||||
|
|
||||||
error_message = f"Please answer with one of: {', '.join(valid_responses)}"
|
|
||||||
|
|
||||||
if self.yes is True:
|
if self.yes is True:
|
||||||
res = "n" if explicit_yes_required else "y"
|
res = "n" if explicit_yes_required else "y"
|
||||||
elif self.yes is False:
|
elif self.yes is False:
|
||||||
|
@ -432,12 +430,17 @@ class InputOutput:
|
||||||
res = prompt(
|
res = prompt(
|
||||||
question,
|
question,
|
||||||
style=Style.from_dict(style),
|
style=Style.from_dict(style),
|
||||||
validator=validator,
|
|
||||||
)
|
)
|
||||||
if not res:
|
if not res:
|
||||||
res = "y" # Default to Yes if no input
|
res = "y" # Default to Yes if no input
|
||||||
break
|
break
|
||||||
# todo: break if res.lower() is a prefix a `valid_responses`
|
res = res.lower()
|
||||||
|
good = any(valid_response.startswith(res) for valid_response in valid_responses)
|
||||||
|
if good:
|
||||||
|
break
|
||||||
|
|
||||||
|
error_message = f"Please answer with one of: {', '.join(valid_responses)}"
|
||||||
|
self.tool_error(error_message)
|
||||||
|
|
||||||
res = res.lower()[0]
|
res = res.lower()[0]
|
||||||
|
|
||||||
|
|
|
@ -101,7 +101,7 @@ class TestInputOutput(unittest.TestCase):
|
||||||
mock_prompt.return_value = "a"
|
mock_prompt.return_value = "a"
|
||||||
result = io.confirm_ask("Are you sure?", group=group)
|
result = io.confirm_ask("Are you sure?", group=group)
|
||||||
self.assertTrue(result)
|
self.assertTrue(result)
|
||||||
self.assertEqual(group.preference, "a")
|
self.assertEqual(group.preference, "all")
|
||||||
mock_prompt.assert_called_once()
|
mock_prompt.assert_called_once()
|
||||||
mock_prompt.reset_mock()
|
mock_prompt.reset_mock()
|
||||||
|
|
||||||
|
@ -115,7 +115,7 @@ class TestInputOutput(unittest.TestCase):
|
||||||
mock_prompt.return_value = "s"
|
mock_prompt.return_value = "s"
|
||||||
result = io.confirm_ask("Are you sure?", group=group)
|
result = io.confirm_ask("Are you sure?", group=group)
|
||||||
self.assertFalse(result)
|
self.assertFalse(result)
|
||||||
self.assertEqual(group.preference, "s")
|
self.assertEqual(group.preference, "skip")
|
||||||
mock_prompt.assert_called_once()
|
mock_prompt.assert_called_once()
|
||||||
mock_prompt.reset_mock()
|
mock_prompt.reset_mock()
|
||||||
|
|
||||||
|
@ -134,16 +134,6 @@ class TestInputOutput(unittest.TestCase):
|
||||||
self.assertNotIn("(A)ll", mock_prompt.call_args[0][0])
|
self.assertNotIn("(A)ll", mock_prompt.call_args[0][0])
|
||||||
mock_prompt.reset_mock()
|
mock_prompt.reset_mock()
|
||||||
|
|
||||||
# Test case 6: explicit_yes_required=True, user tries to select 'All'
|
|
||||||
group.preference = None
|
|
||||||
mock_prompt.return_value = "a"
|
|
||||||
result = io.confirm_ask("Are you sure?", group=group, explicit_yes_required=True)
|
|
||||||
self.assertFalse(result)
|
|
||||||
self.assertIsNone(group.preference)
|
|
||||||
mock_prompt.assert_called_once()
|
|
||||||
self.assertNotIn("(A)ll", mock_prompt.call_args[0][0])
|
|
||||||
mock_prompt.reset_mock()
|
|
||||||
|
|
||||||
@patch("aider.io.prompt")
|
@patch("aider.io.prompt")
|
||||||
def test_confirm_ask_yes_no(self, mock_prompt):
|
def test_confirm_ask_yes_no(self, mock_prompt):
|
||||||
io = InputOutput(pretty=False)
|
io = InputOutput(pretty=False)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue