コード例 #1
0
def test_SV_suppressed_violations():
    line_pattern = 2 * '"";' + '"{}";' + 3 * '"";' + '"path";' + 4 * '"";' + '""'
    suppressed_false = line_pattern.format("false")
    suppressed_true = line_pattern.format("true")
    suppressed_none = line_pattern.format("")

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_false, "")
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_none, "")
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_true, "")
    assert len(dicts) == 0

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_false, "", filter_suppressed=True)
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_none, "", filter_suppressed=True)
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_true, "", filter_suppressed=True)
    assert len(dicts) == 0

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_false,
                                "", filter_suppressed=False)
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_none, "", filter_suppressed=False)
    assert len(dicts) == 1
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + suppressed_true, "", filter_suppressed=False)
    assert len(dicts) == 1
コード例 #2
0
def test_SV_invalid_line_num():
    line_num_pattern = 6 * '"";' + '"path";"{}";' + 3 * '"";' + '""'
    negative_line_num = line_num_pattern.format(-13)
    nonexistent_line_num = line_num_pattern.format("")
    nan_line_num = line_num_pattern.format("test")

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + negative_line_num, "")
    assert dicts[0]["lnum"] == 0

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + nonexistent_line_num, "")
    assert dicts[0]["lnum"] == 0

    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + nan_line_num, "")
    assert dicts[0]["lnum"] == 0
コード例 #3
0
def test_SV_error_filter():
    path = DIRECTORY + "/SV_sane_examples.csv"
    filters = ["error::42"]

    file_dicts = bh2err.convert_file(path, "", filters=filters)
    content_dicts = []
    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "", input_filters=filters)

    assert file_dicts != []
    assert len(file_dicts) == 3
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 37
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0]["text"] == "Error 42: You didn't say the magic word."

    assert file_dicts[1]["filename"] == "test/config.c"
    assert file_dicts[1]["lnum"] == 0
    assert file_dicts[1]["type"] == "E"
    assert file_dicts[1]["text"] == "Error 42: You didn't say the magic word."

    assert file_dicts[2]["filename"] == "test/config.c"
    assert file_dicts[2]["lnum"] == 0
    assert file_dicts[2]["type"] == "E"
    assert file_dicts[2]["text"] == "Error 42: This should be found again."
コード例 #4
0
def test_AV_sane_examples():
    path = DIRECTORY + "/AV_sane_examples.csv"
    file_dicts = bh2err.convert_file(path, "")
    content_dicts = []

    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "")

    assert file_dicts != []
    assert len(file_dicts) == 4
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.h"
    assert file_dicts[0]["lnum"] == 42
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0]["text"] == "T custom:size_type -> T std:some_size"

    assert file_dicts[1]["filename"] == "test/file.h"
    assert file_dicts[1]["lnum"] == 100
    assert file_dicts[1]["type"] == "W"
    assert file_dicts[1]["text"] == "S custom:tag -> S std:some_tag"

    assert file_dicts[2]["filename"] == "test/file.h"
    assert file_dicts[2]["lnum"] == 42
    assert file_dicts[2]["type"] == ""
    assert file_dicts[2]["text"] == "T custom:size_type -> T std:some_size"

    assert file_dicts[3]["filename"] == "test/file.h"
    assert file_dicts[3]["lnum"] == 42
    assert file_dicts[3]["type"] == ""
    assert file_dicts[3]["text"] == "T custom:size_type -> T std:some_size"
コード例 #5
0
def test_SV_negation_filter():
    path = DIRECTORY + "/SV_sane_examples.csv"
    filters = ["error:-:42"]

    file_dicts = bh2err.convert_file(path, "", filters=filters)
    content_dicts = []
    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "", input_filters=filters)

    assert file_dicts != []
    assert len(file_dicts) == 3
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 120
    assert file_dicts[0]["type"] == "W"
    assert file_dicts[0]["text"] == "Error 12312: Test"

    assert file_dicts[1]["filename"] == "test/file.h"
    assert file_dicts[1]["lnum"] == 42
    assert file_dicts[1]["type"] == "E"
    assert file_dicts[1]["text"] == "ABC: asdf"

    assert file_dicts[2]["filename"] == "real/file.c"
    assert file_dicts[2]["lnum"] == 49
    assert file_dicts[2]["type"] == "W"
    assert file_dicts[2]["text"] == "You didn't say the magic word."
コード例 #6
0
def test_SV_sane_examples():
    path = DIRECTORY + "/SV_sane_examples.csv"
    file_dicts = bh2err.convert_file(path, "")
    content_dicts = []

    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "")

    assert file_dicts != []
    assert len(file_dicts) == 6
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 37
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0]["text"] == "Error 42: You didn't say the magic word."

    assert file_dicts[1]["filename"] == "test/file.c"
    assert file_dicts[1]["lnum"] == 120
    assert file_dicts[1]["type"] == "W"
    assert file_dicts[1]["text"] == "Error 12312: Test"

    assert file_dicts[2]["filename"] == "test/file.h"
    assert file_dicts[2]["lnum"] == 42
    assert file_dicts[2]["type"] == "E"
    assert file_dicts[2]["text"] == "ABC: asdf"

    assert file_dicts[3]["filename"] == "real/file.c"
    assert file_dicts[3]["lnum"] == 49
    assert file_dicts[3]["type"] == "W"
    assert file_dicts[3]["text"] == "You didn't say the magic word."

    assert file_dicts[4]["filename"] == "test/config.c"
    assert file_dicts[4]["lnum"] == 0
    assert file_dicts[4]["type"] == "E"
    assert file_dicts[4]["text"] == "Error 42: You didn't say the magic word."

    assert file_dicts[5]["filename"] == "test/config.c"
    assert file_dicts[5]["lnum"] == 0
    assert file_dicts[5]["type"] == "E"
    assert file_dicts[5]["text"] == "Error 42: This should be found again."
コード例 #7
0
def test_SV_nonkeyword_filter():
    path = DIRECTORY + "/SV_sane_examples.csv"
    filters = ["Id::SV01"]

    file_dicts = bh2err.convert_file(path, "", filters=filters)
    content_dicts = []
    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "", input_filters=filters)

    assert file_dicts != []
    assert len(file_dicts) == 1
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 37
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0]["text"] == "Error 42: You didn't say the magic word."
コード例 #8
0
def test_SV_multiple_filters():
    path = DIRECTORY + "/SV_sane_examples.csv"
    filters = ["error:-:42", "message::magic"]

    file_dicts = bh2err.convert_file(path, "", filters=filters)
    content_dicts = []
    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "", input_filters=filters)

    assert file_dicts != []
    assert len(file_dicts) == 1
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "real/file.c"
    assert file_dicts[0]["lnum"] == 49
    assert file_dicts[0]["type"] == "W"
    assert file_dicts[0]["text"] == "You didn't say the magic word."
コード例 #9
0
def test_CY_sane_examples():
    path = DIRECTORY + "/CY_sane_examples.csv"
    file_dicts = bh2err.convert_file(path, "")
    content_dicts = []

    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "")

    assert file_dicts != []
    assert len(file_dicts) == 6
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 42
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0]["text"] == "class A -> struct H"

    assert file_dicts[1]["filename"] == "test/file.c"
    assert file_dicts[1]["lnum"] == 42
    assert file_dicts[1]["type"] == ""
    assert file_dicts[1]["text"] == "class A -> struct H"

    assert file_dicts[2]["filename"] == "test/file.c"
    assert file_dicts[2]["lnum"] == 42
    assert file_dicts[2]["type"] == "E"
    assert file_dicts[2]["text"] == ""

    assert file_dicts[3]["filename"] == "test/file.c"
    assert file_dicts[3]["lnum"] == 42
    assert file_dicts[3]["type"] == "E"
    assert file_dicts[3]["text"] == ""

    assert file_dicts[4]["filename"] == "test/file.c"
    assert file_dicts[4]["lnum"] == 42
    assert file_dicts[4]["type"] == ""
    assert file_dicts[4]["text"] == "class A"

    assert file_dicts[5]["filename"] == "test/file.c"
    assert file_dicts[5]["lnum"] == 42
    assert file_dicts[5]["type"] == ""
    assert file_dicts[5]["text"] == "class A"
コード例 #10
0
def test_DE_sane_examples():
    path = DIRECTORY + "/DE_sane_examples.csv"
    file_dicts = bh2err.convert_file(path, "")
    content_dicts = []

    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "")

    assert file_dicts != []
    assert len(file_dicts) == 6
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 1904
    assert file_dicts[0]["text"] == "my::ns::Class::GetID()"

    assert file_dicts[1]["filename"] == "test/file.h"
    assert file_dicts[1]["lnum"] == 100
    assert file_dicts[1]["text"] == "my::ns::Class::GetAddress()-c"

    assert file_dicts[2]["filename"] == "real/file.c"
    assert file_dicts[2]["lnum"] == 42
    assert file_dicts[2]["text"] == ""

    assert file_dicts[3]["filename"] == "real/test.c"
    assert file_dicts[3]["lnum"] == 4
    assert file_dicts[3]["text"] == "Wait()"

    assert file_dicts[4]["filename"] == "test/config.c"
    assert file_dicts[4]["lnum"] == 0
    assert file_dicts[4]["text"] == ""

    assert file_dicts[5]["filename"] == "test/config.c"
    assert file_dicts[5]["lnum"] == 0
    assert file_dicts[5]["text"] == ""
コード例 #11
0
def test_SV_semicolon_and_linebreak_in_text():
    msg = 'Message ; \\n interrupted; by ; and \\n; '
    content = 4 * '"";' + '"' + msg + '";"";"path;"' + 4 * '"";' + '""'
    dicts = bh2err.convert_text(SV_HEADER_STR + "\n" + content, "")
    assert len(dicts) == 1
    assert dicts[0]["text"] == msg
コード例 #12
0
def test_SV_empty_entry():
    content = SV_HEADER_STR + "\n" + 11 * '"";' + '""'
    dicts = bh2err.convert_text(content, "")
    assert len(dicts) == 0
コード例 #13
0
def test_CY_empty_entry():
    content = CY_HEADER_STR + "\n" + 15 * '"";' + '""'
    print(content)
    dicts = bh2err.convert_text(content, "")
    assert len(dicts) == 0
コード例 #14
0
def test_MV_sane_examples():
    path = DIRECTORY + "/MV_sane_examples.csv"
    file_dicts = bh2err.convert_file(path, "")
    content_dicts = []

    with open(path, "r") as f:
        content = f.read()
        content_dicts = bh2err.convert_text(content, "")

    assert file_dicts != []
    assert len(file_dicts) == 9
    assert content_dicts != []
    assert content_dicts == file_dicts

    assert file_dicts[0]["filename"] == "test/file.c"
    assert file_dicts[0]["lnum"] == 81
    assert file_dicts[0]["type"] == "E"
    assert file_dicts[0][
        "text"] == "Metric.HIS.PATH (HIS PATH): 42.0. Allowed range: [1.0, 30.0]"

    assert file_dicts[1]["filename"] == "test/file.c"
    assert file_dicts[1]["lnum"] == 33
    assert file_dicts[1]["type"] == "W"
    assert file_dicts[1][
        "text"] == "Metric.HIS.RETURN (HIS RETURN): 6.0. Allowed range: [0.0, 2.0]"

    assert file_dicts[2]["filename"] == "test/file.h"
    assert file_dicts[2]["lnum"] == 41
    assert file_dicts[2]["type"] == ""
    assert file_dicts[2][
        "text"] == "Response for a class: 54.0. Allowed range: [0.0, 40.0]"

    assert file_dicts[3]["filename"] == "real/file.c"
    assert file_dicts[3]["lnum"] == 123
    assert file_dicts[3]["type"] == "E"
    assert file_dicts[3][
        "text"] == "Metric.OO.WMC.One: 42.0. Allowed range: [0.0, 20.0]"

    assert file_dicts[4]["filename"] == "test/config.c"
    assert file_dicts[4]["lnum"] == 0
    assert file_dicts[4]["type"] == "E"
    assert file_dicts[4]["text"] == "Metric.OO.WMC.One (Weighted Methods per Class based on 1): "\
                                    "28.0. Allowed range: [0.0, 15.0]"

    assert file_dicts[5]["filename"] == "test/file.c"
    assert file_dicts[5]["lnum"] == 33
    assert file_dicts[5]["type"] == "W"
    assert file_dicts[5]["text"] == "Metric.HIS.RETURN (HIS RETURN)"

    assert file_dicts[6]["filename"] == "test/file.c"
    assert file_dicts[6]["lnum"] == 33
    assert file_dicts[6]["type"] == "W"
    assert file_dicts[6]["text"] == "Metric.HIS.RETURN (HIS RETURN): 6.0."

    assert file_dicts[7]["filename"] == "test/file.c"
    assert file_dicts[7]["lnum"] == 33
    assert file_dicts[7]["type"] == "W"
    assert file_dicts[7]["text"] == "Metric.HIS.RETURN (HIS RETURN): 6.0."

    assert file_dicts[8]["filename"] == "test/file.c"
    assert file_dicts[8]["lnum"] == 33
    assert file_dicts[8]["type"] == "W"
    assert file_dicts[8]["text"] == "Metric.HIS.RETURN (HIS RETURN): 6.0."
コード例 #15
0
def test_only_header_file():
    path = DIRECTORY + "/ONLY_HEADERS.csv"
    assert bh2err.convert_file(path, "") == []
    with open(path, "r") as f:
        content = f.read()
        assert bh2err.convert_text(content, "") == []