# HG changeset patch # User Idan Kamara # Date 1312926163 -10800 # Node ID 400cb1520834e7a6c1e5be88b59238acfa037339 # Parent c2a9b716cd80815f0cccf974cdd0e43aad52882b client: add missing options to import_() and don't read the file before calling hg, just pass it as one of the arguments diff -r c2a9b716cd80 -r 400cb1520834 hglib/client.py --- 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', diff -r c2a9b716cd80 -r 400cb1520834 tests/test-import.py --- 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')