# HG changeset patch # User Mads Kiilerich # Date 1365699813 -7200 # Node ID e4ae397595e84ad89c9e70591d772f5389450b70 # Parent 8086b530e2ac23f60ee01e6fa274aec1bb32d988 record: abort on malformed patches instead of crashing diff -r 8086b530e2ac -r e4ae397595e8 hgext/record.py --- a/hgext/record.py Mon Apr 15 01:22:15 2013 +0900 +++ b/hgext/record.py Thu Apr 11 19:03:33 2013 +0200 @@ -531,7 +531,11 @@ fp.seek(0) # 1. filter patch, so we have intending-to apply subset of it - chunks = filterpatch(ui, parsepatch(fp)) + try: + chunks = filterpatch(ui, parsepatch(fp)) + except patch.PatchError, err: + raise util.Abort(_('error parsing patch: %s') % err) + del fp contenders = set() diff -r 8086b530e2ac -r e4ae397595e8 tests/test-record.t --- a/tests/test-record.t Mon Apr 15 01:22:15 2013 +0900 +++ b/tests/test-record.t Thu Apr 11 19:03:33 2013 +0200 @@ -1176,6 +1176,53 @@ +That change will not be committed +That is the second line +That line has been added + +Malformed patch - error handling + + $ cat > editor.sh << '__EOF__' + > sed -e '/^@/p' "$1" > tmp + > mv tmp "$1" + > __EOF__ + $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record < y + > e + > EOF + diff --git a/editedfile b/editedfile + 1 hunks, 3 lines changed + examine changes to 'editedfile'? [Ynesfdaq?] + @@ -1,3 +1,3 @@ + -This is the first line + -This change will be committed + -This is the third line + +This change will not be committed + +This is the second line + +This line has been added + record this change to 'editedfile'? [Ynesfdaq?] + abort: error parsing patch: unhandled transition: range -> range + [255] + + $ cat > editor.sh << '__EOF__' + > sed -e '/^@/iother' "$1" > tmp + > mv tmp "$1" + > __EOF__ + $ HGEDITOR="\"sh\" \"`pwd`/editor.sh\"" hg record < y + > e + > EOF + diff --git a/editedfile b/editedfile + 1 hunks, 3 lines changed + examine changes to 'editedfile'? [Ynesfdaq?] + @@ -1,3 +1,3 @@ + -This is the first line + -This change will be committed + -This is the third line + +This change will not be committed + +This is the second line + +This line has been added + record this change to 'editedfile'? [Ynesfdaq?] + abort: error parsing patch: unknown patch content: 'other\n' + [255] + $ hg up -C 1 files updated, 0 files merged, 0 files removed, 0 files unresolved