This causes cgit to serve error pages, which is undesirable. This reverts commit5229c9b232, reversing changes made tof2b211131f.
83 lines
1.8 KiB
Bash
Executable file
83 lines
1.8 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='test index-pack handling of delta cycles in packfiles'
|
|
. ./test-lib.sh
|
|
. "$TEST_DIRECTORY"/lib-pack.sh
|
|
|
|
if ! test_have_prereq SHA1
|
|
then
|
|
skip_all='not using SHA-1 for objects'
|
|
test_done
|
|
fi
|
|
|
|
# Two similar-ish objects that we have computed deltas between.
|
|
A=01d7713666f4de822776c7622c10f1b07de280dc
|
|
B=e68fe8129b546b101aee9510c5328e7f21ca1d18
|
|
|
|
# double-check our hand-constucted packs
|
|
test_expect_success 'index-pack works with a single delta (A->B)' '
|
|
clear_packs &&
|
|
{
|
|
pack_header 2 &&
|
|
pack_obj $A $B &&
|
|
pack_obj $B
|
|
} >ab.pack &&
|
|
pack_trailer ab.pack &&
|
|
git index-pack --stdin <ab.pack &&
|
|
git cat-file -t $A &&
|
|
git cat-file -t $B
|
|
'
|
|
|
|
test_expect_success 'index-pack works with a single delta (B->A)' '
|
|
clear_packs &&
|
|
{
|
|
pack_header 2 &&
|
|
pack_obj $A &&
|
|
pack_obj $B $A
|
|
} >ba.pack &&
|
|
pack_trailer ba.pack &&
|
|
git index-pack --stdin <ba.pack &&
|
|
git cat-file -t $A &&
|
|
git cat-file -t $B
|
|
'
|
|
|
|
test_expect_success 'index-pack detects missing base objects' '
|
|
clear_packs &&
|
|
{
|
|
pack_header 1 &&
|
|
pack_obj $A $B
|
|
} >missing.pack &&
|
|
pack_trailer missing.pack &&
|
|
test_must_fail git index-pack --fix-thin --stdin <missing.pack
|
|
'
|
|
|
|
test_expect_success 'index-pack detects REF_DELTA cycles' '
|
|
clear_packs &&
|
|
{
|
|
pack_header 2 &&
|
|
pack_obj $A $B &&
|
|
pack_obj $B $A
|
|
} >cycle.pack &&
|
|
pack_trailer cycle.pack &&
|
|
test_must_fail git index-pack --fix-thin --stdin <cycle.pack
|
|
'
|
|
|
|
test_expect_failure 'failover to an object in another pack' '
|
|
clear_packs &&
|
|
git index-pack --stdin <ab.pack &&
|
|
git index-pack --stdin --fix-thin <cycle.pack
|
|
'
|
|
|
|
test_expect_failure 'failover to a duplicate object in the same pack' '
|
|
clear_packs &&
|
|
{
|
|
pack_header 3 &&
|
|
pack_obj $A $B &&
|
|
pack_obj $B $A &&
|
|
pack_obj $A
|
|
} >recoverable.pack &&
|
|
pack_trailer recoverable.pack &&
|
|
git index-pack --fix-thin --stdin <recoverable.pack
|
|
'
|
|
|
|
test_done
|