def find_importable_tests(self): """Walks through the source directory to find what tests should be imported. This function sets self.import_list, which contains information about how many tests are being imported, and their source and destination paths. """ paths_to_skip = self.find_paths_to_skip() for root, dirs, files in self.filesystem.walk(self.source_repo_path): cur_dir = root.replace(self.dir_above_repo + '/', '') + '/' _log.debug('Scanning %s...', cur_dir) dirs_to_skip = ('.git', ) if dirs: for name in dirs_to_skip: if name in dirs: dirs.remove(name) for path in paths_to_skip: path_base = path.replace(self.dest_dir_name + '/', '') path_base = path_base.replace(cur_dir, '') path_full = self.filesystem.join(root, path_base) if path_base in dirs: _log.info('Skipping: %s', path_full) dirs.remove(path_base) if self.import_in_place: self.filesystem.rmtree(path_full) copy_list = [] for filename in files: path_full = self.filesystem.join(root, filename) path_base = path_full.replace(self.source_repo_path + '/', '') path_base = self.destination_directory.replace( self.layout_tests_dir + '/', '') + '/' + path_base if path_base in paths_to_skip: if self.import_in_place: _log.debug('Pruning: %s', path_base) self.filesystem.remove(path_full) continue else: continue # FIXME: This block should really be a separate function, but the early-continues make that difficult. if is_basename_skipped(filename): _log.debug('Skipping: %s', path_full) _log.debug( ' Reason: This file may cause Chromium presubmit to fail.' ) continue copy_list.append({'src': path_full, 'dest': filename}) if copy_list: # Only add this directory to the list if there's something to import self.import_list.append({ 'dirname': root, 'copy_list': copy_list })
def test_is_basename_skipped_asserts_basename(self): with self.assertRaises(AssertionError): is_basename_skipped('third_party/fake/OWNERS')
def test_is_basename_skipped(self): self.assertTrue(is_basename_skipped('MANIFEST.json')) self.assertTrue(is_basename_skipped('OWNERS')) self.assertTrue(is_basename_skipped('reftest.list')) self.assertTrue(is_basename_skipped('.gitignore')) self.assertFalse(is_basename_skipped('something.json'))