changeset 124:cc7569bffb26

context: add 'hidden' method to check if the changeset is hidden This method should not be a static property obtained at creation as the hidden status may change.
author Paul Tonelli <paul.tonelli@logilab.fr>
date Thu, 15 May 2014 15:12:13 +0200
parents cdde1656346f
children 8d9a9da3e7b4
files hglib/context.py tests/test-hidden.py
diffstat 2 files changed, 32 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/hglib/context.py	Thu May 22 15:23:12 2014 +0200
+++ b/hglib/context.py	Thu May 15 15:12:13 2014 +0200
@@ -194,6 +194,11 @@
     def bookmarks(self):
         return self._bookmarks
 
+    def hidden(self):
+        """return True if the changeset is hidden, else False"""
+        return bool(self._repo.log(revrange='%s and hidden()' % self._node,
+                                   hidden=True))
+
     def children(self):
         """return contexts for each child changeset"""
         for c in self._repo.log('children(%s)' % self._node):
--- a/tests/test-hidden.py	Thu May 22 15:23:12 2014 +0200
+++ b/tests/test-hidden.py	Thu May 15 15:12:13 2014 +0200
@@ -2,7 +2,7 @@
 from hglib.error import CommandError
 
 class test_obsolete_reference(common.basetest):
-    '''make sure obsolete changesets are disabled'''
+    """make sure obsolete changesets are disabled"""
     def test_debugobsolete_failure(self):
         f = open('gna1','w')
         f.write('g')
@@ -13,21 +13,25 @@
             self.client.rawcommand(['debugobsolete', cs])
 
 
-class test_obsolete(common.basetest):
-    '''test a few client methods with obsolete changesets enabled'''
+class test_obsolete_baselib(common.basetest):
+    """base test class with obsolete changesets enabled"""
     def setUp(self):
         #create an extension which only activates obsolete
-        super(test_obsolete, self).setUp()
-        self.append('.hg/obs.py','''import mercurial.obsolete\nmercurial.obsolete._enabled = True''')
+        super(test_obsolete_baselib, self).setUp()
+        self.append('.hg/obs.py',"""import mercurial.obsolete\nmercurial.obsolete._enabled = True""")
         self.append('.hg/hgrc','\n[extensions]\nobs=.hg/obs.py')
 
+class test_obsolete_client(test_obsolete_baselib):
+    """check client methods with obsolete changesets enabled"""
     def test_debugobsolete_success(self):
+        """check the obsolete extension is available"""
         self.append('gna1','ga')
         self.client.add('gna1')
         cs = self.client.commit('gna1')[1] #get id
         self.client.rawcommand(['debugobsolete', cs])
 
     def test_obsolete_in(self):
+        """test the 'hidden' keyword with the 'in' method"""
         self.append('gna1','ga')
         self.client.add('gna1')
         cs0 = self.client.commit('gna1')[1] #get id
@@ -41,3 +45,21 @@
         self.client.hidden = True
         self.assertTrue(cs1 in self.client)
 
+class test_hidden_context(test_obsolete_baselib):
+    """test the "hidden" context method with obsolete changesets enabled on
+    hidden and visible changesets"""
+    def test_hidden(self):
+        self.append('gna1','ga')
+        self.client.add('gna1')
+        cs0 = self.client.commit('gna1')[1] #get id
+        ctx0 = self.client[cs0]
+        self.append('gna2','gaaa')
+        self.client.add('gna2')
+        cs1 = self.client.commit('gna2')[1] #get id
+        ctx1 = self.client[cs1]
+        self.client.rawcommand(['debugobsolete', cs1])
+        self.client.update(cs0)
+        self.assertTrue(ctx1.hidden())
+        self.assertFalse(ctx0.hidden())
+
+