mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-22 21:34:59 +00:00

# Context: USER: how can i capture the console output of `cmd_tokens`? ASSISTANT: To capture the console output of `cmd_tokens`, you can modify the `test_cmd_tokens` method in the `tests/test_commands.py` file. You can use the `io.StringIO` class to capture the standard output. Here's how you can do it: 1. Import the `io` module at the top of the file. 2. In the `test_cmd_tokens` method, redirect the standard output to an instance of `io.StringIO` before calling `commands.cmd_tokens("")`. 3. After calling `commands.cmd_tokens("")`, you can get the console output from the `io.StringIO` instance. Here is the *edit block* for the changes: ```python tests/test_commands.py <<<<<<< ORIGINAL import codecs import os import shutil import tempfile from unittest import TestCase from aider import models from aider.commands import Commands from aider.io import InputOutput ======= import codecs import os import shutil import tempfile from unittest import TestCase import io from aider import models from aider.commands import Commands from aider.io import InputOutput >>>>>>> UPDATED tests/test_commands.py <<<<<<< ORIGINAL def test_cmd_tokens(self): # Initialize the Commands and InputOutput objects io = InputOutput(pretty=False, yes=True) from aider.coders import Coder coder = Coder.create(models.GPT35, None, io, openai_api_key="deadbeef") commands = Commands(io, coder) commands.cmd_add("foo.txt bar.txt") commands.cmd_tokens("") ======= def test_cmd_tokens(self): # Initialize the Commands and InputOutput objects io = InputOutput(pretty=False, yes=True) from aider.coders import Coder coder = Coder.create(models.GPT35, None, io, openai_api_key="deadbeef") commands = Commands(io, coder) commands.cmd_add("foo.txt bar.txt") # Redirect the standard output to an instance of io.StringIO stdout = io.StringIO() sys.stdout = stdout commands.cmd_tokens("") # Reset the standard output sys.stdout = sys.__stdout__ # Get the console output console_output = stdout.getvalue() print(console_output) >>>>>>> UPDATED ``` Please note that this will only capture the output of `print` statements. If the `cmd_tokens` method writes to the console in a different way (for example, by writing directly to `sys.stdout`), this might not capture that output.
75 lines
2.3 KiB
Python
75 lines
2.3 KiB
Python
import codecs
|
|
import os
|
|
import shutil
|
|
import tempfile
|
|
from unittest import TestCase
|
|
import io
|
|
|
|
from aider import models
|
|
from aider.commands import Commands
|
|
from aider.io import InputOutput
|
|
|
|
|
|
class TestCommands(TestCase):
|
|
def setUp(self):
|
|
self.original_cwd = os.getcwd()
|
|
self.tempdir = tempfile.mkdtemp()
|
|
os.chdir(self.tempdir)
|
|
|
|
def tearDown(self):
|
|
os.chdir(self.original_cwd)
|
|
shutil.rmtree(self.tempdir)
|
|
|
|
def test_cmd_add(self):
|
|
# Initialize the Commands and InputOutput objects
|
|
io = InputOutput(pretty=False, yes=True)
|
|
from aider.coders import Coder
|
|
|
|
coder = Coder.create(models.GPT35, None, io, openai_api_key="deadbeef")
|
|
commands = Commands(io, coder)
|
|
|
|
# Call the cmd_add method with 'foo.txt' and 'bar.txt' as a single string
|
|
commands.cmd_add("foo.txt bar.txt")
|
|
|
|
# Check if both files have been created in the temporary directory
|
|
self.assertTrue(os.path.exists("foo.txt"))
|
|
self.assertTrue(os.path.exists("bar.txt"))
|
|
|
|
def test_cmd_add_bad_encoding(self):
|
|
# Initialize the Commands and InputOutput objects
|
|
io = InputOutput(pretty=False, yes=True)
|
|
from aider.coders import Coder
|
|
|
|
coder = Coder.create(models.GPT35, None, io, openai_api_key="deadbeef")
|
|
commands = Commands(io, coder)
|
|
|
|
# Create a new file foo.bad which will fail to decode as utf-8
|
|
with codecs.open("foo.bad", "w", encoding="iso-8859-15") as f:
|
|
f.write("ÆØÅ") # Characters not present in utf-8
|
|
|
|
commands.cmd_add("foo.bad")
|
|
|
|
self.assertEqual(coder.abs_fnames, set())
|
|
|
|
def test_cmd_tokens(self):
|
|
# Initialize the Commands and InputOutput objects
|
|
io = InputOutput(pretty=False, yes=True)
|
|
from aider.coders import Coder
|
|
|
|
coder = Coder.create(models.GPT35, None, io, openai_api_key="deadbeef")
|
|
commands = Commands(io, coder)
|
|
|
|
commands.cmd_add("foo.txt bar.txt")
|
|
|
|
# Redirect the standard output to an instance of io.StringIO
|
|
stdout = io.StringIO()
|
|
sys.stdout = stdout
|
|
|
|
commands.cmd_tokens("")
|
|
|
|
# Reset the standard output
|
|
sys.stdout = sys.__stdout__
|
|
|
|
# Get the console output
|
|
console_output = stdout.getvalue()
|
|
print(console_output)
|