def test_simple_filters(): # Set up filters import filters extension = '.c' extension_filter = filters.create_filter_by_extension(extension) pattern = '.*\.h$' pattern_filter = filters.create_filter_by_regular_expression(pattern) minimum_size = 9 minimum_size_filter = filters.create_filter_by_minimum_size(minimum_size) text_pattern = '.*\.txt' text_filter = filters.create_filter_by_regular_expression(text_pattern) rest_filter = filters.create_filter_by_regular_expression('.*') filters_directories = [ ([extension_filter], 'c', None) ,([pattern_filter], 'h', None) # AND filters by combining them in a list ,([minimum_size_filter,text_filter], 'large_files', None) # OR filters by making several entries with the # same directory ,([text_filter], 'others', None) ,([rest_filter], 'others', None) ] # Apply filters to test files def all_files_in_directory(directory): for root, _, files in os.walk(directory): for file_name in files: file_path = os.path.join(root, file_name) yield file_path targets = all_files_in_directory('test_data') root = '.' apply_filters(filters_directories, targets, root)
def test_combined_filters(): # Set up filters import filters minimum_size = 9 minimum_size_filter = filters.create_filter_by_minimum_size(minimum_size) text_pattern = '.*\.txt' text_filter = filters.create_filter_by_regular_expression(text_pattern) extension = '.c' extension_filter = filters.create_filter_by_extension(extension) combined_and_filter = filters.combined_filters(lambda x, y: x and y ,[minimum_size_filter ,text_filter]) combined_or_filter = filters.combined_filters(lambda x, y: x or y ,[text_filter ,extension_filter]) filters_directories = [ ([combined_and_filter], 'large_files', None) ,([combined_or_filter], 'others', None) ] # Apply filters to test files def all_files_in_directory(directory): for root, _, files in os.walk(directory): for file_name in files: file_path = os.path.join(root, file_name) yield file_path targets = all_files_in_directory('test_data') root = '.' apply_filters(filters_directories, targets, root)