import os import tempfile from app.tools.static_analyzer import run_ruff, run_bandit, run_full_analysis def _make_py_file(tmpdir: str, content: str) -> str: path = os.path.join(tmpdir, "sample.py") with open(path, "w") as f: f.write(content) return path def test_run_ruff_clean_file(): with tempfile.TemporaryDirectory() as tmpdir: _make_py_file(tmpdir, "x = 1\n") result = run_ruff(tmpdir) assert result["success"] is True assert isinstance(result["issues"], list) def test_run_ruff_detects_issues(): with tempfile.TemporaryDirectory() as tmpdir: _make_py_file(tmpdir, "import os\nimport sys\nx=1\n") result = run_ruff(tmpdir) assert result["success"] is True def test_run_bandit_clean_file(): with tempfile.TemporaryDirectory() as tmpdir: _make_py_file(tmpdir, "def add(a, b):\n return a + b\n") result = run_bandit(tmpdir) assert result["success"] is True assert isinstance(result["issues"], list) def test_run_full_analysis_returns_both(): with tempfile.TemporaryDirectory() as tmpdir: _make_py_file(tmpdir, "x = 1\n") result = run_full_analysis(tmpdir) assert "ruff" in result assert "bandit" in result assert "total_issues" in result assert isinstance(result["total_issues"], int) def test_run_full_analysis_empty_dir(): with tempfile.TemporaryDirectory() as tmpdir: result = run_full_analysis(tmpdir) assert "ruff" in result assert "bandit" in result assert "total_issues" in result assert isinstance(result["total_issues"], int) assert result["total_issues"] >= 0