[PATCH 9 of 9 hglib] update: raise a dedicated error when the revision isn't found
Idan Kamara
idankk86 at gmail.com
Thu Jul 28 14:59:02 CDT 2011
# HG changeset patch
# User Idan Kamara <idankk86 at gmail.com>
# Date 1311450940 -10800
# Node ID 2019d7ef01c2075536e428ae38c19c9758111564
# Parent 297ddaa9e8d236efca1061bb8548929518d6d87f
update: raise a dedicated error when the revision isn't found
diff -r 297ddaa9e8d2 -r 2019d7ef01c2 hglib/error.py
--- a/hglib/error.py Sat Jul 23 22:55:40 2011 +0300
+++ b/hglib/error.py Sat Jul 23 22:55:40 2011 +0300
@@ -17,6 +17,11 @@
self.name = name
CommandError.__init__(self, *args, **kwargs)
+class RevisionLookupError(CommandError):
+ def __init__(self, name, *args, **kwargs):
+ self.name = name
+ CommandError.__init__(self, *args, **kwargs)
+
class ServerError(Exception):
pass
diff -r 297ddaa9e8d2 -r 2019d7ef01c2 hglib/hglib.py
--- a/hglib/hglib.py Sat Jul 23 22:55:40 2011 +0300
+++ b/hglib/hglib.py Sat Jul 23 22:55:40 2011 +0300
@@ -196,7 +196,12 @@
args.arg('--template', [templates.changeset])
args.argif(revset, '-r', revset)
- out = self.outputruncommand(args)[1]
+ ret, out, err = self.outputruncommand(args, raiseonerror=False)
+ if ret:
+ # len("abort: unknown revision '") == 25
+ raise error.RevisionLookupError(err.rstrip()[25:-2], args, ret, out,
+ err)
+
out = out.split('\0')[:-1]
return changeset.fromtemplate(out)
diff -r 297ddaa9e8d2 -r 2019d7ef01c2 tests/test-log.py
--- a/tests/test-log.py Sat Jul 23 22:55:40 2011 +0300
+++ b/tests/test-log.py Sat Jul 23 22:55:40 2011 +0300
@@ -1,7 +1,10 @@
import common
-from hglib import hglib
+from hglib import hglib, error
class test_log(common.basetest):
+ def test_empty(self):
+ self.assertEquals(self.client.log(), [])
+
def test_basic(self):
self.append('a', 'a')
rev0 = self.client.commit('first', addremove=True)
@@ -15,3 +18,13 @@
self.assertEquals(revs[1], rev1)
self.assertEquals(revs[0], self.client.log('0')[0])
+
+ def test_nonexistent(self):
+ self.append('a', 'a')
+ rev0 = self.client.commit('first', addremove=True)
+ try:
+ self.client.log('abcd')
+ except error.RevisionLookupError, e:
+ self.assertEquals(e.name, 'abcd')
+ else:
+ self.assertTrue(False)
More information about the Mercurial-devel
mailing list