Added check to ensure verbose output contains environment variables set with .env

This commit is contained in:
John-Mason P. Shackelford 2024-06-01 11:50:43 -04:00
parent 75ec0f6266
commit f4e4e3af87
No known key found for this signature in database
GPG key ID: B546E2175409B912
2 changed files with 22 additions and 0 deletions

View file

@ -124,6 +124,12 @@ def check_gitignore(git_root, io, ask=True):
def format_settings(parser, args): def format_settings(parser, args):
show = scrub_sensitive_info(args, parser.format_values()) show = scrub_sensitive_info(args, parser.format_values())
# clean up the headings for consistency w/ new lines
heading_env = "Environment Variables:"
heading_defaults = "Defaults:"
if heading_env in show:
show = show.replace(heading_env, "\n" + heading_env)
show = show.replace(heading_defaults, "\n" + heading_defaults)
show += "\n" show += "\n"
show += "Option settings:\n" show += "Option settings:\n"
for arg, val in sorted(vars(args).items()): for arg, val in sorted(vars(args).items()):

View file

@ -1,6 +1,7 @@
import os import os
import subprocess import subprocess
import tempfile import tempfile
from io import StringIO
from pathlib import Path from pathlib import Path
from unittest import TestCase from unittest import TestCase
from unittest.mock import MagicMock, patch from unittest.mock import MagicMock, patch
@ -304,3 +305,18 @@ class TestMain(TestCase):
MockCoder.assert_called_once() MockCoder.assert_called_once()
_, kwargs = MockCoder.call_args _, kwargs = MockCoder.call_args
self.assertEqual(kwargs["show_diffs"], True) self.assertEqual(kwargs["show_diffs"], True)
def test_verbose_mode_lists_env_vars(self):
self.create_env_file(".env", "AIDER_DARK_MODE=on")
with patch("sys.stdout", new_callable=StringIO) as mock_stdout:
main(["--no-git", "--verbose"], input=DummyInput(), output=DummyOutput())
output = mock_stdout.getvalue()
relevant_output = "\n".join(
line
for line in output.splitlines()
if "AIDER_DARK_MODE" in line or "dark_mode" in line
) # this bit just helps failing assertions to be easier to read
self.assertIn("AIDER_DARK_MODE", relevant_output)
self.assertIn("dark_mode", relevant_output)
self.assertRegex(relevant_output, r"AIDER_DARK_MODE:\s+on")
self.assertRegex(relevant_output, r"dark_mode:\s+True")