def filepaths(self, named_filtr=None, glob_filter=None, re_filter=None, skip_hidden=True): kwargs = { 'rootpath': self.root_path, 'dirpath': self.root_path, 'exclude_globs': self.exclude_globs, 'exclude_regulars': self.exclude_regulars, 'exclude_hidden': skip_hidden } if named_filtr: if self.filter_globs.has_key(named_filtr): pattern = self.filter_globs[named_filtr] kwargs['match_func'] = lambda s: glob_match(s, pattern) elif self.filter_regulars.has_key(named_filtr): pattern = re.compile(self.filter_regulars[named_filtr]) kwargs['match_func'] = lambda s: bool(pattern.match(s)) else: raise InvalidFilter(named_filtr) elif glob_filter: kwargs['match_func'] = lambda s: glob_match(s, glob_filter) elif re_filter: kwargs['match_func'] = lambda s: bool(re_filter.match(s)) for f in filtered_files(**kwargs): yield f
def test_filtered_files_exclude_globs(self): prefixes = 'text'.split(' ') output = [] for filename in filtered_files(self.rootpath, self.rootpath, ['sub*'], [], True): output.append(filename) # make sure the filenames start with prefixes in the expected order assert len(prefixes) == len(output) for prefix, filename in zip(prefixes, output): assert os.path.basename(filename).startswith(prefix)
def test_filtered_files_all(self): prefixes = 'text settings 0 1 2'.split(' ') output = [] for filename in filtered_files(self.rootpath, self.rootpath, [], [], False): output.append(filename) # make sure the filenames start with prefixes in the expected order assert len(prefixes) == len(output) for prefix, filename in zip(prefixes, output): assert os.path.basename(filename).startswith(prefix)
def test_filtered_files_exclude_regulars(self): # filtered_files(rootpath, dirpath, exclude_globs, exclude_regulars, exclude_hidden, match_func) prefixes = 'text 2'.split(' ') reg_str = '.*\/0.*' # not compiled yet reg_obj = re.compile('.*\/1.*') # already compiled output = [] for filename in filtered_files(self.rootpath, self.rootpath, [], [reg_str, reg_obj], True): output.append(filename) # make sure the filenames start with prefixes in the expected order assert len(prefixes) == len(output) for prefix, filename in zip(prefixes, output): assert os.path.basename(filename).startswith(prefix)
def test_filtered_files_match_func(self): def starts_with_digit(filename): # dummy match function that matches filenames that start with # a digit if os.path.basename(filename)[0].isdigit(): return True return False prefixes = '0 1 2'.split(' ') output = [] for filename in filtered_files(self.rootpath, self.rootpath, [], [], True, starts_with_digit): output.append(filename) # make sure the filenames start with prefixes in the expected order assert len(prefixes) == len(output) for prefix, filename in zip(prefixes, output): assert os.path.basename(filename).startswith(prefix)