changeset 13:400cb1520834

client: add missing options to import_() and don't read the file before calling hg, just pass it as one of the arguments
author Idan Kamara <idankk86@gmail.com>
date Wed, 10 Aug 2011 00:42:43 +0300
parents c2a9b716cd80
children e0d21c9db20b
files hglib/client.py tests/test-import.py
diffstat 2 files changed, 34 insertions(+), 18 deletions(-) [+]
line wrap: on
line diff
--- a/hglib/client.py	Wed Aug 10 00:24:01 2011 +0300
+++ b/hglib/client.py	Wed Aug 10 00:42:43 2011 +0300
@@ -213,24 +213,34 @@
 
         return self._encoding
 
-    def import_(self, patch):
-        if isinstance(patch, str):
-            fp = open(patch)
-        else:
-            assert hasattr(patch, 'read')
-            assert hasattr(patch, 'readline')
+    def import_(self, patches, strip=None, force=False, nocommit=False,
+                bypass=False, exact=False, importbranch=False, message=None,
+                date=None, user=None, similarity=None):
+        """
+        patches can be a list of file names with patches to apply
+        or a file-like object that contains a patch (needs read and readline)
+        """
+        if hasattr(patches, 'read') and hasattr(patches, 'readline'):
+            patch = patches
 
-            fp = patch
+            def readline(size, output):
+                return patch.readline(size)
 
-        try:
-            def readline(size, output):
-                return fp.readline(size)
+            stdin = True
+            patches = ()
+            prompt = readline
+            input = patch.read
+        else:
+            stdin = False
+            prompt = None
+            input = None
 
-            self.rawcommand(cmdbuilder('import', _=True),
-                            prompt=readline, input=fp.read)
-        finally:
-            if fp != patch:
-                fp.close()
+        args = cmdbuilder('import', *patches, strip=strip, force=force,
+                          nocommit=nocommit, bypass=bypass, exact=exact,
+                          importbranch=importbranch, message=message,
+                          date=date, user=user, similarity=similarity, _=stdin)
+
+        self.rawcommand(args, prompt=prompt, input=input)
 
     def incoming(self, revrange=None, path=None):
         args = cmdbuilder('incoming',
--- a/tests/test-import.py	Wed Aug 10 00:24:01 2011 +0300
+++ b/tests/test-import.py	Wed Aug 10 00:42:43 2011 +0300
@@ -1,9 +1,7 @@
 import common, cStringIO
 import hglib
 
-class test_import(common.basetest):
-    def test_basic(self):
-        patch = """
+patch = """
 # HG changeset patch
 # User test
 # Date 0 0
@@ -17,5 +15,13 @@
 @@ -0,0 +1,1 @@
 +1
 """
+
+class test_import(common.basetest):
+    def test_basic_cstringio(self):
         self.client.import_(cStringIO.StringIO(patch))
         self.assertEquals(self.client.cat(['a']), '1\n')
+
+    def test_basic_file(self):
+        open('patch', 'w').write(patch)
+        self.client.import_(['patch'])
+        self.assertEquals(self.client.cat(['a']), '1\n')