multi-pack-index: verify missing pack

Signed-off-by: Derrick Stolee <dstolee@microsoft.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Derrick Stolee committed Sep 13, 2018 at 11:02 UTC d4bf1d88b9020d3921ac4e4d8a8fd6ca5015b243
2 files changed +21
midx.c
+16
@@ -926,13 +926,29 @@ void clear_midx_file(const char *object_dir)
926
927 static int verify_midx_error;
928
929 +static void midx_report(const char *fmt, ...)
930 +{
931 + va_list ap;
932 + verify_midx_error = 1;
933 + va_start(ap, fmt);
934 + vfprintf(stderr, fmt, ap);
935 + fprintf(stderr, "\n");
936 + va_end(ap);
937 +}
938 +
939 int verify_midx_file(const char *object_dir)
940 {
941 + uint32_t i;
942 struct multi_pack_index *m = load_multi_pack_index(object_dir, 1);
943 verify_midx_error = 0;
944
945 if (!m)
946 return 0;
947
948 + for (i = 0; i < m->num_packs; i++) {
949 + if (prepare_midx_pack(m, i))
950 + midx_report("failed to load pack in position %d", i);
951 + }
952 +
953 return verify_midx_error;
954 }
t/t5319-multi-pack-index.sh
+5
@@ -222,6 +222,11 @@ test_expect_success 'verify packnames out of order' '
222 "pack names out of order"
223 '
224
225 +test_expect_success 'verify packnames out of order' '
226 + corrupt_midx_and_verify $MIDX_BYTE_PACKNAME_ORDER "a" $objdir \
227 + "failed to load pack"
228 +'
229 +
230 test_expect_success 'repack removes multi-pack-index' '
231 test_path_is_file $objdir/pack/multi-pack-index &&
232 git repack -adf &&