def test_bug_will_use_top_trashdir_even_with_not_sticky(self): self.fs.mock_add_spec(['isdir', 'islink', 'has_sticky_bit', 'move', 'atomic_write', 'remove_file', 'ensure_dir']) self.fs.isdir.return_value = True self.fs.islink.return_value = False self.fs.has_sticky_bit.return_value = False result = TrashResult(False) self.file_trasher.trash_file('sandbox/foo', None, None, result, self.logger, self.reporter) assert self.fs.mock_calls == [ call.isdir('.Trash'), call.islink('.Trash'), call.has_sticky_bit('.Trash'), call.ensure_dir('.Trash-123/files', 448), call.ensure_dir('.Trash-123/info', 448), call.atomic_write('.Trash-123/info/foo.trashinfo', ANY), call.move('sandbox/foo', '.Trash-123/files/foo') ]
def test_the_file_should_be_moved_in_trash_dir(self): self.trashdir.trash2('foo', self.now) assert self.fs.mock_calls == [call.move('foo', 'files/')] assert self.info_dir.mock_calls == [ call.persist_trash_info( 'foo', b'[Trash Info]\nPath=foo\nDeletionDate=1970-01-01T00:00:00\n')]
def test_move_then_validate(self): """Ensures the validate method is called""" mock_holder = MagicMock() self.patch_ctor_methods() mock_holder.attach_mock(self.mock_move, 'move') mock_holder.attach_mock(self.mock_validate, 'validate') self.construct_options() self.schedule_ctor_patch_cleanup() mock_holder.assert_has_calls([call.move(), call.validate()])
def test_should_rollback_trashinfo_creation_on_problems(self): self.fs.move.side_effect = IOError try: self.trashdir.trash2('foo', self.now) except IOError: pass assert self.fs.mock_calls == [call.move('foo', 'files/'), call.remove_file('info_file')] assert self.info_dir.mock_calls == [ call.persist_trash_info( 'foo', b'[Trash Info]\nPath=foo\nDeletionDate=1970-01-01T00:00:00\n')]
def test_should_skip_top_trash_if_does_not_exists(self): self.fs.mock_add_spec(['isdir', 'islink', 'move', 'atomic_write', 'remove_file', 'ensure_dir']) self.fs.isdir.side_effect = lambda x:['.Trash'][False] self.fs.islink.side_effect = lambda x:['.Trash'][False] self.trashcan.trash('sandbox/foo') assert_equals([ call.isdir('.Trash'), call.islink('.Trash'), call.ensure_dir('.Trash/123/info', 448), call.atomic_write('.Trash/123/info/foo.trashinfo', ANY), call.ensure_dir('.Trash/123/files', 448), call.move('sandbox/foo', '.Trash/123/files/foo') ], self.fs.mock_calls)
def test_until_the_restore_unit(self): self.fs.path_exists.return_value = False trashed_file = TrashedFile('parent/path', None, 'info_file', 'orig_file') self.user_reply = '0' self.cmd.restore_asking_the_user([trashed_file]) assert '' == self.stdout.getvalue() assert '' == self.stderr.getvalue() assert [ call.path_exists('parent/path'), call.mkdirs('parent'), call.move('orig_file', 'parent/path'), call.remove_file('info_file') ] == self.fs.mock_calls
def test_until_the_restore_unit(self): trashed_file = TrashedFile('parent/path', None, 'info_file', 'orig_file') fs = Mock() self.cmd.fs = fs self.cmd.path_exists = lambda _: False self.user_reply = '0' self.cmd.restore_asking_the_user([trashed_file]) assert_equals('', self.stdout.getvalue()) assert_equals('', self.stderr.getvalue()) assert_equals([ call.mkdirs('parent'), call.move('orig_file', 'parent/path'), call.remove_file('info_file') ], fs.mock_calls)
def test_should_skip_top_trash_if_does_not_exists(self): self.fs.mock_add_spec([ 'isdir', 'islink', 'move', 'atomic_write', 'remove_file', 'ensure_dir' ]) self.fs.isdir.side_effect = lambda x: ['.Trash'][False] self.fs.islink.side_effect = lambda x: ['.Trash'][False] self.trashcan.trash('sandbox/foo') assert_equals([ call.isdir('.Trash'), call.islink('.Trash'), call.ensure_dir('.Trash/123/info', 448), call.atomic_write('.Trash/123/info/foo.trashinfo', ANY), call.ensure_dir('.Trash/123/files', 448), call.move('sandbox/foo', '.Trash/123/files/foo') ], self.fs.mock_calls)
def test_bug_will_use_top_trashdir_even_with_not_sticky(self): self.fs.mock_add_spec(['isdir', 'islink', 'has_sticky_bit', 'move', 'atomic_write', 'remove_file', 'ensure_dir']) self.fs.isdir.return_value = True self.fs.islink.return_value = False self.fs.has_sticky_bit.return_value = False self.trashcan.trash('sandbox/foo') assert_equal([ call.isdir('.Trash'), call.islink('.Trash'), call.has_sticky_bit('.Trash'), call.ensure_dir('.Trash-123/info', 448), call.atomic_write('.Trash-123/info/foo.trashinfo', ANY), call.ensure_dir('.Trash-123/files', 448), call.move('sandbox/foo', '.Trash-123/files/foo') ], self.fs.mock_calls, self.fs.mock_calls)
def test_bug_will_use_top_trashdir_even_with_not_sticky(self): self.fs.mock_add_spec(['isdir', 'islink', 'has_sticky_bit', 'move', 'atomic_write', 'remove_file', 'ensure_dir']) self.fs.isdir.return_value = True self.fs.islink.return_value = False self.fs.has_sticky_bit.return_value = False self.trashcan.trash('sandbox/foo') assert_equals([ call.isdir('.Trash'), call.islink('.Trash'), call.has_sticky_bit('.Trash'), call.ensure_dir('.Trash-123/info', 448), call.atomic_write('.Trash-123/info/foo.trashinfo', ANY), call.ensure_dir('.Trash-123/files', 448), call.move('sandbox/foo', '.Trash-123/files/foo') ], self.fs.mock_calls, self.fs.mock_calls)
def test_use_of_top_trash_dir_when_sticky(self): self.fs.mock_add_spec([ 'isdir', 'islink', 'has_sticky_bit', 'move', 'atomic_write', 'remove_file', 'ensure_dir' ]) self.fs.isdir.return_value = True self.fs.islink.return_value = False self.fs.has_sticky_bit.return_value = True self.trashcan.trash('sandbox/foo') assert [ call.isdir('.Trash'), call.islink('.Trash'), call.has_sticky_bit('.Trash'), call.ensure_dir('.Trash/123/info', 448), call.atomic_write('.Trash/123/info/foo.trashinfo', ANY), call.ensure_dir('.Trash/123/files', 448), call.move('sandbox/foo', '.Trash/123/files/foo') ] == self.fs.mock_calls
def test_until_the_restore_unit(self): from mock import Mock, call trashed_file = TrashedFile( 'parent/path', None, 'info_file', 'orig_file') fs = Mock() self.cmd.fs = fs self.cmd.path_exists = lambda _: False self.user_reply = '0' self.cmd.restore_asking_the_user([trashed_file]) assert_equals('', self.stdout.getvalue()) assert_equals('', self.stderr.getvalue()) assert_equals([ call.mkdirs('parent') , call.move('orig_file', 'parent/path') , call.remove_file('info_file') ], fs.mock_calls)