Mercurial > hg
changeset 18953:e4ae397595e8
record: abort on malformed patches instead of crashing
author | Mads Kiilerich <madski@unity3d.com> |
---|---|
date | Thu, 11 Apr 2013 19:03:33 +0200 |
parents | 8086b530e2ac |
children | b1639e98e8a1 |
files | hgext/record.py tests/test-record.t |
diffstat | 2 files changed, 52 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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()
--- 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 <<EOF + > 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 <<EOF + > 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