You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
2.2 KiB
102 lines
2.2 KiB
#!/bin/sh |
|
|
|
test_description='git patch-id' |
|
|
|
. ./test-lib.sh |
|
|
|
test_expect_success 'setup' ' |
|
test_commit initial foo a && |
|
test_commit first foo b && |
|
git checkout -b same HEAD^ && |
|
test_commit same-msg foo b && |
|
git checkout -b notsame HEAD^ && |
|
test_commit notsame-msg foo c |
|
' |
|
|
|
test_expect_success 'patch-id output is well-formed' ' |
|
git log -p -1 | git patch-id > output && |
|
grep "^[a-f0-9]\{40\} $(git rev-parse HEAD)$" output |
|
' |
|
|
|
calc_patch_id () { |
|
git patch-id | |
|
sed "s# .*##" > patch-id_"$1" |
|
} |
|
|
|
get_patch_id () { |
|
git log -p -1 "$1" | git patch-id | |
|
sed "s# .*##" > patch-id_"$1" |
|
} |
|
|
|
test_expect_success 'patch-id detects equality' ' |
|
get_patch_id master && |
|
get_patch_id same && |
|
test_cmp patch-id_master patch-id_same |
|
' |
|
|
|
test_expect_success 'patch-id detects inequality' ' |
|
get_patch_id master && |
|
get_patch_id notsame && |
|
! test_cmp patch-id_master patch-id_notsame |
|
' |
|
|
|
test_expect_success 'patch-id supports git-format-patch output' ' |
|
get_patch_id master && |
|
git checkout same && |
|
git format-patch -1 --stdout | calc_patch_id same && |
|
test_cmp patch-id_master patch-id_same && |
|
set `git format-patch -1 --stdout | git patch-id` && |
|
test "$2" = `git rev-parse HEAD` |
|
' |
|
|
|
test_expect_success 'whitespace is irrelevant in footer' ' |
|
get_patch_id master && |
|
git checkout same && |
|
git format-patch -1 --stdout | sed "s/ \$//" | calc_patch_id same && |
|
test_cmp patch-id_master patch-id_same |
|
' |
|
|
|
test_expect_success 'patch-id supports git-format-patch MIME output' ' |
|
get_patch_id master && |
|
git checkout same && |
|
git format-patch -1 --attach --stdout | calc_patch_id same && |
|
test_cmp patch-id_master patch-id_same |
|
' |
|
|
|
cat >nonl <<\EOF |
|
diff --git i/a w/a |
|
index e69de29..2e65efe 100644 |
|
--- i/a |
|
+++ w/a |
|
@@ -0,0 +1 @@ |
|
+a |
|
\ No newline at end of file |
|
diff --git i/b w/b |
|
index e69de29..6178079 100644 |
|
--- i/b |
|
+++ w/b |
|
@@ -0,0 +1 @@ |
|
+b |
|
EOF |
|
|
|
cat >withnl <<\EOF |
|
diff --git i/a w/a |
|
index e69de29..7898192 100644 |
|
--- i/a |
|
+++ w/a |
|
@@ -0,0 +1 @@ |
|
+a |
|
diff --git i/b w/b |
|
index e69de29..6178079 100644 |
|
--- i/b |
|
+++ w/b |
|
@@ -0,0 +1 @@ |
|
+b |
|
EOF |
|
|
|
test_expect_success 'patch-id handles no-nl-at-eof markers' ' |
|
cat nonl | calc_patch_id nonl && |
|
cat withnl | calc_patch_id withnl && |
|
test_cmp patch-id_nonl patch-id_withnl |
|
' |
|
test_done
|
|
|