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(args[0]) listing = ListTrashinfos(self.file_reader) user_info_provider = UserInfoProvider(self.environ, self.getuid) scanner = TrashDirsScanner(user_info_provider, self.volumes_listing, TopTrashDirRules(self.file_reader)) for event, args in scanner.scan_trash_dirs(self.environ): if event == trash_dir_found: path, volume = args for type, arg in listing.list_from_volume_trashdir( path, volume): if type == 'unable_to_parse_path': self.unable_to_parse_path(arg) elif type == 'trashed_file': original_location, info_file = arg if cmd.matches(original_location): trashcan.delete_trashinfo_and_backup_copy( info_file)
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 setUp(self): require_empty_dir('topdir') self.empty=EmptyCmd( out = StringIO(), err = StringIO(), environ = {}, list_volumes = lambda: ['topdir'], now = None, file_reader = FileSystemReader(), getuid = lambda: 123, file_remover = FileRemover(), version = None, )
def test_the_core_of_failures_for_issue_48(self): mkdirs('unreadable-dir') os.chmod('unreadable-dir', 0o300) assert_true(os.path.exists('unreadable-dir')) try: FileRemover().remove_file('unreadable-dir') assert False except OSError: pass os.chmod('unreadable-dir', 0o700) shutil.rmtree('unreadable-dir')
def main(argv=sys.argv, stdout=sys.stdout, stderr=sys.stderr, environ=os.environ): return EmptyCmd(out=stdout, err=stderr, environ=environ, volumes_listing=VolumesListing(os_mount_points), now=datetime.now, file_reader=FileSystemReader(), getuid=os.getuid, file_remover=FileRemover(), version=trash.version, volume_of=volume_of).run(*argv)
def setUp(self): self.temp_dir = MyPath.make_temp_dir() self.top_dir = self.temp_dir / 'topdir' require_empty_dir(self.top_dir) self.empty = EmptyCmd( out=StringIO(), err=StringIO(), environ={}, list_volumes=lambda: [self.top_dir], now=None, file_reader=FileSystemReader(), getuid=lambda: 123, file_remover=FileRemover(), version=None, )
def setUp(self): require_empty_dir('XDG_DATA_HOME') self.xdg_data_home = 'XDG_DATA_HOME' self.environ = {'XDG_DATA_HOME':'XDG_DATA_HOME'} self.now = MagicMock(side_effect=RuntimeError) self.empty_cmd=EmptyCmd( out = StringIO(), err = StringIO(), environ = self.environ, list_volumes = no_volumes, now = self.now, file_reader = FileSystemReader(), getuid = None, file_remover = FileRemover(), version = None, )
def setUp(self): require_empty_dir('XDG_DATA_HOME') self.info_dir_path = 'XDG_DATA_HOME/Trash/info' self.files_dir_path = 'XDG_DATA_HOME/Trash/files' self.environ = {'XDG_DATA_HOME':'XDG_DATA_HOME'} now = MagicMock(side_effect=RuntimeError) self.empty_cmd = EmptyCmd( out = StringIO(), err = StringIO(), environ = self.environ, list_volumes = no_volumes, now = now, file_reader = FileSystemReader(), getuid = None, file_remover = FileRemover(), version = None, )
def setUp(self): self.temp_dir = MyPath.make_temp_dir() self.top_dir = self.temp_dir / 'topdir' self.volumes_listing = Mock(spec=VolumesListing) self.volumes_listing.list_volumes.return_value = [self.top_dir] require_empty_dir(self.top_dir) self.empty = EmptyCmd( out=StringIO(), err=StringIO(), environ={}, volumes_listing=self.volumes_listing, now=None, file_reader=FileSystemReader(), getuid=lambda: 123, file_remover=FileRemover(), version=None, volume_of=lambda x: "volume_of %s" % x )
def setUp(self): self.tmp_dir = MyPath.make_temp_dir() self.unreadable_dir = self.tmp_dir / 'data/Trash/files/unreadable' self.volumes_listing = Mock(spec=VolumesListing) self.volumes_listing.list_volumes.return_value = [self.unreadable_dir] self.err=StringIO() self.empty = EmptyCmd( out=StringIO(), err=self.err, environ={'XDG_DATA_HOME':self.tmp_dir / 'data'}, volumes_listing=self.volumes_listing, now=None, file_reader=FileSystemReader(), getuid=lambda: 123, file_remover=FileRemover(), version=None, volume_of=lambda x: "volume_of %s" % x )
def main(argv=sys.argv, stdout=sys.stdout, stderr=sys.stderr, environ=os.environ): from trashcli.list_mount_points import os_mount_points from datetime import datetime from trashcli.trash import FileSystemReader from trashcli.fs import FileRemover from trashcli.trash import version return EmptyCmd( out=stdout, err=stderr, environ=environ, list_volumes=os_mount_points, now=datetime.now, file_reader=FileSystemReader(), getuid=os.getuid, file_remover=FileRemover(), version=version, ).run(*argv)
def test_and_can_not_be_removed(self): try: FileRemover().remove_file(self.unreadable_dir) self.fail() except OSError as e: self.assertEqual(errno.errorcode[e.errno], 'EACCES')