def run(self, argv): args = argv[1:] self.exit_code = 0 if not args: self.print_err('Usage:\n' ' trash-rm PATTERN\n' '\n' 'Please specify PATTERN') self.exit_code = 8 return trashcan = CleanableTrashcan(FileRemover()) cmd = Filter(trashcan.delete_trashinfo_and_backup_copy) cmd.use_pattern(args[0]) listing = ListTrashinfos(cmd.delete_if_matches, self.file_reader, self.unable_to_parse_path) trashdirs = TrashDirs(self.environ, self.getuid, self.list_volumes, TopTrashDirRules(self.file_reader)) trashdirs.on_trash_dir_found = listing.list_from_volume_trashdir trashdirs.list_trashdirs()
def run(self, argv): args = argv[1:] self.exit_code = 0 if not args: self.stderr.write('Usage:\n' ' trash-rm PATTERN\n' '\n' 'Please specify PATTERN\n') self.exit_code = 8 return trashcan = CleanableTrashcan(FileRemover()) cmd = Filter(trashcan.delete_trashinfo_and_backup_copy) cmd.use_pattern(args[0]) file_reader = FileSystemReader() listing = ListTrashinfos(cmd.delete_if_matches) top_trashdir_rules = TopTrashDirRules(file_reader) trashdirs = TrashDirs(self.environ, self.getuid, list_volumes=self.list_volumes, top_trashdir_rules=top_trashdir_rules) trashdirs.on_trash_dir_found = listing.list_from_volume_trashdir trashdirs.list_trashdirs()
def trashdirs(self): result = [] def append(trash_dir, volume): result.append(trash_dir) class FileReader: def is_sticky_dir(_, path): return self.Trash_dir_is_sticky def exists(_, path): return True def is_symlink(_, path): return False class FakeTopTrashDirRules: def valid_to_be_read(_, path, out): if self.Trash_dir_is_sticky: out.is_valid() else: out.not_valid_parent_should_be_sticky() trash_dirs = TrashDirs( environ=self.environ, getuid=lambda: self.uid, top_trashdir_rules=FakeTopTrashDirRules(), list_volumes=lambda: self.volumes, ) trash_dirs.on_trash_dir_found = append trash_dirs.list_trashdirs() return result
def trashdirs(self): result = [] def append(trash_dir, volume): result.append(trash_dir) class FileReader: def is_sticky_dir(_, path): return self.Trash_dir_is_sticky def exists(_, path): return True def is_symlink(_, path): return False class FakeTopTrashDirRules: def valid_to_be_read(_, path, out): if self.Trash_dir_is_sticky: out.is_valid() else: out.not_valid_parent_should_be_sticky() trash_dirs = TrashDirs( environ=self.environ, getuid=lambda:self.uid, top_trashdir_rules = FakeTopTrashDirRules(), list_volumes = lambda: self.volumes, ) trash_dirs.on_trash_dir_found = append trash_dirs.list_trashdirs() return result
def test_howto_list_trashdirs(self): out = Mock() environ = {'HOME':'/home/user'} trashdirs = TrashDirs( environ = environ, getuid = lambda:123, list_volumes = lambda:['/vol', '/vol2'], top_trashdir_rules = Mock(), ) trashdirs.on_trash_dir_found = out trashdirs.list_trashdirs() assert_equals([call('/home/user/.local/share/Trash', '/'), call('/vol/.Trash-123', '/vol'), call('/vol2/.Trash-123', '/vol2')], out.mock_calls)
def test_howto_list_trashdirs(self): out = Mock() environ = {'HOME': '/home/user'} trashdirs = TrashDirs( environ=environ, getuid=lambda: 123, list_volumes=lambda: ['/vol', '/vol2'], top_trashdir_rules=Mock(), ) trashdirs.on_trash_dir_found = out trashdirs.list_trashdirs() assert_equal([ call('/home/user/.local/share/Trash', '/'), call('/vol/.Trash-123', '/vol'), call('/vol2/.Trash-123', '/vol2') ], out.mock_calls)
def run(self, argv): args = argv[1:] self.exit_code = 0 if not args: self.stderr.write('Usage:\n' ' trash-rm PATTERN\n' '\n' 'Please specify PATTERN\n') self.exit_code = 8 return trashcan = CleanableTrashcan(FileRemover()) cmd = Filter(trashcan.delete_trashinfo_and_backup_copy) cmd.use_pattern(args[0]) file_reader = FileSystemReader() listing = ListTrashinfos(cmd.delete_if_matches) top_trashdir_rules = TopTrashDirRules(file_reader) trashdirs = TrashDirs(self.environ, self.getuid, list_volumes = self.list_volumes, top_trashdir_rules = top_trashdir_rules) trashdirs.on_trash_dir_found = listing.list_from_volume_trashdir trashdirs.list_trashdirs()