| test_description='test index-pack handling of delta cycles in packfiles' |
| . "$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)' ' |
| git index-pack --stdin <ab.pack && |
| test_expect_success 'index-pack works with a single delta (B->A)' ' |
| git index-pack --stdin <ba.pack && |
| test_expect_success 'index-pack detects missing base objects' ' |
| pack_trailer missing.pack && |
| test_must_fail git index-pack --fix-thin --stdin <missing.pack |
| test_expect_success 'index-pack detects REF_DELTA cycles' ' |
| 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' ' |
| 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' ' |
| pack_trailer recoverable.pack && |
| git index-pack --fix-thin --stdin <recoverable.pack |