示例#1
0
 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"})
示例#2
0
 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))
示例#3
0
 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)
示例#4
0
    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)
示例#5
0
    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
示例#6
0
 def readobsshelveinfo(self):
     return scmutil.simplekeyvaluefile(self.vfs, self.fname).read()
示例#7
0
 def writeobsshelveinfo(self, info):
     scmutil.simplekeyvaluefile(self.vfs, self.fname).write(info)
示例#8
0
 def testcorruptedfile(self):
     self.vfs.contents["badfile"] = "ababagalamaga\n"
     with self.assertRaisesRegexp(error.CorruptedState, "dictionary.*element.*"):
         scmutil.simplekeyvaluefile(self.vfs, "badfile").read()
示例#9
0
 def testinvalidvalues(self):
     d = {"key1": "value1", "Key2": "value2\n"}
     with self.assertRaisesRegexp(error.ProgrammingError, "invalid val.*"):
         scmutil.simplekeyvaluefile(self.vfs, "kvfile").write(d)