Passed
Pull Request — rhel9-branch (#227)
by Matěj
01:23
created

test_content_discovery.test_reduce()   B

Complexity

Conditions 5

Size

Total Lines 28
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 5
eloc 22
nop 1
dl 0
loc 28
rs 8.8853
c 0
b 0
f 0
1
import os
2
3
import pytest
4
5
import org_fedora_oscap.content_discovery as tested_module
6
from org_fedora_oscap import content_handling
7
8
9
@pytest.fixture
10
def labelled_files():
11
    return {
12
        "dir/datastream": "D",
13
        "dir/datastream2": "D",
14
        "dir/dir/datastream3": "D",
15
        "dir/dir/datastream3": "D",
16
        "dir/XCCDF": "X",
17
        "XCCDF2": "X",
18
        "cpe": "C",
19
        "t1": "T",
20
        "dir3/t2": "T",
21
    }
22
23
24
def test_reduce(labelled_files):
25
    bringer = tested_module.ContentBringer(None)
26
27
    d_count = 0
28
    x_count = 0
29
    for l in labelled_files.values():
30
        if l == "D":
31
            d_count += 1
32
        elif l == "X":
33
            x_count += 1
34
35
    reduced = bringer.reduce_files(labelled_files, "dir/datastream", ["D"])
36
    assert len(reduced) == len(labelled_files) - d_count + 1
37
    assert "dir/datastream" in reduced
38
39
    reduced = bringer.reduce_files(labelled_files, "dir/datastream", ["D", "X"])
40
    assert len(reduced) == len(labelled_files) - d_count - x_count + 1
41
    assert "dir/datastream" in reduced
42
43
    reduced = bringer.reduce_files(labelled_files, "dir/XCCDF", ["D", "X"])
44
    assert len(reduced) == len(labelled_files) - d_count - x_count + 1
45
    assert "dir/XCCDF" in reduced
46
47
    with pytest.raises(content_handling.ContentHandlingError, match="dir/datastream4"):
48
        bringer.reduce_files(labelled_files, "dir/datastream4", ["D"])
49
50
    reduced = bringer.reduce_files(labelled_files, "cpe", ["C"])
51
    assert reduced == labelled_files
52
53
54
def test_path_presence_detection():
55
    list_of_paths = ["file1", os.path.abspath("file2"), os.path.abspath("dir///file3")]
56
57
    list_of_paths_in_list = [
58
        "file1", os.path.abspath("file1"), "./file1",
59
        "file2", "dir/..//file2",
60
        "dir/../dir/file3", "dir/file3",
61
    ]
62
    list_of_paths_not_in_list = [
63
        "../file1", "file3"
64
    ]
65
66
    for path in list_of_paths_in_list:
67
        assert tested_module.path_is_present_among_paths(path, list_of_paths)
68
69
    for path in list_of_paths_not_in_list:
70
        assert not tested_module.path_is_present_among_paths(path, list_of_paths)
71