summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorDavid Turner <dturner@twopensource.com>2016-05-17 15:40:32 -0400
committerDavid Turner <dturner@twosigma.com>2016-08-10 14:19:30 -0400
commit5625d86b994fd81f1b0d887890e8168d7b5f46cc (patch)
tree9c229286979e8fc8f98657a821faf591072ff636 /tests
parentaeb5ee5ab50a062aac02ca084b02582430669808 (diff)
downloadlibgit2-5625d86b994fd81f1b0d887890e8168d7b5f46cc.tar.gz
index: support index v4
Support reading and writing index v4. Index v4 uses a very simple compression scheme for pathnames, but is otherwise similar to index v3. Signed-off-by: David Turner <dturner@twitter.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/index/version.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests/index/version.c b/tests/index/version.c
new file mode 100644
index 000000000..3fd240d3c
--- /dev/null
+++ b/tests/index/version.c
@@ -0,0 +1,41 @@
+#include "clar_libgit2.h"
+#include "index.h"
+
+static git_repository *g_repo = NULL;
+
+void test_index_version__can_write_v4(void)
+{
+ git_index *index;
+ const git_index_entry *entry;
+
+ g_repo = cl_git_sandbox_init("filemodes");
+ cl_git_pass(git_repository_index(&index, g_repo));
+
+ cl_assert(index->on_disk);
+ cl_assert(git_index_version(index) == 2);
+
+ cl_assert(git_index_entrycount(index) == 6);
+
+ cl_git_pass(git_index_set_version(index, 4));
+
+ cl_git_pass(git_index_write(index));
+ git_index_free(index);
+
+ cl_git_pass(git_repository_index(&index, g_repo));
+ cl_assert(git_index_version(index) == 4);
+
+ entry = git_index_get_bypath(index, "exec_off", 0);
+ cl_assert(entry);
+ entry = git_index_get_bypath(index, "exec_off2on_staged", 0);
+ cl_assert(entry);
+ entry = git_index_get_bypath(index, "exec_on", 0);
+ cl_assert(entry);
+
+ git_index_free(index);
+}
+
+void test_index_version__cleanup(void)
+{
+ cl_git_sandbox_cleanup();
+ g_repo = NULL;
+}