diff options
author | Derrick Stolee <dstolee@microsoft.com> | 2018-09-13 11:02:19 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-09-17 13:49:41 -0700 |
commit | d4bf1d88b9020d3921ac4e4d8a8fd6ca5015b243 (patch) | |
tree | 864503e40650f3d5de7487506a1e6a787a136920 | |
parent | multi-pack-index: verify packname order (diff) | |
download | tgif-d4bf1d88b9020d3921ac4e4d8a8fd6ca5015b243.tar.xz |
multi-pack-index: verify missing pack
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | midx.c | 16 | ||||
-rwxr-xr-x | t/t5319-multi-pack-index.sh | 5 |
2 files changed, 21 insertions, 0 deletions
@@ -926,13 +926,29 @@ void clear_midx_file(const char *object_dir) static int verify_midx_error; +static void midx_report(const char *fmt, ...) +{ + va_list ap; + verify_midx_error = 1; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fprintf(stderr, "\n"); + va_end(ap); +} + int verify_midx_file(const char *object_dir) { + uint32_t i; struct multi_pack_index *m = load_multi_pack_index(object_dir, 1); verify_midx_error = 0; if (!m) return 0; + for (i = 0; i < m->num_packs; i++) { + if (prepare_midx_pack(m, i)) + midx_report("failed to load pack in position %d", i); + } + return verify_midx_error; } diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index 01a3cd6b00..0a566afb05 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -222,6 +222,11 @@ test_expect_success 'verify packnames out of order' ' "pack names out of order" ' +test_expect_success 'verify packnames out of order' ' + corrupt_midx_and_verify $MIDX_BYTE_PACKNAME_ORDER "a" $objdir \ + "failed to load pack" +' + test_expect_success 'repack removes multi-pack-index' ' test_path_is_file $objdir/pack/multi-pack-index && git repack -adf && |