t: add test functions to translate hash-related values
Add several test functions to make working with various hash-related
values easier.
Add test_oid_init, which loads common hash-related constants and
placeholder object IDs from the newly added files in t/oid-info.
Provide values for these constants for both SHA-1 and SHA-256.
Add test_oid_cache, which accepts data on standard input in the form of
hash-specific key-value pairs that can be looked up later, using the
same format as the files in t/oid-info. Document this format in a
t/oid-info/README directory so that it's easier to use in the future.
Add test_oid, which is used to specify look up a per-hash value
(produced on standard output) based on the key specified as its
argument. Usually the data to be looked up will be a hash-related
constant (such as the size of the hash in binary or hexadecimal), a
well-known or placeholder object ID (such as the all-zeros object ID or
one consisting of "deadbeef" repeated), or something similar. For these
reasons, test_oid will usually be used within a command substitution.
Consequently, redirect the error output to standard error, since
otherwise it will not be displayed.
Add test_detect_hash, which currently only detects SHA-1, and
test_set_hash, which can be used to set a different hash algorithm for
test purposes. In the future, test_detect_hash will learn to actually
detect the hash depending on how the testsuite is to be run.
Use the local keyword within these functions to avoid overwriting other
shell variables. We have had a test balloon in place for a couple of
releases to catch shells that don't have this keyword and have not
received any reports of failure. Note that the varying usages of local
used here are supported by all common open-source shells supporting the
local keyword.
Test these new functions as part of t0000, which also serves to
demonstrate basic usage of them. In addition, add documentation on how
to format the lookup data and how to use the test functions.
Implement two basic lookup charts, one for common invalid or synthesized
object IDs, and one for various facts about the hash function in use.
Provide versions of the data for both SHA-1 and SHA-256.
Since we use shell variables for storage, names used for lookup can
currently consist only of shell identifier characters. If this is a
problem in the future, we can hash the names before use.
Improved-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2018-09-13 07:17:31 +02:00
|
|
|
# These are some common invalid and partial object IDs used in tests.
|
|
|
|
001 sha1:0000000000000000000000000000000000000001
|
|
|
|
001 sha256:0000000000000000000000000000000000000000000000000000000000000001
|
|
|
|
002 sha1:0000000000000000000000000000000000000002
|
|
|
|
002 sha256:0000000000000000000000000000000000000000000000000000000000000002
|
|
|
|
003 sha1:0000000000000000000000000000000000000003
|
|
|
|
003 sha256:0000000000000000000000000000000000000000000000000000000000000003
|
|
|
|
004 sha1:0000000000000000000000000000000000000004
|
|
|
|
004 sha256:0000000000000000000000000000000000000000000000000000000000000004
|
|
|
|
005 sha1:0000000000000000000000000000000000000005
|
|
|
|
005 sha256:0000000000000000000000000000000000000000000000000000000000000005
|
|
|
|
006 sha1:0000000000000000000000000000000000000006
|
|
|
|
006 sha256:0000000000000000000000000000000000000000000000000000000000000006
|
|
|
|
007 sha1:0000000000000000000000000000000000000007
|
|
|
|
007 sha256:0000000000000000000000000000000000000000000000000000000000000007
|
|
|
|
# All zeros or Fs missing one or two hex segments.
|
|
|
|
zero_1 sha1:000000000000000000000000000000000000000
|
|
|
|
zero_1 sha256:000000000000000000000000000000000000000000000000000000000000000
|
|
|
|
zero_2 sha1:00000000000000000000000000000000000000
|
|
|
|
zero_2 sha256:00000000000000000000000000000000000000000000000000000000000000
|
|
|
|
ff_1 sha1:fffffffffffffffffffffffffffffffffffffff
|
|
|
|
ff_1 sha256:fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
|
|
|
ff_2 sha1:ffffffffffffffffffffffffffffffffffffff
|
|
|
|
ff_2 sha256:ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
|
|
|
|
# More various invalid OIDs.
|
|
|
|
numeric sha1:0123456789012345678901234567890123456789
|
|
|
|
numeric sha256:0123456789012345678901234567890123456789012345678901234567890123
|
|
|
|
deadbeef sha1:deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
|
|
|
|
deadbeef sha256:deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef
|
2021-10-01 11:16:42 +02:00
|
|
|
deadbeef_short sha1:deadbeefdeadbeefdeadbeefdeadbeefdeadbee
|
|
|
|
deadbeef_short sha256:deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbee
|