From a30a27fa8ae69da0bafbb774c5393db203ce339b Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 13 Aug 2024 05:25:36 -0700 Subject: [PATCH 1/7] feat: add test for main --exit that confirms version_check is called --- tests/basic/test_main.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index f8322d2ef..b007ee35e 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -224,6 +224,11 @@ class TestMain(TestCase): main(["--yes", fname, "--encoding", "iso-8859-15"]) + def test_main_exit_calls_version_check(self): + with patch("aider.main.check_version") as mock_check_version: + main(["--exit"]) + mock_check_version.assert_called_once() + @patch("aider.main.InputOutput") @patch("aider.coders.base_coder.Coder.run") def test_main_message_adds_to_input_history(self, mock_run, MockInputOutput): From 58f06e1f56ccd239709dbe57988fbcc157f687f4 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 13 Aug 2024 05:26:12 -0700 Subject: [PATCH 2/7] feat: add GitTemporaryDirectory to test_main_exit_calls_version_check --- tests/basic/test_main.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index b007ee35e..33bd41714 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -225,9 +225,10 @@ class TestMain(TestCase): main(["--yes", fname, "--encoding", "iso-8859-15"]) def test_main_exit_calls_version_check(self): - with patch("aider.main.check_version") as mock_check_version: - main(["--exit"]) - mock_check_version.assert_called_once() + with GitTemporaryDirectory(): + with patch("aider.main.check_version") as mock_check_version: + main(["--exit"]) + mock_check_version.assert_called_once() @patch("aider.main.InputOutput") @patch("aider.coders.base_coder.Coder.run") From fcf758527a82c498159fd95854b4a8b1f7dcfe89 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 13 Aug 2024 05:29:17 -0700 Subject: [PATCH 3/7] fix: Call check_version in main with input and output arguments --- tests/basic/test_main.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 33bd41714..16f0fcbaa 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -227,7 +227,7 @@ class TestMain(TestCase): def test_main_exit_calls_version_check(self): with GitTemporaryDirectory(): with patch("aider.main.check_version") as mock_check_version: - main(["--exit"]) + main(["--exit"], input=DummyInput(), output=DummyOutput()) mock_check_version.assert_called_once() @patch("aider.main.InputOutput") From cef421dfc0c56a884b0bc3580233af408184dd13 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 13 Aug 2024 05:29:18 -0700 Subject: [PATCH 4/7] feat: Add patch for InputOutput in test_main_exit_calls_version_check --- tests/basic/test_main.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 16f0fcbaa..92afe1688 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -226,9 +226,11 @@ class TestMain(TestCase): def test_main_exit_calls_version_check(self): with GitTemporaryDirectory(): - with patch("aider.main.check_version") as mock_check_version: + with patch("aider.main.check_version") as mock_check_version, \ + patch("aider.main.InputOutput") as mock_input_output: main(["--exit"], input=DummyInput(), output=DummyOutput()) mock_check_version.assert_called_once() + mock_input_output.assert_called_once() @patch("aider.main.InputOutput") @patch("aider.coders.base_coder.Coder.run") From abb375eb7306e2815784dd1cf655f9beff1d4934 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 13 Aug 2024 05:29:21 -0700 Subject: [PATCH 5/7] style: Format code with linter --- tests/basic/test_main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_main.py b/tests/basic/test_main.py index 92afe1688..1560894a0 100644 --- a/tests/basic/test_main.py +++ b/tests/basic/test_main.py @@ -226,8 +226,9 @@ class TestMain(TestCase): def test_main_exit_calls_version_check(self): with GitTemporaryDirectory(): - with patch("aider.main.check_version") as mock_check_version, \ - patch("aider.main.InputOutput") as mock_input_output: + with patch("aider.main.check_version") as mock_check_version, patch( + "aider.main.InputOutput" + ) as mock_input_output: main(["--exit"], input=DummyInput(), output=DummyOutput()) mock_check_version.assert_called_once() mock_input_output.assert_called_once() From 76a4b878b18cd4dddd23b8f6de179846551dd28a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 13 Aug 2024 05:31:04 -0700 Subject: [PATCH 6/7] feat: Add verbose argument to check_version function --- aider/main.py | 4 ++-- aider/versioncheck.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aider/main.py b/aider/main.py index de50dbc70..bb647d55d 100644 --- a/aider/main.py +++ b/aider/main.py @@ -416,11 +416,11 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F return main(argv, input, output, right_repo_root, return_coder=return_coder) if args.just_check_update: - update_available = check_version(io, just_check=True) + update_available = check_version(io, just_check=True, verbose=args.verbose) return 0 if not update_available else 1 if args.check_update: - check_version(io) + check_version(io, verbose=args.verbose) if args.models: models.print_matching_models(io, args.models) diff --git a/aider/versioncheck.py b/aider/versioncheck.py index e9a5f7146..76c405458 100644 --- a/aider/versioncheck.py +++ b/aider/versioncheck.py @@ -10,7 +10,7 @@ from aider import utils from aider.dump import dump # noqa: F401 -def check_version(io, just_check=False): +def check_version(io, just_check=False, verbose=False): fname = Path.home() / ".aider" / "caches" / "versioncheck" if not just_check and fname.exists(): day = 60 * 60 * 24 From ad16cc3c413f057505f8eca570f5944b88866e60 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 13 Aug 2024 05:34:53 -0700 Subject: [PATCH 7/7] fix: Add verbose output for version check --- aider/versioncheck.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/aider/versioncheck.py b/aider/versioncheck.py index 76c405458..5ce90cd35 100644 --- a/aider/versioncheck.py +++ b/aider/versioncheck.py @@ -16,6 +16,9 @@ def check_version(io, just_check=False, verbose=False): day = 60 * 60 * 24 since = time.time() - fname.stat().st_mtime if since < day: + if verbose: + hours = since / 60 / 60 + io.tool_output(f"Too soon to check version: {hours:.1f} hours") return # To keep startup fast, avoid importing this unless needed @@ -27,7 +30,7 @@ def check_version(io, just_check=False, verbose=False): latest_version = data["info"]["version"] current_version = aider.__version__ - if just_check: + if just_check or verbose: io.tool_output(f"Current version: {current_version}") io.tool_output(f"Latest version: {latest_version}") @@ -41,11 +44,13 @@ def check_version(io, just_check=False, verbose=False): fname.parent.mkdir(parents=True, exist_ok=True) fname.touch() - if just_check: + if just_check or verbose: if is_update_available: io.tool_output("Update available") else: io.tool_output("No update available") + + if just_check: return is_update_available if not is_update_available: