Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorRussell Belfer <rb@github.com>2014-01-04 02:26:02 +0400
committerRussell Belfer <rb@github.com>2014-01-04 02:26:02 +0400
commit79ccb921781dc61c4ed06e5c8c19c2ea1ba0a33a (patch)
tree81ea4f6ad7a0b694ce04aa0b4ff547f4c94fa6f6 /tests
parent97bbf61e901ac9e0080394a9321dfc632b77fe99 (diff)
Further tree building tests with hard paths
Diffstat (limited to 'tests')
-rw-r--r--tests/object/tree/write.c46
1 files changed, 40 insertions, 6 deletions
diff --git a/tests/object/tree/write.c b/tests/object/tree/write.c
index 599859727..45356e807 100644
--- a/tests/object/tree/write.c
+++ b/tests/object/tree/write.c
@@ -324,15 +324,20 @@ void test_object_tree_write__cruel_paths(void)
" : * ? \" \n < > |",
"a\\b",
"\\\\b\a",
+ ":\\",
+ "COM1",
+ "foo.aux",
REP1024("1234"), /* 4096 char string */
REP1024("12345678"), /* 8192 char string */
+ "\xC5\xAA\x6E\xC4\xAD\x63\xC5\x8D\x64\x65\xCC\xBD", /* Ūnĭcōde̽ */
NULL
};
git_treebuilder *builder;
git_tree *tree;
- git_oid id, bid;
+ git_oid id, bid, subid;
const char **scan;
- int count = 0;
+ int count = 0, i, j;
+ git_tree_entry *te;
git_oid_fromstr(&bid, blob_oid);
@@ -348,17 +353,46 @@ void test_object_tree_write__cruel_paths(void)
/* check data is correct */
cl_git_pass(git_tree_lookup(&tree, g_repo, &id));
+
cl_assert_equal_i(count, git_tree_entrycount(tree));
+
for (scan = the_paths; *scan; ++scan) {
- const git_tree_entry *te = git_tree_entry_byname(tree, *scan);
- cl_assert(te != NULL);
- cl_assert_equal_s(*scan, git_tree_entry_name(te));
+ const git_tree_entry *cte = git_tree_entry_byname(tree, *scan);
+ cl_assert(cte != NULL);
+ cl_assert_equal_s(*scan, git_tree_entry_name(cte));
}
for (scan = the_paths; *scan; ++scan) {
- git_tree_entry *te;
cl_git_pass(git_tree_entry_bypath(&te, tree, *scan));
cl_assert_equal_s(*scan, git_tree_entry_name(te));
git_tree_entry_free(te);
}
+
+ git_tree_free(tree);
+
+ /* let's try longer paths */
+ cl_git_pass(git_treebuilder_create(&builder, NULL));
+ for (scan = the_paths; *scan; ++scan) {
+ cl_git_pass(git_treebuilder_insert(
+ NULL, builder, *scan, &id, GIT_FILEMODE_TREE));
+ }
+ cl_git_pass(git_treebuilder_write(&subid, g_repo, builder));
+ git_treebuilder_free(builder);
+
+ /* check data is correct */
+ cl_git_pass(git_tree_lookup(&tree, g_repo, &subid));
+
+ cl_assert_equal_i(count, git_tree_entrycount(tree));
+
+ for (i = 0; i < count; ++i) {
+ for (j = 0; j < count; ++j) {
+ git_buf b = GIT_BUF_INIT;
+ cl_git_pass(git_buf_joinpath(&b, the_paths[i], the_paths[j]));
+ cl_git_pass(git_tree_entry_bypath(&te, tree, b.ptr));
+ cl_assert_equal_s(the_paths[j], git_tree_entry_name(te));
+ git_tree_entry_free(te);
+ git_buf_free(&b);
+ }
+ }
+
git_tree_free(tree);
}