diff --git a/src/google/adk/cli/cli_create.py b/src/google/adk/cli/cli_create.py index e7cd035bfb..23ea5b71cd 100644 --- a/src/google/adk/cli/cli_create.py +++ b/src/google/adk/cli/cli_create.py @@ -54,6 +54,7 @@ _SUCCESS_MSG_CODE = """ Agent created in {agent_folder}: - .env +- .gitignore - __init__.py - agent.py @@ -64,6 +65,7 @@ _SUCCESS_MSG_CONFIG = """ Agent created in {agent_folder}: - .env +- .gitignore - __init__.py - root_agent.yaml @@ -102,6 +104,7 @@ def _generate_files( if google_cloud_region: lines.append(f"GOOGLE_CLOUD_LOCATION={google_cloud_region}") f.write("\n".join(lines)) + _ensure_dotenv_gitignored(agent_folder) if type == "config": with open(agent_config_file_path, "w", encoding="utf-8") as f: diff --git a/tests/unittests/cli/utils/test_cli_create.py b/tests/unittests/cli/utils/test_cli_create.py index a8544579c5..b9fcde5950 100644 --- a/tests/unittests/cli/utils/test_cli_create.py +++ b/tests/unittests/cli/utils/test_cli_create.py @@ -69,6 +69,7 @@ def test_generate_files_with_api_key(agent_folder: Path) -> None: env_content = (agent_folder / ".env").read_text() assert "GOOGLE_API_KEY=dummy-key" in env_content assert "GOOGLE_GENAI_USE_VERTEXAI=0" in env_content + assert (agent_folder / ".gitignore").read_text() == ".env\n" assert (agent_folder / "agent.py").exists() assert (agent_folder / "__init__.py").exists() @@ -150,6 +151,34 @@ def test_generate_files_no_params(agent_folder: Path) -> None: assert key not in env_content +def test_generate_files_appends_dotenv_to_existing_gitignore( + agent_folder: Path, +) -> None: + """Existing .gitignore entries should be preserved.""" + agent_folder.mkdir(parents=True, exist_ok=True) + (agent_folder / ".gitignore").write_text("__pycache__") + + cli_create._generate_files( + str(agent_folder), model="gemini-2.0-flash-001", type="code" + ) + + assert (agent_folder / ".gitignore").read_text() == "__pycache__\n.env\n" + + +def test_generate_files_does_not_duplicate_dotenv_gitignore_entry( + agent_folder: Path, +) -> None: + """Existing .env ignore entries should not be duplicated.""" + agent_folder.mkdir(parents=True, exist_ok=True) + (agent_folder / ".gitignore").write_text("__pycache__\n.env\n") + + cli_create._generate_files( + str(agent_folder), model="gemini-2.0-flash-001", type="code" + ) + + assert (agent_folder / ".gitignore").read_text() == "__pycache__\n.env\n" + + # run_cmd def test_run_cmd_overwrite_reject( monkeypatch: pytest.MonkeyPatch, tmp_path: Path @@ -231,6 +260,7 @@ def test_run_cmd_with_type_config( env_file = agent_dir / ".env" assert env_file.exists() assert "GOOGLE_API_KEY=test-key" in env_file.read_text() + assert (agent_dir / ".gitignore").read_text() == ".env\n" # Prompt helpers