aider/examples/add-test.md
Paul Gauthier 081781dcf1 copy
2023-05-21 16:00:58 -07:00

5.5 KiB

/Users/gauthier/Projects/aider/.venv/bin/aider tests/test_commands.py
Creating empty file tests/test_commands.py
Added tests/test_commands.py to the chat
Files not tracked in .git:

  • tests/test_commands.py

Add them? y
Added tests/test_commands.py to the git repo
Commit b9cea2c Added new files to the git repo: tests/test_commands.py
Using git repo: .git

add a test for cmd_add that passes in 'foo.txt' and 'bar.txt' and ensures they have both been created after the test. run the test in a tmp dir.

I will add a new test method called test_cmd_add in the tests/test_commands.py file. This test will create a temporary directory, change the current working directory to the temporary directory, and then call the cmd_add method with 'foo.txt' and 'bar.txt' as arguments. After that, it will check if both files have been created in the temporary directory.

Here's the code change:

tests/test_commands.py
<<<<<<< ORIGINAL
=======
import os
import tempfile
from unittest import TestCase
from unittest.mock import MagicMock
from aider.commands import Commands
from aider.io import InputOutput

class TestCommands(TestCase):
    def test_cmd_add(self):
        # Create a temporary directory and change the current working directory
        with tempfile.TemporaryDirectory() as tmpdir:
            os.chdir(tmpdir)

            # Initialize the Commands and InputOutput objects
            io = InputOutput(pretty=False, yes=True)
            coder = MagicMock()
            commands = Commands(io, coder)

            # Call the cmd_add method with 'foo.txt' and 'bar.txt'
            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"))
>>>>>>> UPDATED

This test will ensure that the cmd_add method creates the specified files in the current working directory.

Applied edit to tests/test_commands.py
Commit e2d5212 aider: Added a test method test_cmd_add that creates a temporary directory, calls the cmd_add method with 'foo.txt' and 'bar.txt', and checks if both files have been created in the temporary directory.

/run pytest tests/test_commands.py

============================= test session starts ==============================  
platform darwin -- Python 3.11.3, pytest-7.3.1, pluggy-1.0.0  
rootdir: /Users/gauthier/Projects/aider  
collected 1 item  
  
tests/test_commands.py F                                                 [100%]  
  
=================================== FAILURES ===================================  
__________________________ TestCommands.test_cmd_add ___________________________  
  
self = <tests.test_commands.TestCommands testMethod=test_cmd_add>  
  
    def test_cmd_add(self):  
        # Create a temporary directory and change the current working directory  
        with tempfile.TemporaryDirectory() as tmpdir:  
            os.chdir(tmpdir)  
  
            # Initialize the Commands and InputOutput objects  
            io = InputOutput(pretty=False, yes=True)  
            coder = MagicMock()  
            commands = Commands(io, coder)  
  
            # Call the cmd_add method with 'foo.txt' and 'bar.txt'  
>           commands.cmd_add(["foo.txt", "bar.txt"])  
  
/Users/gauthier/Projects/aider/tests/test_commands.py:20:  
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  
  
self = <aider.commands.Commands object at 0x10b412b50>  
args = ['foo.txt', 'bar.txt']  
  
    def cmd_add(self, args):  
        "Add matching files to the chat session"  
  
        added_fnames = []  
        files = self.coder.get_all_relative_files()  
>       for word in args.split():  
E       AttributeError: 'list' object has no attribute 'split'  
  
/Users/gauthier/Projects/aider/aider/commands.py:161: AttributeError  
=========================== short test summary info ============================  
FAILED tests/test_commands.py::TestCommands::test_cmd_add - AttributeError: '...  
============================== 1 failed in 0.34s ===============================  

Add the output to the chat? [y/n] (y):

It seems that the cmd_add method in aider/commands.py is expecting a string as input, but in the test, we are passing a list. I will update the test to pass a string instead of a list.

Here's the code change:

tests/test_commands.py
<<<<<<< ORIGINAL
            # Call the cmd_add method with 'foo.txt' and 'bar.txt'
            commands.cmd_add(["foo.txt", "bar.txt"])
=======
            # Call the cmd_add method with 'foo.txt' and 'bar.txt' as a single string
            commands.cmd_add("foo.txt bar.txt")
>>>>>>> UPDATED

Now, run the test again with the updated test method:

pytest tests/test_commands.py

Applied edit to tests/test_commands.py
Commit d1551b4 aider: Updated test to pass a string instead of a list when calling cmd_add method.

/run pytest tests/test_commands.py

============================= test session starts ==============================  
platform darwin -- Python 3.11.3, pytest-7.3.1, pluggy-1.0.0  
rootdir: /Users/gauthier/Projects/aider  
collected 1 item  
  
tests/test_commands.py .                                                 [100%]  
  
============================== 1 passed in 0.38s ===============================