git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 09/24] t4013: make test hash independent

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jan 13, 2020, 12:38 UTC
Message-ID
<20200113123857.3684632-10-sandals@crustytoothpaste.net>
In-Reply-To
<20200113123857.3684632-1-sandals@crustytoothpaste.net>

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@crustytoothpaste.net>
---
 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]" &&
+	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 &&
+	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' '
Previous: brian m. carlsonNext: brian m. carlson
Message 9 of 36 in “SHA-256 test fixes, part 8”
  1. 00/24 SHA-256 test fixes, part 8brian m. carlson, Jan 13, 2020
  2. 01/24 t/lib-pack: support SHA-256brian m. carlson, Jan 13, 2020
  3. 02/24 t3206: make hash size independentbrian m. carlson, Jan 13, 2020
  4. 08/24 t3404: remove SHA1 prerequisitebrian m. carlson, Jan 13, 2020
  5. 07/24 t3311: make test work with SHA-256brian m. carlson, Jan 13, 2020
  6. 11/24 t4211: make test hash independentbrian m. carlson, Jan 13, 2020
  7. 05/24 t3309: make test work with SHA-256brian m. carlson, Jan 13, 2020
  8. 12/24 t5302: make hash size independentbrian m. carlson, Jan 13, 2020
  9. 09/24 t4013: make test hash independentbrian m. carlson, Jan 13, 2020
  10. 03/24 t3305: annotate with SHA1 prerequisitebrian m. carlson, Jan 13, 2020
  11. 10/24 t4060: make test work with SHA-256brian m. carlson, Jan 13, 2020
  12. 06/24 t3310: make test work with SHA-256brian m. carlson, Jan 13, 2020
  13. 14/24 t5313: make test hash independentbrian m. carlson, Jan 13, 2020
  14. 21/24 t5703: switch tests to use test_oidbrian m. carlson, Jan 13, 2020
  15. 20/24 t5703: make test work with SHA-256brian m. carlson, Jan 13, 2020
  16. Eric SunshineJan 13, 2020
  17. brian m. carlsonJan 13, 2020
  18. 24/24 t6024: update for SHA-256brian m. carlson, Jan 13, 2020
  19. 23/24 t6006: make hash size independentbrian m. carlson, Jan 13, 2020
  20. 22/24 t6000: abstract away SHA-1-specific constantsbrian m. carlson, Jan 13, 2020
  21. 18/24 t5616: use correct filter syntaxbrian m. carlson, Jan 13, 2020
  22. t5616: make robust to delta base changeJonathan Tan, Jan 13, 2020
  23. brian m. carlsonJan 13, 2020
  24. brian m. carlsonJan 25, 2020
  25. 19/24 t5607: make hash size independentbrian m. carlson, Jan 13, 2020
  26. 16/24 t5515: make test hash independentbrian m. carlson, Jan 13, 2020
  27. 17/24 t5318: update for SHA-256brian m. carlson, Jan 13, 2020
  28. Eric SunshineJan 13, 2020
  29. brian m. carlsonJan 13, 2020
  30. 04/24 t3308: make test work with SHA-256brian m. carlson, Jan 13, 2020
  31. 15/24 t5321: make test hash independentbrian m. carlson, Jan 13, 2020
  32. 13/24 t5309: make test hash independentbrian m. carlson, Jan 13, 2020
  33. Eric SunshineJan 13, 2020
  34. brian m. carlsonJan 13, 2020
  35. Eric SunshineJan 13, 2020
  36. Johannes SchindelinJan 16, 2020

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.