changeset 11:0549d00a617d

client: add missing options to branch() and add some more tests
author Idan Kamara <idankk86@gmail.com>
date Wed, 10 Aug 2011 00:21:05 +0300
parents fce3102c19e5
children c2a9b716cd80
files hglib/client.py tests/test-branch.py
diffstat 2 files changed, 45 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/hglib/client.py	Tue Aug 09 23:24:40 2011 +0300
+++ b/hglib/client.py	Wed Aug 10 00:21:05 2011 +0300
@@ -141,9 +141,20 @@
         self.server = None
         return ret
 
-    def branch(self, name=None):
-        if not name:
-            return self.rawcommand(['branch']).rstrip()
+    def branch(self, name=None, clean=False, force=False):
+        if name and clean:
+            raise ValueError('cannot use both name and clean')
+
+        args = cmdbuilder('branch', name, f=force, C=clean)
+        out = self.rawcommand(args).rstrip()
+
+        if name:
+            return name
+        elif not clean:
+            return out
+        else:
+            # len('reset working directory to branch ') == 34
+            return out[34:]
 
     def branches(self):
         out = self.rawcommand(['branches'])
--- a/tests/test-branch.py	Tue Aug 09 23:24:40 2011 +0300
+++ b/tests/test-branch.py	Wed Aug 10 00:21:05 2011 +0300
@@ -2,10 +2,38 @@
 import hglib
 
 class test_branch(common.basetest):
+    def test_empty(self):
+        self.assertEquals(self.client.branch(), 'default')
+
     def test_basic(self):
-        self.assertEquals(self.client.branch(), 'default')
+        self.assertEquals(self.client.branch('foo'), 'foo')
         self.append('a', 'a')
         rev = self.client.commit('first', addremove=True)
-        branches = self.client.branches()
+
+        self.assertEquals(rev.branch, 'foo')
+        self.assertEquals(self.client.branches()[rev.branch], rev)
+
+    def test_reset_with_name(self):
+        self.assertRaises(ValueError, self.client.branch, 'foo', clean=True)
+
+    def test_reset(self):
+        self.client.branch('foo')
+        self.assertEquals(self.client.branch(clean=True), 'default')
 
-        self.assertEquals(rev, branches[rev.branch])
+    def test_exists(self):
+        self.append('a', 'a')
+        self.client.commit('first', addremove=True)
+        self.client.branch('foo')
+        self.append('a', 'a')
+        self.client.commit('second')
+        self.assertRaises(hglib.error.CommandError, self.client.branch, 'default')
+
+    def test_force(self):
+        self.append('a', 'a')
+        self.client.commit('first', addremove=True)
+        self.client.branch('foo')
+        self.append('a', 'a')
+        self.client.commit('second')
+
+        self.assertRaises(hglib.error.CommandError, self.client.branch, 'default')
+        self.assertEquals(self.client.branch('default', force=True), 'default')