[PATCH hglib] merge and resolve return boolean instead of raising an exception

Andrey Somov py4fun at gmail.com
Thu Jan 26 18:30:02 UTC 2012


# HG changeset patch
# User py4fun
# Date 1327602055 -3600
# Node ID daa30292d864b8b1b94ee0f4393d1c98ba2fdfc0
# Parent  e5d3b0aa48e6ab79531204f61e25ee335b306df3
merge and resolve return boolean instead of raising an exception

diff -r e5d3b0aa48e6 -r daa30292d864 hglib/client.py
--- a/hglib/client.py	Tue Jan 17 17:15:47 2012 -0600
+++ b/hglib/client.py	Thu Jan 26 19:20:55 2012 +0100
@@ -999,6 +999,8 @@
         removed it. It can be one of merge.handlers, or a function that gets a
         single argument which are the contents of stdout. It should return one
         of the expected choices (a single character).
+        
+        Returns True on success, False if there are unresolved files.
         """
         # we can't really use --preview since merge doesn't support --template
         args = cmdbuilder('merge', r=rev, f=force, t=tool)
@@ -1011,7 +1013,9 @@
         else:
             prompt = lambda size, output: cb(output) + '\n'
 
-        self.rawcommand(args, prompt=prompt)
+        eh = util.reterrorhandler(args)
+        self.rawcommand(args, prompt=prompt, eh=eh)
+        return bool(eh)
 
     def move(self, source, dest, after=False, force=False, dryrun=False,
              include=None, exclude=None):
@@ -1237,13 +1241,16 @@
         args = cmdbuilder('resolve', a=all, l=listfiles, m=mark, u=unmark,
                           t=tool, I=include, X=exclude, *file)
 
-        out = self.rawcommand(args)
+        eh = util.reterrorhandler(args)
+        out = self.rawcommand(args, eh=eh)
 
         if listfiles:
             l = []
             for line in out.splitlines():
                 l.append(tuple(line.split(' ', 1)))
             return l
+        else:
+            return bool(eh)
 
     def revert(self, files, rev=None, all=False, date=None, nobackup=False,
                dryrun=False, include=None, exclude=None):
diff -r e5d3b0aa48e6 -r daa30292d864 hglib/context.py
--- a/hglib/context.py	Tue Jan 17 17:15:47 2012 -0600
+++ b/hglib/context.py	Thu Jan 26 19:20:55 2012 +0100
@@ -205,4 +205,4 @@
         """
         return the ancestor context of self and c2
         """
-        return changectx(self._repo, 'ancestor(%s, %s)' % (self, n2))
+        return changectx(self._repo, 'ancestor(%s, %s)' % (self, c2))
diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-merge.py
--- a/tests/test-merge.py	Tue Jan 17 17:15:47 2012 -0600
+++ b/tests/test-merge.py	Thu Jan 26 19:20:55 2012 +0100
@@ -14,7 +14,7 @@
         self.client.update(self.node0)
         self.append('b', 'a')
         rev, node2 = self.client.commit('new file', addremove=True)
-        self.client.merge(self.node1)
+        self.assertTrue(self.client.merge(self.node1))
         rev, node = self.client.commit('merge')
         diff = """diff -r %s -r %s a
 --- a/a
@@ -40,7 +40,7 @@
         self.client.remove('a')
         rev, node = self.client.commit('remove')
 
-        self.client.merge(cb=hglib.merge.handlers.noninteractive)
+        self.assertTrue(self.client.merge(cb=hglib.merge.handlers.noninteractive))
 
         diff = """diff -r %s a
 --- /dev/null
@@ -59,7 +59,7 @@
         def cb(output):
             return 'c'
 
-        self.client.merge(cb=cb)
+        self.assertTrue(self.client.merge(cb=cb))
 
         diff = """diff -r %s a
 --- /dev/null
diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-resolve.py
--- a/tests/test-resolve.py	Tue Jan 17 17:15:47 2012 -0600
+++ b/tests/test-resolve.py	Thu Jan 26 19:20:55 2012 +0100
@@ -18,12 +18,12 @@
         self.append('b', 'a')
         rev, self.node3 = self.client.commit('third')
 
-        self.assertRaises(hglib.error.CommandError, self.client.merge, self.node1)
-        self.assertRaises(hglib.error.CommandError, self.client.resolve, all=True)
+        self.assertFalse(self.client.merge(self.node1))
+        self.assertFalse(self.client.resolve(all=True))
 
         self.assertEquals([('U', 'a'), ('U', 'b')],
                           self.client.resolve(listfiles=True))
 
-        self.client.resolve('a', mark=True)
+        self.assertTrue(self.client.resolve('a', mark=True))
         self.assertEquals([('R', 'a'), ('U', 'b')],
                           self.client.resolve(listfiles=True))
diff -r e5d3b0aa48e6 -r daa30292d864 tests/test-summary.py
--- a/tests/test-summary.py	Tue Jan 17 17:15:47 2012 -0600
+++ b/tests/test-summary.py	Thu Jan 26 19:20:55 2012 +0100
@@ -103,7 +103,7 @@
         self.append('b', 'a')
         rev2, node2 = self.client.commit('third', addremove=True)
 
-        self.client.merge(rev1)
+        self.assertTrue(self.client.merge(rev1))
 
         d = {'parent' : [(2, node2[:12], 'tip', 'third'),
                          (1, node1[:12], None, 'second')],


More information about the Mercurial-devel mailing list