[PATCH v10 11/12] Add some reftable testing infrastructure
From: Han-Wen Nienhuys <hanwen@google.com>
* Add GIT_TEST_REFTABLE environment var to control default ref storage
* Add test_prerequisite REFTABLE. Skip t/t3210-pack-refs.sh for REFTABLE.
Signed-off-by: Han-Wen Nienhuys <hanwen@google.com>
---
builtin/clone.c | 2 +-
builtin/init-db.c | 2 +-
refs.c | 13 +++++++------
t/t3210-pack-refs.sh | 6 ++++++
t/test-lib.sh | 5 +++++
5 files changed, 20 insertions(+), 8 deletions(-)
diff --git a/builtin/clone.c b/builtin/clone.c
index 5259738de88..7a59781a327 100644
--- a/builtin/clone.c
+++ b/builtin/clone.c
@@ -1109,7 +1109,7 @@ int cmd_clone(int argc, const char **argv, const char *prefix)
}
init_db(git_dir, real_git_dir, option_template, GIT_HASH_UNKNOWN,
- DEFAULT_REF_STORAGE, INIT_DB_QUIET);
+ default_ref_storage(), INIT_DB_QUIET);
if (real_git_dir)
git_dir = real_git_dir;
diff --git a/builtin/init-db.c b/builtin/init-db.c
index eb2781ed6af..6aaa51ec74e 100644
--- a/builtin/init-db.c
+++ b/builtin/init-db.c
@@ -542,7 +542,7 @@ static const char *const init_db_usage[] = {
int cmd_init_db(int argc, const char **argv, const char *prefix)
{
const char *git_dir;
- const char *ref_storage_format = DEFAULT_REF_STORAGE;
+ const char *ref_storage_format = default_ref_storage();
const char *real_git_dir = NULL;
const char *work_tree;
const char *template_dir = NULL;
diff --git a/refs.c b/refs.c
index cf1e645266f..7d7aad49e3c 100644
--- a/refs.c
+++ b/refs.c
@@ -1864,10 +1864,11 @@ struct ref_store *get_main_ref_store(struct repository *r)
if (!r->gitdir)
BUG("attempting to get main_ref_store outside of repository");
- r->refs_private = ref_store_init(
- r->gitdir,
- r->ref_storage_format ? r->ref_storage_format : DEFAULT_REF_STORAGE,
- REF_STORE_ALL_CAPS);
+ r->refs_private = ref_store_init(r->gitdir,
+ r->ref_storage_format ?
+ r->ref_storage_format :
+ default_ref_storage(),
+ REF_STORE_ALL_CAPS);
return r->refs_private;
}
@@ -1922,7 +1923,7 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
goto done;
/* assume that add_submodule_odb() has been called */
- refs = ref_store_init(submodule_sb.buf, DEFAULT_REF_STORAGE, /* XXX */
+ refs = ref_store_init(submodule_sb.buf, default_ref_storage(),
REF_STORE_READ | REF_STORE_ODB);
register_ref_store_map(&submodule_ref_stores, "submodule",
refs, submodule);
@@ -1936,7 +1937,7 @@ struct ref_store *get_submodule_ref_store(const char *submodule)
struct ref_store *get_worktree_ref_store(const struct worktree *wt)
{
- const char *format = DEFAULT_REF_STORAGE; /* XXX */
+ const char *format = default_ref_storage();
struct ref_store *refs;
const char *id;
diff --git a/t/t3210-pack-refs.sh b/t/t3210-pack-refs.sh
index f41b2afb996..edaef2c175a 100755
--- a/t/t3210-pack-refs.sh
+++ b/t/t3210-pack-refs.sh
@@ -11,6 +11,12 @@ semantic is still the same.
'
. ./test-lib.sh
+if test_have_prereq REFTABLE
+then
+ skip_all='skipping pack-refs tests; incompatible with reftable'
+ test_done
+fi
+
test_expect_success 'enable reflogs' '
git config core.logallrefupdates true
'
diff --git a/t/test-lib.sh b/t/test-lib.sh
index 0bb1105ec37..3877a91b268 100644
--- a/t/test-lib.sh
+++ b/t/test-lib.sh
@@ -1502,6 +1502,11 @@ FreeBSD)
;;
esac
+if test -n "$GIT_TEST_REFTABLE"
+then
+ test_set_prereq REFTABLE
+fi
+
( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1
test -z "$NO_PERL" && test_set_prereq PERL
test -z "$NO_PTHREADS" && test_set_prereq PTHREADS
--
gitgitgadget