t/helper/test-bitmap.c: initial commit

Add a new 'bitmap' test-tool which can be used to list the commits that
have received bitmaps.

In theory, a determined tester could run 'git rev-list --test-bitmap
<commit>' to check if '<commit>' received a bitmap or not, since
'--test-bitmap' exits with a non-zero code when it can't find the
requested commit.

But this is a dubious behavior to rely on, since arguably 'git
rev-list' could continue its object walk outside of which commits are
covered by bitmaps.

This will be used to test the behavior of 'pack.preferBitmapTips', which
will be added in the following patch.

Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Taylor Blau 2021-03-31 21:32:11 -04:00 committed by Junio C Hamano
parent dff5e49e51
commit 483fa7f42d
4 changed files with 27 additions and 0 deletions

View File

@ -693,6 +693,7 @@ X =
PROGRAMS += $(patsubst %.o,git-%$X,$(PROGRAM_OBJS))
TEST_BUILTINS_OBJS += test-advise.o
TEST_BUILTINS_OBJS += test-bitmap.o
TEST_BUILTINS_OBJS += test-bloom.o
TEST_BUILTINS_OBJS += test-chmtime.o
TEST_BUILTINS_OBJS += test-config.o

24
t/helper/test-bitmap.c Normal file
View File

@ -0,0 +1,24 @@
#include "test-tool.h"
#include "cache.h"
#include "pack-bitmap.h"
static int bitmap_list_commits(void)
{
return test_bitmap_commits(the_repository);
}
int cmd__bitmap(int argc, const char **argv)
{
setup_git_directory();
if (argc != 2)
goto usage;
if (!strcmp(argv[1], "list-commits"))
return bitmap_list_commits();
usage:
usage("\ttest-tool bitmap list-commits");
return -1;
}

View File

@ -15,6 +15,7 @@ struct test_cmd {
static struct test_cmd cmds[] = {
{ "advise", cmd__advise_if_enabled },
{ "bitmap", cmd__bitmap },
{ "bloom", cmd__bloom },
{ "chmtime", cmd__chmtime },
{ "config", cmd__config },

View File

@ -5,6 +5,7 @@
#include "git-compat-util.h"
int cmd__advise_if_enabled(int argc, const char **argv);
int cmd__bitmap(int argc, const char **argv);
int cmd__bloom(int argc, const char **argv);
int cmd__chmtime(int argc, const char **argv);
int cmd__config(int argc, const char **argv);