def testfirstline(self): dw = {"key1": "value1"} scmutil.simplekeyvaluefile(self.vfs, "fl").write(dw, firstline="1.0") self.assertEqual(self.vfs.read("fl"), b"1.0\nkey1=value1\n") dr = scmutil.simplekeyvaluefile(self.vfs, "fl").read(firstlinenonkeyval=True) self.assertEqual(dr, {"__firstline": "1.0", "key1": "value1"})
def save( cls, repo, name, originalwctx, pendingctx, nodestoremove, branchtorestore, keep=False, activebook="", obsshelve=False, ): info = { "name": name, "originalwctx": nodemod.hex(originalwctx.node()), "pendingctx": nodemod.hex(pendingctx.node()), "parents": " ".join([nodemod.hex(p) for p in repo.dirstate.parents()]), "nodestoremove": " ".join([nodemod.hex(n) for n in nodestoremove]), "branchtorestore": branchtorestore, "keep": cls._keep if keep else cls._nokeep, "activebook": activebook or cls._noactivebook, "obsshelve": cls._obsbased if obsshelve else cls._traditional, } scmutil.simplekeyvaluefile(repo.localvfs, cls._filename).write( info, firstline=str(cls._version))
def testbasicwritingiandreading(self): dw = {"key1": "value1", "Key2": "value2"} scmutil.simplekeyvaluefile(self.vfs, "kvfile").write(dw) self.assertEqual( sorted(self.vfs.read("kvfile").split("\n")), ["", "Key2=value2", "key1=value1"], ) dr = scmutil.simplekeyvaluefile(self.vfs, "kvfile").read() self.assertEqual(dr, dw)
def testinvalidkeys(self): d = {"0key1": "value1", "Key2": "value2"} with self.assertRaisesRegex(error.ProgrammingError, "keys must start with a letter.*"): scmutil.simplekeyvaluefile(self.vfs, "kvfile").write(d) d = {"key1@": "value1", "Key2": "value2"} with self.assertRaisesRegex(error.ProgrammingError, "invalid key.*"): scmutil.simplekeyvaluefile(self.vfs, "kvfile").write(d)
def load(cls, repo): version = cls._getversion(repo) if version < cls._version: d = cls._readold(repo) elif version == cls._version: d = scmutil.simplekeyvaluefile( repo.localvfs, cls._filename).read(firstlinenonkeyval=True) else: raise error.Abort( _("this version of shelve is incompatible " "with the version used in this repo")) cls._verifyandtransform(d) try: obj = cls() obj.name = d["name"] obj.wctx = repo[d["originalwctx"]] obj.pendingctx = repo[d["pendingctx"]] obj.parents = d["parents"] obj.nodestoremove = d["nodestoremove"] obj.branchtorestore = d.get("branchtorestore", "") obj.keep = d.get("keep") == cls._keep obj.activebookmark = "" if d.get("activebook", "") != cls._noactivebook: obj.activebookmark = d.get("activebook", "") obj.obsshelve = d["obsshelve"] == cls._obsbased except (error.RepoLookupError, KeyError) as err: raise error.CorruptedState(str(err)) return obj
def readobsshelveinfo(self): return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
def writeobsshelveinfo(self, info): scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
def testcorruptedfile(self): self.vfs.contents["badfile"] = "ababagalamaga\n" with self.assertRaisesRegexp(error.CorruptedState, "dictionary.*element.*"): scmutil.simplekeyvaluefile(self.vfs, "badfile").read()
def testinvalidvalues(self): d = {"key1": "value1", "Key2": "value2\n"} with self.assertRaisesRegexp(error.ProgrammingError, "invalid val.*"): scmutil.simplekeyvaluefile(self.vfs, "kvfile").write(d)