Verify that patch ID is now stable against hunk reordering. Signed-off-by: Michael S. Tsirkin <mst@xxxxxxxxxx> --- t/t4204-patch-id.sh | 68 +++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 63 insertions(+), 5 deletions(-) diff --git a/t/t4204-patch-id.sh b/t/t4204-patch-id.sh index d2c930d..75f77ef 100755 --- a/t/t4204-patch-id.sh +++ b/t/t4204-patch-id.sh @@ -5,12 +5,27 @@ test_description='git patch-id' . ./test-lib.sh test_expect_success 'setup' ' - test_commit initial foo a && - test_commit first foo b && + test_commit initial-foo foo a && + test_commit initial-bar bar a && + echo b > foo && + echo b > bar && + git commit -a -m first && git checkout -b same HEAD^ && - test_commit same-msg foo b && + echo b > foo && + echo b > bar && + git commit -a -m same-msg && git checkout -b notsame HEAD^ && - test_commit notsame-msg foo c + echo c > foo && + echo c > bar && + git commit -a -m notsame-msg && + cat > bar-then-foo <<EOF +bar +foo +EOF + cat > foo-then-bar <<EOF +foo +bar +EOF ' test_expect_success 'patch-id output is well-formed' ' @@ -23,11 +38,33 @@ calc_patch_id () { sed "s# .*##" > patch-id_"$1" } +calc_patch_id_unstable () { + git patch-id --unstable | + sed "s# .*##" > patch-id_"$1" +} + +calc_patch_id_stable () { + git patch-id --stable | + sed "s# .*##" > patch-id_"$1" +} + + get_patch_id () { - git log -p -1 "$1" | git patch-id | + git log -p -1 "$1" -O bar-then-foo -- | git patch-id | + sed "s# .*##" > patch-id_"$1" +} + +get_patch_id_stable () { + git log -p -1 "$1" -O bar-then-foo | git patch-id --stable | + sed "s# .*##" > patch-id_"$1" +} + +get_patch_id_unstable () { + git log -p -1 "$1" -O bar-then-foo | git patch-id --unstable | sed "s# .*##" > patch-id_"$1" } + test_expect_success 'patch-id detects equality' ' get_patch_id master && get_patch_id same && @@ -56,6 +93,27 @@ test_expect_success 'whitespace is irrelevant in footer' ' test_cmp patch-id_master patch-id_same ' +test_expect_success 'file order is irrelevant by default' ' + get_patch_id master && + git checkout same && + git format-patch -1 --stdout -O foo-then-bar | calc_patch_id same && + test_cmp patch-id_master patch-id_same +' + +test_expect_success 'file order is irrelevant with --stable' ' + get_patch_id_stable master && + git checkout same && + git format-patch -1 --stdout -O foo-then-bar | calc_patch_id_stable same && + test_cmp patch-id_master patch-id_same +' + +test_expect_success 'file order is relevant with --unstable' ' + get_patch_id_unstable master && + git checkout same && + git format-patch -1 --stdout -O foo-then-bar | calc_patch_id_unstable notsame && + ! test_cmp patch-id_master patch-id_notsame +' + test_expect_success 'patch-id supports git-format-patch MIME output' ' get_patch_id master && git checkout same && -- MST -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html