mirror of
https://github.com/git/git.git
synced 2024-12-01 14:03:34 +08:00
0eb0fb889e
If the first 18 bytes of the SHA1's of all entries are the same then sha1_pos() dies and reports that the lower and upper limits of the binary search were the same that this wasn't supposed to happen. This is wrong because the remaining two bytes could still differ. Furthermore: It wouldn't be a problem if they actually were the same, i.e. if all entries have the same SHA1. The code already handles duplicates just fine. Simply remove the erroneous check. Signed-off-by: Rene Scharfe <l.s.r@web.de> Acked-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
95 lines
1.9 KiB
Bash
Executable File
95 lines
1.9 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='basic tests for the SHA1 array implementation'
|
|
. ./test-lib.sh
|
|
|
|
echo20 () {
|
|
prefix="${1:+$1 }"
|
|
shift
|
|
while test $# -gt 0
|
|
do
|
|
echo "$prefix$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1$1"
|
|
shift
|
|
done
|
|
}
|
|
|
|
test_expect_success 'ordered enumeration' '
|
|
echo20 "" 44 55 88 aa >expect &&
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo for_each_unique
|
|
} | test-sha1-array >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'ordered enumeration with duplicate suppression' '
|
|
echo20 "" 44 55 88 aa >expect &&
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 append 88 44 aa 55 &&
|
|
echo for_each_unique
|
|
} | test-sha1-array >actual &&
|
|
test_cmp expect actual
|
|
'
|
|
|
|
test_expect_success 'lookup' '
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 lookup 55
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -eq 1
|
|
'
|
|
|
|
test_expect_success 'lookup non-existing entry' '
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 lookup 33
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -lt 0
|
|
'
|
|
|
|
test_expect_success 'lookup with duplicates' '
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 lookup 55
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -ge 2 &&
|
|
test "$n" -le 3
|
|
'
|
|
|
|
test_expect_success 'lookup non-existing entry with duplicates' '
|
|
{
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 append 88 44 aa 55 &&
|
|
echo20 lookup 66
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -lt 0
|
|
'
|
|
|
|
test_expect_success 'lookup with almost duplicate values' '
|
|
{
|
|
echo "append 5555555555555555555555555555555555555555" &&
|
|
echo "append 555555555555555555555555555555555555555f" &&
|
|
echo20 lookup 55
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -eq 0
|
|
'
|
|
|
|
test_expect_success 'lookup with single duplicate value' '
|
|
{
|
|
echo20 append 55 55 &&
|
|
echo20 lookup 55
|
|
} | test-sha1-array >actual &&
|
|
n=$(cat actual) &&
|
|
test "$n" -ge 0 &&
|
|
test "$n" -le 1
|
|
'
|
|
|
|
test_done
|