예제 #1
0
def test_filter_files__no_results(tmp_path):
    add_files_to_dir(tmp_path)

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(files_in_dir, [lambda _: False])

    assert len(filtered_files) == 0
예제 #2
0
def test_filter_files__all_true(tmp_path):
    files = add_files_to_dir(tmp_path)
    expected_return_value = sorted(files)

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(files_in_dir, [lambda _: True])

    assert sorted(filtered_files) == expected_return_value
예제 #3
0
def test_get_all_regular_files_in_directory__subdir_has_files(tmp_path, monkeypatch):
    subdirs = add_subdirs_to_dir(tmp_path)
    add_files_to_dir(subdirs[0])

    files = add_files_to_dir(tmp_path)

    expected_return_value = sorted(files)
    assert sorted(get_all_regular_files_in_directory(tmp_path)) == expected_return_value
예제 #4
0
def test_is_not_shortcut_filter(tmp_path):
    add_files_to_dir(tmp_path)

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(files_in_dir, [is_not_shortcut_filter])

    assert len(filtered_files) == len(FILES) - 1
    assert SHORTCUT not in [f.name for f in filtered_files]
예제 #5
0
def test_file_extension_filter(tmp_path):
    valid_extensions = {".zip", ".xyz"}

    files = add_files_to_dir(tmp_path)

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(files_in_dir, [file_extension_filter(valid_extensions)])

    assert sorted(files[0:2]) == sorted(filtered_files)
예제 #6
0
def test_filter_files__multiple_filters(tmp_path):
    files = add_files_to_dir(tmp_path)
    expected_return_value = sorted(files[4:6])

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(
        files_in_dir, [lambda f: f.name.startswith("2"), lambda f: f.name.endswith("g")]
    )

    assert sorted(filtered_files) == expected_return_value
예제 #7
0
    def __call__(self, target_dir: Path) -> List[Path]:
        file_filters = [
            file_extension_filter(self._targeted_file_extensions),
            is_not_shortcut_filter,
            is_not_symlink_filter,
            _is_not_ransomware_readme_filter,
        ]

        all_files = get_all_regular_files_in_directory(target_dir)
        return filter_files(all_files, file_filters)
예제 #8
0
def test_is_not_symlink_filter(tmp_path):
    files = add_files_to_dir(tmp_path)
    link_path = tmp_path / "symlink.test"
    link_path.symlink_to(files[0], target_is_directory=False)

    files_in_dir = get_all_regular_files_in_directory(tmp_path)
    filtered_files = filter_files(files_in_dir, [is_not_symlink_filter])

    assert link_path in files_in_dir
    assert len(filtered_files) == len(FILES)
    assert link_path not in filtered_files
예제 #9
0
def test_get_all_regular_files_in_directory__no_files(tmp_path, monkeypatch):
    add_subdirs_to_dir(tmp_path)

    expected_return_value = []
    assert get_all_regular_files_in_directory(tmp_path) == expected_return_value