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')