Пример #1
0
    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)
Пример #2
0
    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()
Пример #3
0
    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()
Пример #4
0
 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,
     )
Пример #5
0
    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')
Пример #6
0
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)
Пример #7
0
 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,
     )
Пример #8
0
 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,
     )
Пример #9
0
 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,
     )
Пример #10
0
 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
     )
Пример #11
0
 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
     )
Пример #12
0
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)
Пример #13
0
 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')