Hi brian, On Sat, 25 Jan 2020, brian m. carlson wrote: > This test produces a large number of diff formats and compares the > output with test files that have content specific to SHA-1. Since we are > more interested in the format of the diffs, and not their specific > values, which are tested elsewhere, add a function which uses sed to > transform these specific object IDs into generic ones of the right size, > which we can then compare. > > Signed-off-by: brian m. carlson <sandals@xxxxxxxxxxxxxxxxxxxx> > --- > t/t4013-diff-various.sh | 44 +++++++++++++++++++++++++++++++++++------ > 1 file changed, 38 insertions(+), 6 deletions(-) > > diff --git a/t/t4013-diff-various.sh b/t/t4013-diff-various.sh > index 5ac94b390d..6f5f05c3a8 100755 > --- a/t/t4013-diff-various.sh > +++ b/t/t4013-diff-various.sh > @@ -120,6 +120,30 @@ test_expect_success setup ' > +*++ [initial] Initial > EOF > > +process_diffs () { > + x04="[0-9a-f][0-9a-f][0-9a-f][0-9a-f]" && > + x07="$_x05[0-9a-f][0-9a-f]" && Any reason not to stay with the convention, i.e. using `_x04` and `_x07` here (with leading underscores)? > + sed -e "s/$OID_REGEX/$ZERO_OID/g" \ > + -e "s/From $_x40 /From $ZERO_OID /" \ > + -e "s/from $_x40)/from $ZERO_OID)/" \ > + -e "s/commit $_x40\$/commit $ZERO_OID/" \ > + -e "s/commit $_x40 (/commit $ZERO_OID (/" \ > + -e "s/$_x40 $_x40 $_x40/$ZERO_OID $ZERO_OID $ZERO_OID/" \ > + -e "s/$_x40 $_x40 /$ZERO_OID $ZERO_OID /" \ > + -e "s/^$_x40 $_x40$/$ZERO_OID $ZERO_OID/" \ > + -e "s/^$_x40 /$ZERO_OID /" \ > + -e "s/^$_x40$/$ZERO_OID/" \ > + -e "s/$x07\.\.$x07/fffffff..fffffff/g" \ > + -e "s/$x07,$x07\.\.$x07/fffffff,fffffff..fffffff/g" \ > + -e "s/$x07 $x07 $x07/fffffff fffffff fffffff/g" \ > + -e "s/$x07 $x07 /fffffff fffffff /g" \ > + -e "s/Merge: $x07 $x07/Merge: fffffff fffffff/g" \ > + -e "s/$x07\.\.\./fffffff.../g" \ > + -e "s/ $x04\.\.\./ ffff.../g" \ > + -e "s/ $x04/ ffff/g" \ > + "$1" > +} > + > V=$(git version | sed -e 's/^git version //' -e 's/\./\\./g') > while read magic cmd > do > @@ -158,13 +182,15 @@ do > } >"$actual" && > if test -f "$expect" > then > + process_diffs "$actual" >actual && > + process_diffs "$expect" >expect && > case $cmd in > *format-patch* | *-stat*) > - test_i18ncmp "$expect" "$actual";; > + test_i18ncmp expect actual;; > *) > - test_cmp "$expect" "$actual";; > + test_cmp expect actual;; > esac && > - rm -f "$actual" > + rm -f "$actual" actual expect > else > # this is to help developing new tests. > cp "$actual" "$expect" > @@ -383,16 +409,22 @@ test_expect_success 'log -S requires an argument' ' > test_expect_success 'diff --cached on unborn branch' ' > echo ref: refs/heads/unborn >.git/HEAD && > git diff --cached >result && > - test_cmp "$TEST_DIRECTORY/t4013/diff.diff_--cached" result > + process_diffs result >actual && > + process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--cached" >expected && I was about to suggest letting `process_diffs` work in-place, but this line makes that idea moot. Another idea I had was to implement a `test_cmp_diff` that processes the diffs and then compares them, but I guess that would be _less_ concise than this patch. Looks good, Dscho > + test_cmp expected actual > ' > > test_expect_success 'diff --cached -- file on unborn branch' ' > git diff --cached -- file0 >result && > - test_cmp "$TEST_DIRECTORY/t4013/diff.diff_--cached_--_file0" result > + process_diffs result >actual && > + process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--cached_--_file0" >expected && > + test_cmp expected actual > ' > test_expect_success 'diff --line-prefix with spaces' ' > git diff --line-prefix="| | | " --cached -- file0 >result && > - test_cmp "$TEST_DIRECTORY/t4013/diff.diff_--line-prefix_--cached_--_file0" result > + process_diffs result >actual && > + process_diffs "$TEST_DIRECTORY/t4013/diff.diff_--line-prefix_--cached_--_file0" >expected && > + test_cmp expected actual > ' > > test_expect_success 'diff-tree --stdin with log formatting' ' >