File size: 1,655 Bytes
f249c51
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fb32419
 
 
 
a79668c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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