general improvements
[gitweb.git] / t / helper / test-read-cache.c
index d674c88ba092d60366a14eaeccc9f4bc6f32660c..244977a29bdfda7839c62b97e7f1ba591b02abff 100644 (file)
@@ -1,14 +1,35 @@
 #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;