def test_rmobjdir_error_final_rmdir(self): seen = [0] _orig_rm = utils.do_rmdir def _mock_rm(path): print "_mock_rm-files_left_in_top_dir(%s)" % path if path == self.rootdir: if not seen[0]: seen[0] = 1 raise OSError(errno.ENOTEMPTY, os.strerror(errno.ENOTEMPTY)) else: raise OSError(errno.EACCES, os.strerror(errno.EACCES)) else: shutil.rmtree(path) raise OSError(errno.ENOENT, os.strerror(errno.ENOENT)) # Remove the files, leaving the ones at the root for f in self.files: os.unlink(os.path.join(self.rootdir, f)) utils.do_rmdir = _mock_rm try: try: utils.rmobjdir(self.mp, self.rootdir) except OSError: pass else: self.fail("Expected OSError") finally: utils.do_rmdir = _orig_rm
def test_rmobjdir_rmdir_error(self): seen = [0] _orig_rm = utils.do_rmdir def _mock_rm(path): print "_mock_rm-rmdir_enoent(%s)" % path if path == self.rootdir and not seen[0]: seen[0] = 1 raise OSError(errno.ENOTEMPTY, os.strerror(errno.ENOTEMPTY)) else: raise OSError(errno.EACCES, os.strerror(errno.EACCES)) # Remove the files for f in self.files: os.unlink(os.path.join(self.rootdir, f)) utils.do_rmdir = _mock_rm try: try: utils.rmobjdir(self.mp, self.rootdir) except OSError: pass else: self.fail("Expected OSError") finally: utils.do_rmdir = _orig_rm
def test_rmobjdir_removing_files(self): self.assertFalse(utils.rmobjdir(self.mp, self.rootdir)) # Remove the files for f in self.files: os.unlink(os.path.join(self.rootdir, f)) self.assertTrue(utils.rmobjdir(self.mp, self.rootdir))
def test_rmobjdir_removing_dirs(self): self.assertFalse(utils.rmobjdir(self.mp, self.rootdir)) # Remove the files for f in self.files: os.unlink(os.path.join(self.rootdir, f)) self._set_dir_object(self.dirs[0]) self.assertFalse(utils.rmobjdir(self.mp, self.rootdir)) self._clear_dir_object(self.dirs[0]) self.assertTrue(utils.rmobjdir(self.mp, self.rootdir))
def test_rmobjdir_metadata_errors(self): def _mock_rm(path): print "_mock_rm-metadata_errors(%s)" % path if path.endswith("dir3"): raise OSError(13, "foo") return {} _orig_rm = self.mp.read_metadata self.mp.read_metadata = _mock_rm try: try: utils.rmobjdir(self.mp, self.rootdir) except OSError: pass else: self.fail("Expected OSError") finally: self.mp.read_metadata = _orig_rm
def test_rmobjdir_metadata_enoent(self): def _mock_rm(path): print "_mock_rm-metadata_enoent(%s)" % path shutil.rmtree(path) raise FileConnectorFileSystemIOError(errno.ENOENT, os.strerror(errno.ENOENT)) # Remove the files for f in self.files: os.unlink(os.path.join(self.rootdir, f)) _orig_rm = self.mp.read_metadata self.mp.read_metadata = _mock_rm try: try: self.assertTrue(utils.rmobjdir(self.mp, self.rootdir)) except IOError: self.fail("Unexpected IOError") else: pass finally: self.mp.read_metadata = _orig_rm