You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.3 KiB
60 lines
1.3 KiB
12 years ago
|
#!/bin/sh
|
||
|
|
||
|
test_description='test index-pack handling of delta cycles in packfiles'
|
||
|
. ./test-lib.sh
|
||
|
. "$TEST_DIRECTORY"/lib-pack.sh
|
||
|
|
||
|
# 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_done
|