summaryrefslogtreecommitdiff
path: root/t/t0011-hashmap.sh
diff options
context:
space:
mode:
authorJeff King <peff@peff.net>2019-07-31 01:23:37 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-07-31 17:00:34 (GMT)
commite1e7a77141bda8f2ab02f5ed8b0030cba793ec2d (patch)
treebe09113dfa2c6d70f9137e9a520f56f2772d9ee5 /t/t0011-hashmap.sh
parent026dd738a6e5f1e42ef0f390feacb5ed6acc4ee8 (diff)
downloadgit-e1e7a77141bda8f2ab02f5ed8b0030cba793ec2d.zip
git-e1e7a77141bda8f2ab02f5ed8b0030cba793ec2d.tar.gz
git-e1e7a77141bda8f2ab02f5ed8b0030cba793ec2d.tar.bz2
t: sort output of hashmap iteration
The iteration order of a hashmap is undefined, and may depend on things like the exact set of items added, or the table has been grown or shrunk. In the case of an oidmap, it even depends on endianness, because we take the oid hash by casting sha1 bytes directly into an unsigned int. Let's sort the test-tool output from any hash iterators. In the case of t0011, this is just future-proofing. But for t0016, it actually fixes a reported failure on the big-endian s390 and nonstop ports. I didn't bother to teach the helper functions to optionally sort output. They are short enough that it's simpler to just repeat them inline for the iteration tests than it is to add a --sort option. Reported-by: Randall S. Becker <rsbecker@nexbridge.com> Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 't/t0011-hashmap.sh')
-rwxr-xr-xt/t0011-hashmap.sh58
1 files changed, 36 insertions, 22 deletions
diff --git a/t/t0011-hashmap.sh b/t/t0011-hashmap.sh
index 9c96b3e..5343ffd 100755
--- a/t/t0011-hashmap.sh
+++ b/t/t0011-hashmap.sh
@@ -170,31 +170,45 @@ NULL
'
test_expect_success 'iterate' '
-
-test_hashmap "put key1 value1
-put key2 value2
-put fooBarFrotz value3
-iterate" "NULL
-NULL
-NULL
-key2 value2
-key1 value1
-fooBarFrotz value3"
-
+ test-tool hashmap >actual.raw <<-\EOF &&
+ put key1 value1
+ put key2 value2
+ put fooBarFrotz value3
+ iterate
+ EOF
+
+ cat >expect <<-\EOF &&
+ NULL
+ NULL
+ NULL
+ fooBarFrotz value3
+ key1 value1
+ key2 value2
+ EOF
+
+ sort <actual.raw >actual &&
+ test_cmp expect actual
'
test_expect_success 'iterate (case insensitive)' '
-
-test_hashmap "put key1 value1
-put key2 value2
-put fooBarFrotz value3
-iterate" "NULL
-NULL
-NULL
-fooBarFrotz value3
-key2 value2
-key1 value1" ignorecase
-
+ test-tool hashmap ignorecase >actual.raw <<-\EOF &&
+ put key1 value1
+ put key2 value2
+ put fooBarFrotz value3
+ iterate
+ EOF
+
+ cat >expect <<-\EOF &&
+ NULL
+ NULL
+ NULL
+ fooBarFrotz value3
+ key1 value1
+ key2 value2
+ EOF
+
+ sort <actual.raw >actual &&
+ test_cmp expect actual
'
test_expect_success 'grow / shrink' '