Adjust the test to skip in t5541-http-push-smart as another test was added before the failing test. Apply a patch from Jeff King which fixes a failure in the newly-added t0016-oidmap on big endian systems like s390x¹. Release notes: https://www.kernel.org/pub/software/scm/git/docs/RelNotes/2.23.0.txt ¹ https://public-inbox.org/git/20190731012336.GA13880@sigill.intra.peff.net/
141 lines
3.1 KiB
Diff
141 lines
3.1 KiB
Diff
From e1e7a77141bda8f2ab02f5ed8b0030cba793ec2d Mon Sep 17 00:00:00 2001
|
|
From: Jeff King <peff@peff.net>
|
|
Date: Tue, 30 Jul 2019 21:23:37 -0400
|
|
Subject: [PATCH] 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>
|
|
---
|
|
t/t0011-hashmap.sh | 58 ++++++++++++++++++++++++++++------------------
|
|
t/t0016-oidmap.sh | 30 +++++++++++++++---------
|
|
2 files changed, 55 insertions(+), 33 deletions(-)
|
|
|
|
diff --git a/t/t0011-hashmap.sh b/t/t0011-hashmap.sh
|
|
index 9c96b3e3b10a9..5343ffd3f92c1 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' '
|
|
diff --git a/t/t0016-oidmap.sh b/t/t0016-oidmap.sh
|
|
index bbe719e950968..31f8276ba82ba 100755
|
|
--- a/t/t0016-oidmap.sh
|
|
+++ b/t/t0016-oidmap.sh
|
|
@@ -86,17 +86,25 @@ NULL"
|
|
'
|
|
|
|
test_expect_success 'iterate' '
|
|
-
|
|
-test_oidmap "put one 1
|
|
-put two 2
|
|
-put three 3
|
|
-iterate" "NULL
|
|
-NULL
|
|
-NULL
|
|
-$(git rev-parse two) 2
|
|
-$(git rev-parse one) 1
|
|
-$(git rev-parse three) 3"
|
|
-
|
|
+ test-tool oidmap >actual.raw <<-\EOF &&
|
|
+ put one 1
|
|
+ put two 2
|
|
+ put three 3
|
|
+ iterate
|
|
+ EOF
|
|
+
|
|
+ # sort "expect" too so we do not rely on the order of particular oids
|
|
+ sort >expect <<-EOF &&
|
|
+ NULL
|
|
+ NULL
|
|
+ NULL
|
|
+ $(git rev-parse one) 1
|
|
+ $(git rev-parse two) 2
|
|
+ $(git rev-parse three) 3
|
|
+ EOF
|
|
+
|
|
+ sort <actual.raw >actual &&
|
|
+ test_cmp expect actual
|
|
'
|
|
|
|
test_done
|