#!/bin/sh test_description='git patch-id' GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME . ./test-lib.sh test_expect_success 'setup' ' as="a a a a a a a a" && # eight a test_write_lines $as >foo && test_write_lines $as >bar && git add foo bar && git commit -a -m initial && test_write_lines $as b >foo && test_write_lines $as b >bar && git commit -a -m first && git checkout -b same main && git commit --amend -m same-msg && git checkout -b notsame main && echo c >foo && echo c >bar && git commit --amend -a -m notsame-msg && test_write_lines bar foo >bar-then-foo && test_write_lines foo bar >foo-then-bar ' test_expect_success 'patch-id output is well-formed' ' git log -p -1 >log.output && git patch-id output && grep "^$OID_REGEX $(git rev-parse HEAD)$" output ' #calculate patch id. Make sure output is not empty. calc_patch_id () { patch_name="$1" shift git patch-id "$@" >patch-id.output && sed "s/ .*//" patch-id.output >patch-id_"$patch_name" && test_line_count -eq 1 patch-id_"$patch_name" } get_top_diff () { git log -p -1 "$@" -O bar-then-foo -- } get_patch_id () { get_top_diff "$1" >top-diff.output && calc_patch_id format-patch.output && calc_patch_id same format-patch.output && sed "s/ \$//" format-patch.output | calc_patch_id same && test_cmp patch-id_main patch-id_same ' cmp_patch_id () { if test "$1" = "relevant" then ! test_cmp patch-id_"$2" patch-id_"$3" else test_cmp patch-id_"$2" patch-id_"$3" fi } test_patch_id_file_order () { relevant="$1" shift name="order-${1}-$relevant" shift get_top_diff "main" >top-diff.output && calc_patch_id format-patch.output && calc_patch_id format-patch.output && calc_patch_id 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 calc_patch_id nonl diffu1 <<-\EOF && diff --git a/bar b/bar index bdaf90f..31051f6 100644 --- a/bar +++ b/bar @@ -2 +2,2 @@ b +c diff --git a/car b/car index 00750ed..2ae5e34 100644 --- a/car +++ b/car @@ -1 +1,2 @@ 3 +d diff --git a/foo b/foo index e439850..7146eb8 100644 --- a/foo +++ b/foo @@ -2 +2,2 @@ a +e EOF calc_patch_id diffu1