1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
# Copyright (C) 2011-2022 Andrea Francia Bereguardo(PV) Italy
import unittest
import pytest
from mock import Mock
from six import StringIO
from tests.support.fakes.stub_volume_of import StubVolumeOf
from tests.support.files import make_unreadable_dir, make_readable
from tests.support.dirs.my_path import MyPath
from trashcli.empty.empty_cmd import EmptyCmd
from trashcli.empty.existing_file_remover import ExistingFileRemover
from trashcli.empty.file_system_dir_reader import FileSystemDirReader
from trashcli.empty.main import FileSystemContentReader
from trashcli.empty.top_trash_dir_rules_file_system_reader import \
RealTopTrashDirRulesReader
from trashcli.fstab.volume_listing import VolumesListing
@pytest.mark.slow
class TestTrashEmptyCmdFs(unittest.TestCase):
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.environ = {'XDG_DATA_HOME': self.tmp_dir / 'data'}
self.empty = EmptyCmd(
argv0='trash-empty',
out=StringIO(),
err=self.err,
volumes_listing=self.volumes_listing,
now=None,
file_reader=RealTopTrashDirRulesReader(),
file_remover=ExistingFileRemover(),
content_reader=FileSystemContentReader(),
dir_reader=FileSystemDirReader(),
version='unused',
volumes=StubVolumeOf()
)
def test_trash_empty_will_skip_unreadable_dir(self):
make_unreadable_dir(self.unreadable_dir)
self.empty.run_cmd([], self.environ, uid=123)
assert ("trash-empty: cannot remove %s\n" % self.unreadable_dir ==
self.err.getvalue())
def tearDown(self):
make_readable(self.unreadable_dir)
self.tmp_dir.clean_up()
|