From: Derrick Stolee <redacted>
We will use 'test-tool read-cache --table' to check that a sparse
index is written as part of init_repos. Since we will no longer always
expand a sparse index into a full index, add an '--expand' parameter
that adds a call to ensure_full_index() so we can compare a sparse index
directly against a full index, or at least what the in-memory index
looks like when expanded in this way.
Signed-off-by: Derrick Stolee <redacted>
---
t/helper/test-read-cache.c | 13 ++++++++++++-
t/t1092-sparse-checkout-compatibility.sh | 5 +++++
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/t/helper/test-read-cache.c b/t/helper/test-read-cache.c
index e4c3492f7d3e..4780429dca6b 100644
--- a/t/helper/test-read-cache.c
+++ b/t/helper/test-read-cache.c
@@ -1,6 +1,7 @@
#include "test-tool.h"
#include "cache.h"
#include "config.h"
+#include "sparse-index.h"
static void print_cache_entry(struct cache_entry *ce)
{@@ -30,13 +31,19 @@ int cmd__read_cache(int argc, const char **argv)
struct repository *r = the_repository;
int i, cnt = 1;
const char *name = NULL;
- int table = 0;
+ int table = 0, expand = 0;
+
+ initialize_the_repository();
+ prepare_repo_settings(r);
+ r->settings.command_requires_full_index = 0;
for (++argv, --argc; *argv && starts_with(*argv, "--"); ++argv, --argc) {
if (skip_prefix(*argv, "--print-and-refresh=", &name))
continue;
if (!strcmp(*argv, "--table"))
table = 1;
+ else if (!strcmp(*argv, "--expand"))
+ expand = 1;
}
if (argc == 1)@@ -46,6 +53,10 @@ int cmd__read_cache(int argc, const char **argv)
for (i = 0; i < cnt; i++) {
repo_read_index(r);
+
+ if (expand)
+ ensure_full_index(r->index);
+
if (name) {
int pos;
diff --git a/t/t1092-sparse-checkout-compatibility.sh b/t/t1092-sparse-checkout-compatibility.sh
index 71d6f9e4c014..4d789fe86b9d 100755
--- a/t/t1092-sparse-checkout-compatibility.sh
+++ b/t/t1092-sparse-checkout-compatibility.sh
@@ -130,6 +130,11 @@ test_sparse_match () {
test_cmp sparse-checkout-err sparse-index-err
}
+test_expect_success 'expanded in-memory index matches full index' '
+ init_repos &&
+ test_sparse_match test-tool read-cache --expand --table
+'
+
test_expect_success 'status with options' '
init_repos &&
test_all_match git status --porcelain=v2 &&--
gitgitgadget