From f4f1c0cb1caa28cc366135663c6e6f4db5c16bda Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Sun, 21 May 2023 15:57:44 -0700 Subject: [PATCH] added test example --- examples/add-test.md | 127 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 examples/add-test.md diff --git a/examples/add-test.md b/examples/add-test.md new file mode 100644 index 000000000..a12400483 --- /dev/null +++ b/examples/add-test.md @@ -0,0 +1,127 @@ +> /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: + +```python +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 = +> +> 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 = +> 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: + +```python +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. +> aider/commands.py +> Add these files to the chat? n