def _get_dir_obj(self, dir_id): blob = self._blob_store.get_blob(dir_id) if blob is None: # pragma: no cover return None as_dict = obnamlib.deserialise_object(blob) dir_obj = obnamlib.create_gadirectory_from_dict(as_dict) dir_obj.set_immutable() return dir_obj
def set_directory(self, pathname, dir_obj): self._cache.set(pathname, dir_obj) if pathname != "/": basename = os.path.basename(pathname) parent_path = os.path.dirname(pathname) parent_obj = self._cache.get(parent_path) if not parent_obj: parent_obj = self.get_directory(parent_path) if parent_obj: parent_obj = obnamlib.create_gadirectory_from_dict(parent_obj.as_dict()) else: parent_obj = obnamlib.GADirectory() parent_obj.add_file(".") if not parent_obj.is_mutable(): parent_obj = obnamlib.create_gadirectory_from_dict(parent_obj.as_dict()) parent_obj.add_subdir(basename, None) self.set_directory(parent_path, parent_obj)
def set_directory(self, pathname, dir_obj): self._cache.set(pathname, dir_obj) if pathname != '/': basename = os.path.basename(pathname) parent_path = os.path.dirname(pathname) parent_obj = self._cache.get(parent_path) if not parent_obj: parent_obj = self.get_directory(parent_path) if parent_obj: parent_obj = obnamlib.create_gadirectory_from_dict( parent_obj.as_dict()) else: parent_obj = obnamlib.GADirectory() parent_obj.add_file('.') if not parent_obj.is_mutable(): parent_obj = obnamlib.create_gadirectory_from_dict( parent_obj.as_dict()) parent_obj.add_subdir(basename, None) self.set_directory(parent_path, parent_obj)
def test_creates_GADirectory_from_dict(self): orig = obnamlib.GADirectory() orig.add_file('.') orig.set_file_key( '.', obnamlib.REPO_FILE_MODE, stat.S_IFDIR | 0755) orig.add_file('README') orig.set_file_key( 'README', obnamlib.REPO_FILE_MODE, stat.S_IFREG | 0644) orig.add_subdir('.git', 'git-dir-id') new = obnamlib.create_gadirectory_from_dict(orig.as_dict()) self.assertEqual(new.as_dict(), orig.as_dict())
def _remove_from_parent(self, pathname): self._cache.remove(pathname) basename = os.path.basename(pathname) parent_path = os.path.dirname(pathname) parent_obj = self._cache.get(parent_path) if not parent_obj: parent_obj = self.get_directory(parent_path) if parent_obj: parent_obj = obnamlib.create_gadirectory_from_dict(parent_obj.as_dict()) if parent_obj: parent_obj.remove_subdir(basename) self.set_directory(parent_path, parent_obj)
def _remove_from_parent(self, pathname): self._cache.remove(pathname) basename = os.path.basename(pathname) parent_path = os.path.dirname(pathname) parent_obj = self._cache.get(parent_path) if not parent_obj: parent_obj = self.get_directory(parent_path) if parent_obj: parent_obj = obnamlib.create_gadirectory_from_dict( parent_obj.as_dict()) if parent_obj: parent_obj.remove_subdir(basename) self.set_directory(parent_path, parent_obj)
def _make_mutable(self, dir_obj): if dir_obj.is_mutable(): return dir_obj else: return obnamlib.create_gadirectory_from_dict(dir_obj.as_dict())