=== modified file 'cmds.py' --- cmds.py 2012-02-29 11:50:00 +0000 +++ cmds.py 2012-03-01 21:17:18 +0000 @@ -31,12 +31,17 @@ :param processor_factory: a callable for creating a processor :param user_map: if not None, the file containing the user map. """ + from fastimport.errors import ParsingError + from bzrlib.errors import BzrCommandError from fastimport import parser stream = _get_source_stream(source) user_mapper = _get_user_mapper(user_map) proc = processor_factory(verbose=verbose, **kwargs) p = parser.ImportParser(stream, verbose=verbose, user_mapper=user_mapper) - return proc.process(p.iter_commands) + try: + return proc.process(p.iter_commands) + except ParsingError, e: + raise BzrCommandError("%d: Parse error: %s" % (e.lineno, e)) def _get_source_stream(source): @@ -309,13 +314,18 @@ def _generate_info(self, source): from cStringIO import StringIO from fastimport import parser + from fastimport.errors import ParsingError + from bzrlib.errors import BzrCommandError from bzrlib.plugins.fastimport.processors import info_processor stream = _get_source_stream(source) output = StringIO() try: proc = info_processor.InfoProcessor(verbose=True, outf=output) p = parser.ImportParser(stream) - return_code = proc.process(p.iter_commands) + try: + return_code = proc.process(p.iter_commands) + except ParsingError, e: + raise BzrCommandError("%d: Parse error: %s" % (e.lineno, e)) lines = output.getvalue().splitlines() finally: output.close() @@ -442,12 +452,16 @@ " a newer python-fastimport to use " "--dont-squash-empty-commits") + from fastimport.errors import ParsingError from fastimport import parser stream = _get_source_stream(source) user_mapper = _get_user_mapper(user_map) proc = filter_processor.FilterProcessor(params=params, verbose=verbose) p = parser.ImportParser(stream, verbose=verbose, user_mapper=user_mapper) - return proc.process(p.iter_commands) + try: + return proc.process(p.iter_commands) + except ParsingError, e: + raise BzrCommandError("%d: Parse error: %s" % (e.lineno, e)) class cmd_fast_import_info(Command): === modified file 'tests/test_commands.py' --- tests/test_commands.py 2011-11-22 20:28:59 +0000 +++ tests/test_commands.py 2012-03-01 21:17:18 +0000 @@ -228,6 +228,16 @@ data = self.run_bzr("fast-import file.fi br")[0] self.assertEquals(1, tree.branch.revno()) + def test_missing_bytes(self): + self.build_tree_contents([('empty.fi', """ +commit refs/heads/master +mark :1 +committer +data 15 +""")]) + self.make_branch_and_tree("br") + self.run_bzr_error(['bzr: ERROR: 4: Parse error: line 4: Command commit is missing section committer\n'], "fast-import empty.fi br") + class TestFastImportFilter(ExternalBase):