about summary refs log tree commit diff
path: root/third_party/git/t/helper/test-read-cache.c
diff options
context:
space:
mode:
Diffstat (limited to 'third_party/git/t/helper/test-read-cache.c')
-rw-r--r--third_party/git/t/helper/test-read-cache.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/third_party/git/t/helper/test-read-cache.c b/third_party/git/t/helper/test-read-cache.c
new file mode 100644
index 000000000000..244977a29bdf
--- /dev/null
+++ b/third_party/git/t/helper/test-read-cache.c
@@ -0,0 +1,36 @@
+#include "test-tool.h"
+#include "cache.h"
+#include "config.h"
+
+int cmd__read_cache(int argc, const char **argv)
+{
+	int i, cnt = 1;
+	const char *name = NULL;
+
+	if (argc > 1 && skip_prefix(argv[1], "--print-and-refresh=", &name)) {
+		argc--;
+		argv++;
+	}
+
+	if (argc == 2)
+		cnt = strtol(argv[1], NULL, 0);
+	setup_git_directory();
+	git_config(git_default_config, NULL);
+	for (i = 0; i < cnt; i++) {
+		read_cache();
+		if (name) {
+			int pos;
+
+			refresh_index(&the_index, REFRESH_QUIET,
+				      NULL, NULL, NULL);
+			pos = index_name_pos(&the_index, name, strlen(name));
+			if (pos < 0)
+				die("%s not in index", name);
+			printf("%s is%s up to date\n", name,
+			       ce_uptodate(the_index.cache[pos]) ? "" : " not");
+			write_file(name, "%d\n", i);
+		}
+		discard_cache();
+	}
+	return 0;
+}