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

[PATCH v2 34/39] t: add test_oid option to select hash algorithm

From
brian m. carlson <sandals@crustytoothpaste.net>
Date
Jul 13, 2020, 02:49 UTC
Message-ID
<20200713024909.3714837-35-sandals@crustytoothpaste.net>
In-Reply-To
<20200713024909.3714837-1-sandals@crustytoothpaste.net>

In some tests, we have data files which are written with a particular hash algorithm. Instead of keeping two copies of the test files, we can keep one, and translate the value on the fly.

In order to do so, we'll need to read both the source algorithm and the current algorithm, so add an optional flag to the test_oid helper that lets us read look up a value for a specified hash algorithm. This should not cause any conflicts with existing tests, since key arguments to test_oid are allowed to contains only shell identifier characters.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
---
 t/t0000-basic.sh        | 11 +++++++++++
 t/test-lib-functions.sh | 12 +++++++++++-
 2 files changed, 22 insertions(+), 1 deletion(-)
diff --git a/t/t0000-basic.sh b/t/t0000-basic.sh
index 2ff176cd5d..47d6b502c2 100755
--- a/t/t0000-basic.sh
+++ b/t/t0000-basic.sh
@@ -928,6 +928,17 @@ test_expect_success 'test_oid can look up data for SHA-256' '
 	test "$hexsz" -eq 64
 '
 
+test_expect_success 'test_oid can look up data a specified algorithm' '
+	rawsz="$(test_oid --hash=sha1 rawsz)" &&
+	hexsz="$(test_oid --hash=sha1 hexsz)" &&
+	test "$rawsz" -eq 20 &&
+	test "$hexsz" -eq 40 &&
+	rawsz="$(test_oid --hash=sha256 rawsz)" &&
+	hexsz="$(test_oid --hash=sha256 hexsz)" &&
+	test "$rawsz" -eq 32 &&
+	test "$hexsz" -eq 64
+'
+
 test_expect_success 'test_bool_env' '
 	(
 		sane_unset envvar &&
diff --git a/t/test-lib-functions.sh b/t/test-lib-functions.sh
index 3103be8a32..d243ff43f3 100644
--- a/t/test-lib-functions.sh
+++ b/t/test-lib-functions.sh
@@ -1468,7 +1468,17 @@ test_oid_cache () {
 # Look up a per-hash value based on a key ($1).  The value must have been loaded
 # by test_oid_init or test_oid_cache.
 test_oid () {
-	local var="test_oid_${test_hash_algo}_$1" &&
+	local algo="${test_hash_algo}" &&
+
+	case "$1" in
+		--hash=*)
+			algo="${1#--hash=}" &&
+			shift;;
+		*)
+			;;
+	esac &&
+
+	local var="test_oid_${algo}_$1" &&
 
 	# If the variable is unset, we must be missing an entry for this
 	# key-hash pair, so exit with an error.
Previous: brian m. carlsonNext: brian m. carlson
Message 23 of 44 in “SHA-256, part 3/3”
  1. 00/39 SHA-256, part 3/3brian m. carlson, Jul 13, 2020
  2. 01/39 t: make test-bloom initialize repositorybrian m. carlson, Jul 13, 2020
  3. 09/39 t6501: avoid hard-coded objectsbrian m. carlson, Jul 13, 2020
  4. 10/39 t7003: compute appropriate length constantbrian m. carlson, Jul 13, 2020
  5. 14/39 t7400: make hash size independentbrian m. carlson, Jul 13, 2020
  6. 06/39 t6101: make hash size independentbrian m. carlson, Jul 13, 2020
  7. 18/39 t8002: make hash size independentbrian m. carlson, Jul 13, 2020
  8. 11/39 t7063: make hash size independentbrian m. carlson, Jul 13, 2020
  9. 17/39 t7508: use $ZERO_OID instead of hard-coded constantbrian m. carlson, Jul 13, 2020
  10. 16/39 t7506: avoid checking for SHA-1-specific constantsbrian m. carlson, Jul 13, 2020
  11. 12/39 t7201: abstract away SHA-1-specific constantsbrian m. carlson, Jul 13, 2020
  12. 02/39 t1001: use $ZERO_OIDbrian m. carlson, Jul 13, 2020
  13. 21/39 t9300: abstract away SHA-1-specific constantsbrian m. carlson, Jul 13, 2020
  14. 22/39 t9300: use $ZERO_OID instead of hard-coded object IDbrian m. carlson, Jul 13, 2020
  15. 19/39 t8003: make hash size independentbrian m. carlson, Jul 13, 2020
  16. 37/39 ci: run tests with SHA-256brian m. carlson, Jul 13, 2020
  17. 38/39 docs: add documentation for extensions.objectFormatbrian m. carlson, Jul 13, 2020
  18. 39/39 t: remove test_oid_init in testsbrian m. carlson, Jul 13, 2020
  19. 07/39 t6301: make hash size independentbrian m. carlson, Jul 13, 2020
  20. 03/39 t3305: make hash agnosticbrian m. carlson, Jul 13, 2020
  21. 05/39 t6100: make hash size independentbrian m. carlson, Jul 13, 2020
  22. 04/39 t3404: prepare 'short SHA-1 collision' tests for SHA-256brian m. carlson, Jul 13, 2020
  23. 34/39 t: add test_oid option to select hash algorithmbrian m. carlson, Jul 13, 2020
  24. 29/39 http-fetch: set up git directory before parsing pack hashesbrian m. carlson, Jul 13, 2020
  25. 08/39 t6500: specify test values for SHA-256brian m. carlson, Jul 13, 2020
  26. 15/39 t7405: make hash size independentbrian m. carlson, Jul 13, 2020
  27. 33/39 Enable SHA-256 support by defaultbrian m. carlson, Jul 13, 2020
  28. 13/39 t7102: abstract away SHA-1-specific constantsbrian m. carlson, Jul 13, 2020
  29. 24/39 t9350: make hash size independentbrian m. carlson, Jul 13, 2020
  30. 25/39 t9500: ensure that algorithm info is preserved in configbrian m. carlson, Jul 13, 2020
  31. 20/39 t8011: make hash size independentbrian m. carlson, Jul 13, 2020
  32. 26/39 t9700: make hash size independentbrian m. carlson, Jul 13, 2020
  33. 27/39 t5308: make test work with SHA-256brian m. carlson, Jul 13, 2020
  34. 28/39 t0410: mark test with SHA1 prerequisitebrian m. carlson, Jul 13, 2020
  35. 35/39 t: allow testing different hash algorithms via environmentbrian m. carlson, Jul 13, 2020
  36. 36/39 t: make SHA1 prerequisite depend on default hashbrian m. carlson, Jul 13, 2020
  37. 32/39 setup: add support for reading extensions.objectformatbrian m. carlson, Jul 13, 2020
  38. 30/39 builtin/verify-pack: implement an --object-format optionbrian m. carlson, Jul 13, 2020
  39. 31/39 bundle: add new version for use with SHA-256brian m. carlson, Jul 13, 2020
  40. Junio C HamanoJul 13, 2020
  41. SZEDER GáborJul 13, 2020
  42. Johannes SchindelinJul 15, 2020
  43. Junio C HamanoJul 15, 2020
  44. 23/39 t9301: make hash size independentbrian m. carlson, Jul 13, 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.