On Tue, Jul 30, 2019 at 09:23:36PM -0400, Jeff King wrote:
> 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
By the way, I found it curious that this test is repeated both with and
without ignorecase, but in the case-insensitive we never have any
case-equivalent names!
I guess it is testing that we preserved the name of fooBarFrotz, but I
would think that this:
diff --git a/t/t0011-hashmap.sh b/t/t0011-hashmap.sh
index 5343ffd3f9..2807dff644 100755
--- a/t/t0011-hashmap.sh
+++ b/t/t0011-hashmap.sh
@@ -195,14 +195,15 @@ test_expect_success 'iterate (case insensitive)' '
put key1 value1
put key2 value2
put fooBarFrotz value3
+ put foobarfrotz value4
iterate
EOF
cat >expect <<-\EOF &&
NULL
NULL
NULL
- fooBarFrotz value3
+ fooBarFrotz value4
key1 value1
key2 value2
EOF
on top of my other patch would be a good addition. However, it yields
this result:
--- expect 2019-07-31 01:26:07.284231899 +0000
+++ actual 2019-07-31 01:26:07.284231899 +0000
@@ -1,6 +1,7 @@
NULL
NULL
NULL
-fooBarFrotz value4
+foobarfrotz value4
key1 value1
key2 value2
+value3
The first line is a matter of taste I think (whether to keep the
original case or replace it with the new key). But the empty-keyed
retention of value3 seems wrong. I'm not sure if this is a bug in the
actual hashmap code, or just a weirdness with the way test-tool prints
it.
I'm going offline for a bit, so if anybody feels like following up on
the mystery, be my guest. Otherwise I may take a look later tonight.
-Peff