File size: 2,443 Bytes
7b9a9bd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
from .context import codeql_kernel as ck

client = ck.CLIClient()
test_db = "tests/codeql_db"
test_query = "tests/query.ql"
test_bqrs = "tests/test.bqrs"

# def test_resolve_non_exitent_database():
#     (err, resp) = client.resolve_database("foo")
#     assert err
#     assert not resp
#     assert err.startswith("A fatal error occurred: Database root ")

def test_resolve_ram():
    (err, res) = client.resolve_ram()
    assert not err
    assert any("Xmx" in opt for opt in res)

def test_resolve_metadata():
    (err, res) = client.resolve_metadata(test_query)
    assert not err
    assert res == { "kind": "path-problem", "id": "test"}

def test_resolve_database():
    (err, res) = client.resolve_database(test_db)
    assert not err
    assert res["sourceLocationPrefix"].endswith("tests/db")
    assert "columnKind"  in res.keys()
    assert "unicodeNewlines"  in res.keys()
    assert res["sourceArchiveZip"].endswith("tests/codeql_db/src.zip")
    assert res["sourceArchiveRoot"].endswith("tests/codeql_db/src")
    assert res["datasetFolder"].endswith("tests/codeql_db/db-python")
    assert res["logsFolder"].endswith("tests/codeql_db/log")
    assert res["languages"][0] == "python"
    assert res["scratchDir"].endswith("tests/codeql_db/working")

def test_resolve_library_path():
    (err, res) = client.resolve_library_path(test_query)
    assert not err and res
    assert res["libraryPath"][0].endswith("/tests")
    assert "python" in res["libraryPath"][1]
    assert res["dbscheme"].endswith("semmlecode.python.dbscheme")
    assert res["compilationCache"][0].endswith("tests/.cache")
    assert res["relativeName"] == "test/query.ql"
    assert res["qlPackName"] == "test"

def test_bqrs_info():
    (err, res) = client.bqrs_info(test_bqrs)
    assert not err
    assert res == {
        "compatible-query-kinds": ["Table", "Tree", "Graph"],
        "result-sets": [
            {
                "columns": [{"kind": "e", "name": "ma"}],
                "name": "#select",
                "rows": 1
            }
        ]
    }

def test_bqrs_decode():
    (err, res) = client.bqrs_decode(test_bqrs)
    assert not err
    assert res
    assert "URL for ma" in res

def test_consequent_requests():
    (err1, res1) = client.resolve_metadata(test_query)
    (err2, res2) = client.resolve_metadata(test_query)
    assert not err1 and not err2
    assert res1 == res2 and res1 == { "kind": "path-problem", "id": "test"}