Local branch had diverged from origin/master (sibling commits on the same base). Rewrote local history linearly on top of origin/master, folding in all local content: exa/hot-platform discovery hunters, leaks ledger, nightly sweep orchestrator, updated .gitignore and skill docs, plus the latest hunt output and vault state. Remote-only files (vault keys, channel scripts) were restored rather than dropped, so the resulting tree is a full union of both sides.
1 line
13 KiB
JSON
1 line
13 KiB
JSON
{"repo": "atharva01/code-reviewer", "files": {"tests/test_config.py": {"e7b1f3b1a87b34938e85b12db6b0208ffd5bbbf0": {"t": 1785746465.5635636, "n": 5193, "h": "18ba2d8412c0d9e4", "c": "\"\"\"Tests for app/config.py — RED phase: settings edge cases.\"\"\"\n\nimport os\nfrom pathlib import Path\n\nimport pytest\n\n# Ensure we don't pick up real .env values during default tests\n_DEFAULT_ENV_VARS = [\"DEEPSEEK_API_KEY\", \"GITHUB_TOKEN\", \"DEEPSEEK_MODEL\",\n \"MAX_AGENT_ITERATIONS\", \"AGENT_TIMEOUT_SECONDS\",\n \"REVIEW_WORKSPACE\", \"DEEPSEEK_BASE_URL\"]\n\n\ndef _clear_env(monkeypatch):\n for var in _DEFAULT_ENV_VARS:\n monkeypatch.delenv(var, raising=False)\n\n\nclass TestSettingsDefaults:\n \"\"\"Test that Settings has sensible defaults.\"\"\"\n\n def test_default_model_is_deepseek_chat(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_model == \"deepseek-chat\"\n\n def test_default_base_url(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_base_url == \"https://api.deepseek.com/v1\"\n\n def test_default_max_iterations(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 8\n\n def test_default_timeout(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.agent_timeout_seconds == 120\n\n def test_default_review_workspace_is_path(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert isinstance(s.review_workspace, Path)\n assert str(s.review_workspace) == \"/tmp/code-reviewer-repos\"\n\n def test_default_api_key_is_empty(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"\"\n\n def test_default_github_token_is_empty(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.github_token == \"\"\n\n\nclass TestSettingsFromEnv:\n \"\"\"Test that settings read from environment correctly.\"\"\"\n\n def test_api_key_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_API_KEY\", \"sk-my-key\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"sk-my-key\"\n\n def test_model_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_MODEL\", \"deepseek-reasoner\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_model == \"deepseek-reasoner\"\n\n def test_github_token_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"GITHUB_TOKEN\", \"ghp_abc123\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.github_token == \"ghp_abc123\"\n\n def test_timeout_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"AGENT_TIMEOUT_SECONDS\", \"60\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.agent_timeout_seconds == 60\n\n def test_iterations_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"MAX_AGENT_ITERATIONS\", \"4\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 4\n\n def test_workspace_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"REVIEW_WORKSPACE\", \"/tmp/my-workspace\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert str(s.review_workspace) == \"/tmp/my-workspace\"\n\n def test_base_url_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_BASE_URL\", \"https://custom.api/v1\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_base_url == \"https://custom.api/v1\"\n\n\nclass TestSettingsGlobalInstance:\n \"\"\"Test the module-level settings singleton.\"\"\"\n\n def test_settings_is_instantiated(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import settings\n\n assert settings.deepseek_model is not None\n\n\nclass TestSettingsEdgeCases:\n \"\"\"RED: Edge cases that might break settings.\"\"\"\n\n def test_empty_env_vars_dont_override(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_API_KEY\", \"\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"\"\n\n def test_numeric_strings_are_coerced(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"MAX_AGENT_ITERATIONS\", \"16\")\n monkeypatch.setenv(\"AGENT_TIMEOUT_SECONDS\", \"300\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 16\n assert s.agent_timeout_seconds == 300\n"}, "972fda953598c1c5b2961c41290e380715a51a83": {"t": 1785764608.8560083, "n": 5193, "h": "18ba2d8412c0d9e4", "c": "\"\"\"Tests for app/config.py — RED phase: settings edge cases.\"\"\"\n\nimport os\nfrom pathlib import Path\n\nimport pytest\n\n# Ensure we don't pick up real .env values during default tests\n_DEFAULT_ENV_VARS = [\"DEEPSEEK_API_KEY\", \"GITHUB_TOKEN\", \"DEEPSEEK_MODEL\",\n \"MAX_AGENT_ITERATIONS\", \"AGENT_TIMEOUT_SECONDS\",\n \"REVIEW_WORKSPACE\", \"DEEPSEEK_BASE_URL\"]\n\n\ndef _clear_env(monkeypatch):\n for var in _DEFAULT_ENV_VARS:\n monkeypatch.delenv(var, raising=False)\n\n\nclass TestSettingsDefaults:\n \"\"\"Test that Settings has sensible defaults.\"\"\"\n\n def test_default_model_is_deepseek_chat(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_model == \"deepseek-chat\"\n\n def test_default_base_url(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_base_url == \"https://api.deepseek.com/v1\"\n\n def test_default_max_iterations(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 8\n\n def test_default_timeout(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.agent_timeout_seconds == 120\n\n def test_default_review_workspace_is_path(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert isinstance(s.review_workspace, Path)\n assert str(s.review_workspace) == \"/tmp/code-reviewer-repos\"\n\n def test_default_api_key_is_empty(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"\"\n\n def test_default_github_token_is_empty(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.github_token == \"\"\n\n\nclass TestSettingsFromEnv:\n \"\"\"Test that settings read from environment correctly.\"\"\"\n\n def test_api_key_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_API_KEY\", \"sk-my-key\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"sk-my-key\"\n\n def test_model_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_MODEL\", \"deepseek-reasoner\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_model == \"deepseek-reasoner\"\n\n def test_github_token_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"GITHUB_TOKEN\", \"ghp_abc123\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.github_token == \"ghp_abc123\"\n\n def test_timeout_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"AGENT_TIMEOUT_SECONDS\", \"60\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.agent_timeout_seconds == 60\n\n def test_iterations_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"MAX_AGENT_ITERATIONS\", \"4\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 4\n\n def test_workspace_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"REVIEW_WORKSPACE\", \"/tmp/my-workspace\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert str(s.review_workspace) == \"/tmp/my-workspace\"\n\n def test_base_url_from_env(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_BASE_URL\", \"https://custom.api/v1\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_base_url == \"https://custom.api/v1\"\n\n\nclass TestSettingsGlobalInstance:\n \"\"\"Test the module-level settings singleton.\"\"\"\n\n def test_settings_is_instantiated(self, monkeypatch):\n _clear_env(monkeypatch)\n from app.config import settings\n\n assert settings.deepseek_model is not None\n\n\nclass TestSettingsEdgeCases:\n \"\"\"RED: Edge cases that might break settings.\"\"\"\n\n def test_empty_env_vars_dont_override(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"DEEPSEEK_API_KEY\", \"\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.deepseek_api_key == \"\"\n\n def test_numeric_strings_are_coerced(self, monkeypatch):\n _clear_env(monkeypatch)\n monkeypatch.setenv(\"MAX_AGENT_ITERATIONS\", \"16\")\n monkeypatch.setenv(\"AGENT_TIMEOUT_SECONDS\", \"300\")\n from app.config import Settings\n\n s = Settings(_env_file=None)\n assert s.max_agent_iterations == 16\n assert s.agent_timeout_seconds == 300\n"}}, "k8s/configmap.yaml": {"e7b1f3b1a87b34938e85b12db6b0208ffd5bbbf0": {"t": 1785747058.6370983, "n": 294, "h": "0ff6fb26083cf918", "c": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: code-reviewer-config\n namespace: code-reviewer\ndata:\n DEEPSEEK_MODEL: \"deepseek-chat\"\n DEEPSEEK_BASE_URL: \"https://api.deepseek.com/v1\"\n REVIEW_WORKSPACE: \"/tmp/code-reviewer-repos\"\n MAX_AGENT_ITERATIONS: \"8\"\n AGENT_TIMEOUT_SECONDS: \"120\"\n"}, "dbb8057b984bd81717c1271f84ca788dae0afd3b": {"t": 1785764607.720608, "n": 294, "h": "0ff6fb26083cf918", "c": "apiVersion: v1\nkind: ConfigMap\nmetadata:\n name: code-reviewer-config\n namespace: code-reviewer\ndata:\n DEEPSEEK_MODEL: \"deepseek-chat\"\n DEEPSEEK_BASE_URL: \"https://api.deepseek.com/v1\"\n REVIEW_WORKSPACE: \"/tmp/code-reviewer-repos\"\n MAX_AGENT_ITERATIONS: \"8\"\n AGENT_TIMEOUT_SECONDS: \"120\"\n"}}, "k8s/secret.yaml": {"e7b1f3b1a87b34938e85b12db6b0208ffd5bbbf0": {"t": 1786068212.3956285, "n": 203, "h": "93ade6cdedd05035", "c": "apiVersion: v1\nkind: Secret\nmetadata:\n name: code-reviewer-secret\n namespace: code-reviewer\ntype: Opaque\nstringData:\n DEEPSEEK_API_KEY: \"<your-deepseek-api-key>\"\n GITHUB_TOKEN: \"<your-github-token>\"\n"}}, "docker-compose.yml": {"e7b1f3b1a87b34938e85b12db6b0208ffd5bbbf0": {"t": 1786068531.5346816, "n": 1120, "h": "79f5b418262214e6", "c": "services:\n api:\n build: .\n ports:\n - \"${API_PORT:-8000}:8000\"\n env_file:\n - .env\n environment:\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - GITHUB_TOKEN=${GITHUB_TOKEN:-}\n volumes:\n - api-data:/tmp/code-reviewer-repos\n restart: unless-stopped\n command: uvicorn app.main:app --host 0.0.0.0 --port 8000\n healthcheck:\n test: [\"CMD\", \"python\", \"-c\", \"import urllib.request; urllib.request.urlopen('http://localhost:8000/health')\"]\n interval: 30s\n timeout: 5s\n retries: 3\n\n streamlit:\n build: .\n ports:\n - \"${STREAMLIT_PORT:-8501}:8501\"\n env_file:\n - .env\n environment:\n - DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\n - GITHUB_TOKEN=${GITHUB_TOKEN:-}\n volumes:\n - api-data:/tmp/code-reviewer-repos\n restart: unless-stopped\n command: streamlit run streamlit_app/main.py --server.port=8501 --server.address=0.0.0.0\n healthcheck:\n test: [\"CMD\", \"python\", \"-c\", \"import urllib.request; urllib.request.urlopen('http://localhost:8501')\"]\n interval: 30s\n timeout: 5s\n retries: 3\n\nvolumes:\n api-data:\n"}}}} |