Mercurial > hgstorage
changeset 3:6671780796ef
Update session's tip after saving a file
| author | Radomir Dopieralski <sheep-devel@sheep.art.pl> |
|---|---|
| date | Fri, 13 May 2011 22:11:54 +0200 |
| parents | ab3f1dd999aa |
| children | 52f6805311fd |
| files | .hgignore hgstorage.py test_repo.py |
| diffstat | 3 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.hgignore Fri May 13 22:11:54 2011 +0200 @@ -0,0 +1,4 @@ +syntax: glob + +.*.swp +*.pyc
--- a/hgstorage.py Fri Apr 22 11:22:04 2011 +0200 +++ b/hgstorage.py Fri May 13 22:11:54 2011 +0200 @@ -72,7 +72,7 @@ class Session(object): def __init__(self, storage): self.storage = storage - self.tip = storage.repo.changectx('tip') + self.update() def __contains__(self, key): filename = self.storage._key_to_file(key) @@ -81,6 +81,9 @@ def __getitem__(self, key): return Item(self, key) + def update(self): + self.tip = self.storage.repo.changectx('tip') + def save(self, data, key, user=None, message=None, parent_rev=None, encoding=None, force=False): """Save a new revision of the item.""" @@ -118,13 +121,14 @@ text=message or "Commit Message", files=[filename], filectxfn=filectxfn, user=user or "user") self.storage.repo.commitctx(ctx) + self.update() def filectx(self, key, rev=None): filename = self.storage._key_to_file(key) try: filetip = self.tip[filename] except mercurial.revlog.LookupError: - raise KeyError("item %r doesn't exist") + raise KeyError("item %r doesn't exist" % filename ) if rev is None: filectx = filetip else:
--- a/test_repo.py Fri Apr 22 11:22:04 2011 +0200 +++ b/test_repo.py Fri May 13 22:11:54 2011 +0200 @@ -50,6 +50,19 @@ assert 'user' == user assert 'message' == message + def test_save_same_session(self, storage): + """Test saving of items in the same session.""" + + s = storage.session() + s.save('text', 'title', 'user', 'message') + exists = 'title' in s + assert exists + data = s.load('title') + assert 'text' == data + rev, date, user, message = s.meta('title') + assert 'user' == user + assert 'message' == message + def test_double_save(self, storage): s = storage.session() s.save('text1', 'title', 'user1', 'message1', -1, encoding='utf8')
