Commit a7dbac0b by nulltoken

filemode: deploy enum usage

parent d854d59e
...@@ -271,7 +271,7 @@ GIT_EXTERN(const git_tree_entry *) git_treebuilder_get(git_treebuilder *bld, con ...@@ -271,7 +271,7 @@ GIT_EXTERN(const git_tree_entry *) git_treebuilder_get(git_treebuilder *bld, con
* @param bld Tree builder * @param bld Tree builder
* @param filename Filename of the entry * @param filename Filename of the entry
* @param id SHA1 oid of the entry * @param id SHA1 oid of the entry
* @param attributes Folder attributes of the entry. This parameter must * @param filemode Folder attributes of the entry. This parameter must
* be valued with one of the following entries: 0040000, 0100644, * be valued with one of the following entries: 0040000, 0100644,
* 0100755, 0120000 or 0160000. * 0100755, 0120000 or 0160000.
* @return 0 or an error code * @return 0 or an error code
...@@ -281,7 +281,7 @@ GIT_EXTERN(int) git_treebuilder_insert( ...@@ -281,7 +281,7 @@ GIT_EXTERN(int) git_treebuilder_insert(
git_treebuilder *bld, git_treebuilder *bld,
const char *filename, const char *filename,
const git_oid *id, const git_oid *id,
unsigned int attributes); git_filemode_t filemode);
/** /**
* Remove an entry from the builder by its filename * Remove an entry from the builder by its filename
......
...@@ -180,7 +180,7 @@ static int manipulate_note_in_tree_r( ...@@ -180,7 +180,7 @@ static int manipulate_note_in_tree_r(
subtree_name[2] = '\0'; subtree_name[2] = '\0';
error = tree_write(out, repo, parent, git_tree_id(new), error = tree_write(out, repo, parent, git_tree_id(new),
subtree_name, 0040000); subtree_name, GIT_FILEMODE_TREE);
cleanup: cleanup:
...@@ -252,7 +252,13 @@ static int insert_note_in_tree_enotfound_cb(git_tree **out, ...@@ -252,7 +252,13 @@ static int insert_note_in_tree_enotfound_cb(git_tree **out,
GIT_UNUSED(current_error); GIT_UNUSED(current_error);
/* No existing fanout at this level, insert in place */ /* No existing fanout at this level, insert in place */
return tree_write(out, repo, parent, note_oid, annotated_object_sha + fanout, 0100644); return tree_write(
out,
repo,
parent,
note_oid,
annotated_object_sha + fanout,
GIT_FILEMODE_BLOB);
} }
static int note_write(git_oid *out, static int note_write(git_oid *out,
......
...@@ -14,14 +14,14 @@ ...@@ -14,14 +14,14 @@
#define DEFAULT_TREE_SIZE 16 #define DEFAULT_TREE_SIZE 16
#define MAX_FILEMODE_BYTES 6 #define MAX_FILEMODE_BYTES 6
static bool valid_attributes(const int attributes) static bool valid_filemode(const int filemode)
{ {
return (attributes == 0040000 /* Directory */ return (filemode == GIT_FILEMODE_TREE
|| attributes == 0100644 /* Non executable file */ || filemode == GIT_FILEMODE_BLOB
|| attributes == 0100664 /* Non executable group writable file */ || filemode == GIT_FILEMODE_BLOB_GROUP_WRITABLE
|| attributes == 0100755 /* Executable file */ || filemode == GIT_FILEMODE_BLOB_EXECUTABLE
|| attributes == 0120000 /* Symbolic link */ || filemode == GIT_FILEMODE_LINK
|| attributes == 0160000); /* Git link */ || filemode == GIT_FILEMODE_COMMIT);
} }
static int valid_entry_name(const char *filename) static int valid_entry_name(const char *filename)
...@@ -308,8 +308,8 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf ...@@ -308,8 +308,8 @@ static int tree_parse_buffer(git_tree *tree, const char *buffer, const char *buf
int attr; int attr;
if (git__strtol32(&attr, buffer, &buffer, 8) < 0 || if (git__strtol32(&attr, buffer, &buffer, 8) < 0 ||
!buffer || !valid_attributes(attr)) !buffer || !valid_filemode(attr))
return tree_error("Failed to parse tree. Can't parse attributes"); return tree_error("Failed to parse tree. Can't parse filemode");
if (*buffer++ != ' ') if (*buffer++ != ' ')
return tree_error("Failed to parse tree. Object is corrupted"); return tree_error("Failed to parse tree. Object is corrupted");
...@@ -368,7 +368,7 @@ static int append_entry( ...@@ -368,7 +368,7 @@ static int append_entry(
git_treebuilder *bld, git_treebuilder *bld,
const char *filename, const char *filename,
const git_oid *id, const git_oid *id,
unsigned int attributes) git_filemode_t filemode)
{ {
git_tree_entry *entry; git_tree_entry *entry;
...@@ -376,7 +376,7 @@ static int append_entry( ...@@ -376,7 +376,7 @@ static int append_entry(
GITERR_CHECK_ALLOC(entry); GITERR_CHECK_ALLOC(entry);
git_oid_cpy(&entry->oid, id); git_oid_cpy(&entry->oid, id);
entry->attr = attributes; entry->attr = (uint16_t)filemode;
if (git_vector_insert(&bld->entries, entry) < 0) if (git_vector_insert(&bld->entries, entry) < 0)
return -1; return -1;
...@@ -517,17 +517,17 @@ static void sort_entries(git_treebuilder *bld) ...@@ -517,17 +517,17 @@ static void sort_entries(git_treebuilder *bld)
git_vector_sort(&bld->entries); git_vector_sort(&bld->entries);
} }
GIT_INLINE(int) normalize_attributes(const int attributes) GIT_INLINE(git_filemode_t) normalize_filemode(git_filemode_t filemode)
{ {
/* 100664 mode is an early design mistake. Tree entries may bear /* 100664 mode is an early design mistake. Tree entries may bear
* this mode in some old git repositories, but it's now deprecated. * this mode in some old git repositories, but it's now deprecated.
* We silently normalize while inserting new entries in a tree * We silently normalize while inserting new entries in a tree
* being built. * being built.
*/ */
if (attributes == 0100664) if (filemode == GIT_FILEMODE_BLOB_GROUP_WRITABLE)
return 0100644; return GIT_FILEMODE_BLOB;
return attributes; return filemode;
} }
int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source) int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
...@@ -553,7 +553,7 @@ int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source) ...@@ -553,7 +553,7 @@ int git_treebuilder_create(git_treebuilder **builder_p, const git_tree *source)
if (append_entry( if (append_entry(
bld, entry_src->filename, bld, entry_src->filename,
&entry_src->oid, &entry_src->oid,
normalize_attributes(entry_src->attr)) < 0) normalize_filemode((git_filemode_t)entry_src->attr)) < 0)
goto on_error; goto on_error;
} }
} }
...@@ -571,17 +571,17 @@ int git_treebuilder_insert( ...@@ -571,17 +571,17 @@ int git_treebuilder_insert(
git_treebuilder *bld, git_treebuilder *bld,
const char *filename, const char *filename,
const git_oid *id, const git_oid *id,
unsigned int attributes) git_filemode_t filemode)
{ {
git_tree_entry *entry; git_tree_entry *entry;
int pos; int pos;
assert(bld && id && filename); assert(bld && id && filename);
if (!valid_attributes(attributes)) if (!valid_filemode(filemode))
return tree_error("Failed to insert entry. Invalid attributes"); return tree_error("Failed to insert entry. Invalid filemode");
attributes = normalize_attributes(attributes); filemode = normalize_filemode(filemode);
if (!valid_entry_name(filename)) if (!valid_entry_name(filename))
return tree_error("Failed to insert entry. Invalid name for a tree entry"); return tree_error("Failed to insert entry. Invalid name for a tree entry");
...@@ -598,7 +598,7 @@ int git_treebuilder_insert( ...@@ -598,7 +598,7 @@ int git_treebuilder_insert(
} }
git_oid_cpy(&entry->oid, id); git_oid_cpy(&entry->oid, id);
entry->attr = attributes; entry->attr = filemode;
if (pos < 0) { if (pos < 0) {
if (git_vector_insert(&bld->entries, entry) < 0) if (git_vector_insert(&bld->entries, entry) < 0)
......
...@@ -47,5 +47,9 @@ int git_tree__parse(git_tree *tree, git_odb_object *obj); ...@@ -47,5 +47,9 @@ int git_tree__parse(git_tree *tree, git_odb_object *obj);
*/ */
int git_tree__prefix_position(git_tree *tree, const char *prefix); int git_tree__prefix_position(git_tree *tree, const char *prefix);
/**
* Obsolete mode kept for compatibility reasons
*/
#define GIT_FILEMODE_BLOB_GROUP_WRITABLE 0100664
#endif #endif
...@@ -100,40 +100,40 @@ void test_index_filemodes__untrusted(void) ...@@ -100,40 +100,40 @@ void test_index_filemodes__untrusted(void)
/* 1 - add 0644 over existing 0644 -> expect 0644 */ /* 1 - add 0644 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644); replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644);
add_and_check_mode(index, "exec_off", 0100644); add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 2 - add 0644 over existing 0755 -> expect 0755 */ /* 2 - add 0644 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644); replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644);
add_and_check_mode(index, "exec_on", 0100755); add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 3 - add 0755 over existing 0644 -> expect 0644 */ /* 3 - add 0755 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755); replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755);
add_and_check_mode(index, "exec_off", 0100644); add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 4 - add 0755 over existing 0755 -> expect 0755 */ /* 4 - add 0755 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755); replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755);
add_and_check_mode(index, "exec_on", 0100755); add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 5 - append 0644 over existing 0644 -> expect 0644 */ /* 5 - append 0644 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644); replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644);
append_and_check_mode(index, "exec_off", 0100644); append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 6 - append 0644 over existing 0755 -> expect 0755 */ /* 6 - append 0644 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644); replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644);
append_and_check_mode(index, "exec_on", 0100755); append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 7 - append 0755 over existing 0644 -> expect 0644 */ /* 7 - append 0755 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755); replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755);
append_and_check_mode(index, "exec_off", 0100644); append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 8 - append 0755 over existing 0755 -> expect 0755 */ /* 8 - append 0755 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755); replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755);
append_and_check_mode(index, "exec_on", 0100755); append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 9 - add new 0644 -> expect 0644 */ /* 9 - add new 0644 -> expect 0644 */
cl_git_write2file("filemodes/new_off", "blah", cl_git_write2file("filemodes/new_off", "blah",
O_WRONLY | O_CREAT | O_TRUNC, 0644); O_WRONLY | O_CREAT | O_TRUNC, 0644);
add_and_check_mode(index, "new_off", 0100644); add_and_check_mode(index, "new_off", GIT_FILEMODE_BLOB);
/* this test won't give predictable results on a platform /* this test won't give predictable results on a platform
* that doesn't support filemodes correctly, so skip it. * that doesn't support filemodes correctly, so skip it.
...@@ -142,7 +142,7 @@ void test_index_filemodes__untrusted(void) ...@@ -142,7 +142,7 @@ void test_index_filemodes__untrusted(void)
/* 10 - add 0755 -> expect 0755 */ /* 10 - add 0755 -> expect 0755 */
cl_git_write2file("filemodes/new_on", "blah", cl_git_write2file("filemodes/new_on", "blah",
O_WRONLY | O_CREAT | O_TRUNC, 0755); O_WRONLY | O_CREAT | O_TRUNC, 0755);
add_and_check_mode(index, "new_on", 0100755); add_and_check_mode(index, "new_on", GIT_FILEMODE_BLOB_EXECUTABLE);
} }
git_index_free(index); git_index_free(index);
...@@ -168,45 +168,45 @@ void test_index_filemodes__trusted(void) ...@@ -168,45 +168,45 @@ void test_index_filemodes__trusted(void)
/* 1 - add 0644 over existing 0644 -> expect 0644 */ /* 1 - add 0644 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644); replace_file_with_mode("exec_off", "filemodes/exec_off.0", 0644);
add_and_check_mode(index, "exec_off", 0100644); add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 2 - add 0644 over existing 0755 -> expect 0644 */ /* 2 - add 0644 over existing 0755 -> expect 0644 */
replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644); replace_file_with_mode("exec_on", "filemodes/exec_on.0", 0644);
add_and_check_mode(index, "exec_on", 0100644); add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB);
/* 3 - add 0755 over existing 0644 -> expect 0755 */ /* 3 - add 0755 over existing 0644 -> expect 0755 */
replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755); replace_file_with_mode("exec_off", "filemodes/exec_off.1", 0755);
add_and_check_mode(index, "exec_off", 0100755); add_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 4 - add 0755 over existing 0755 -> expect 0755 */ /* 4 - add 0755 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755); replace_file_with_mode("exec_on", "filemodes/exec_on.1", 0755);
add_and_check_mode(index, "exec_on", 0100755); add_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 5 - append 0644 over existing 0644 -> expect 0644 */ /* 5 - append 0644 over existing 0644 -> expect 0644 */
replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644); replace_file_with_mode("exec_off", "filemodes/exec_off.2", 0644);
append_and_check_mode(index, "exec_off", 0100644); append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB);
/* 6 - append 0644 over existing 0755 -> expect 0644 */ /* 6 - append 0644 over existing 0755 -> expect 0644 */
replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644); replace_file_with_mode("exec_on", "filemodes/exec_on.2", 0644);
append_and_check_mode(index, "exec_on", 0100644); append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB);
/* 7 - append 0755 over existing 0644 -> expect 0755 */ /* 7 - append 0755 over existing 0644 -> expect 0755 */
replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755); replace_file_with_mode("exec_off", "filemodes/exec_off.3", 0755);
append_and_check_mode(index, "exec_off", 0100755); append_and_check_mode(index, "exec_off", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 8 - append 0755 over existing 0755 -> expect 0755 */ /* 8 - append 0755 over existing 0755 -> expect 0755 */
replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755); replace_file_with_mode("exec_on", "filemodes/exec_on.3", 0755);
append_and_check_mode(index, "exec_on", 0100755); append_and_check_mode(index, "exec_on", GIT_FILEMODE_BLOB_EXECUTABLE);
/* 9 - add new 0644 -> expect 0644 */ /* 9 - add new 0644 -> expect 0644 */
cl_git_write2file("filemodes/new_off", "blah", cl_git_write2file("filemodes/new_off", "blah",
O_WRONLY | O_CREAT | O_TRUNC, 0644); O_WRONLY | O_CREAT | O_TRUNC, 0644);
add_and_check_mode(index, "new_off", 0100644); add_and_check_mode(index, "new_off", GIT_FILEMODE_BLOB);
/* 10 - add 0755 -> expect 0755 */ /* 10 - add 0755 -> expect 0755 */
cl_git_write2file("filemodes/new_on", "blah", cl_git_write2file("filemodes/new_on", "blah",
O_WRONLY | O_CREAT | O_TRUNC, 0755); O_WRONLY | O_CREAT | O_TRUNC, 0755);
add_and_check_mode(index, "new_on", 0100755); add_and_check_mode(index, "new_on", GIT_FILEMODE_BLOB_EXECUTABLE);
git_index_free(index); git_index_free(index);
} }
...@@ -4,9 +4,6 @@ ...@@ -4,9 +4,6 @@
static const char *blob_oid = "3d0970ec547fc41ef8a5882dde99c6adce65b021"; static const char *blob_oid = "3d0970ec547fc41ef8a5882dde99c6adce65b021";
static const char *tree_oid = "1b05fdaa881ee45b48cbaa5e9b037d667a47745e"; static const char *tree_oid = "1b05fdaa881ee45b48cbaa5e9b037d667a47745e";
#define GROUP_WRITABLE_FILE 0100664
#define REGULAR_FILE 0100644
void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion(void) void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion(void)
{ {
git_treebuilder *builder; git_treebuilder *builder;
...@@ -16,9 +13,9 @@ void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion( ...@@ -16,9 +13,9 @@ void test_object_tree_attributes__ensure_correctness_of_attributes_on_insertion(
cl_git_pass(git_treebuilder_create(&builder, NULL)); cl_git_pass(git_treebuilder_create(&builder, NULL));
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0777777)); cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0777777));
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0100666)); cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0100666));
cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, 0000001)); cl_git_fail(git_treebuilder_insert(NULL, builder, "one.txt", &oid, (git_filemode_t)0000001));
git_treebuilder_free(builder); git_treebuilder_free(builder);
} }
...@@ -37,7 +34,7 @@ void test_object_tree_attributes__group_writable_tree_entries_created_with_an_an ...@@ -37,7 +34,7 @@ void test_object_tree_attributes__group_writable_tree_entries_created_with_an_an
entry = git_tree_entry_byname(tree, "old_mode.txt"); entry = git_tree_entry_byname(tree, "old_mode.txt");
cl_assert_equal_i( cl_assert_equal_i(
GROUP_WRITABLE_FILE, GIT_FILEMODE_BLOB_GROUP_WRITABLE,
git_tree_entry_attributes(entry)); git_tree_entry_attributes(entry));
git_tree_free(tree); git_tree_free(tree);
...@@ -63,10 +60,10 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t ...@@ -63,10 +60,10 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t
builder, builder,
"normalized.txt", "normalized.txt",
&bid, &bid,
GROUP_WRITABLE_FILE)); GIT_FILEMODE_BLOB_GROUP_WRITABLE));
cl_assert_equal_i( cl_assert_equal_i(
REGULAR_FILE, GIT_FILEMODE_BLOB,
git_tree_entry_attributes(entry)); git_tree_entry_attributes(entry));
cl_git_pass(git_treebuilder_write(&tid, repo, builder)); cl_git_pass(git_treebuilder_write(&tid, repo, builder));
...@@ -76,7 +73,7 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t ...@@ -76,7 +73,7 @@ void test_object_tree_attributes__normalize_attributes_when_inserting_in_a_new_t
entry = git_tree_entry_byname(tree, "normalized.txt"); entry = git_tree_entry_byname(tree, "normalized.txt");
cl_assert_equal_i( cl_assert_equal_i(
REGULAR_FILE, GIT_FILEMODE_BLOB,
git_tree_entry_attributes(entry)); git_tree_entry_attributes(entry));
git_tree_free(tree); git_tree_free(tree);
...@@ -100,7 +97,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from ...@@ -100,7 +97,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from
entry = git_treebuilder_get(builder, "old_mode.txt"); entry = git_treebuilder_get(builder, "old_mode.txt");
cl_assert_equal_i( cl_assert_equal_i(
REGULAR_FILE, GIT_FILEMODE_BLOB,
git_tree_entry_attributes(entry)); git_tree_entry_attributes(entry));
cl_git_pass(git_treebuilder_write(&tid2, repo, builder)); cl_git_pass(git_treebuilder_write(&tid2, repo, builder));
...@@ -110,7 +107,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from ...@@ -110,7 +107,7 @@ void test_object_tree_attributes__normalize_attributes_when_creating_a_tree_from
cl_git_pass(git_tree_lookup(&tree, repo, &tid2)); cl_git_pass(git_tree_lookup(&tree, repo, &tid2));
entry = git_tree_entry_byname(tree, "old_mode.txt"); entry = git_tree_entry_byname(tree, "old_mode.txt");
cl_assert_equal_i( cl_assert_equal_i(
REGULAR_FILE, GIT_FILEMODE_BLOB,
git_tree_entry_attributes(entry)); git_tree_entry_attributes(entry));
git_tree_free(tree); git_tree_free(tree);
......
...@@ -35,11 +35,16 @@ void test_object_tree_write__from_memory(void) ...@@ -35,11 +35,16 @@ void test_object_tree_write__from_memory(void)
cl_git_pass(git_tree_lookup(&tree, g_repo, &id)); cl_git_pass(git_tree_lookup(&tree, g_repo, &id));
cl_git_pass(git_treebuilder_create(&builder, tree)); cl_git_pass(git_treebuilder_create(&builder, tree));
cl_git_fail(git_treebuilder_insert(NULL, builder, "", &bid, 0100644)); cl_git_fail(git_treebuilder_insert(NULL, builder, "",
cl_git_fail(git_treebuilder_insert(NULL, builder, "/", &bid, 0100644)); &bid, GIT_FILEMODE_BLOB));
cl_git_fail(git_treebuilder_insert(NULL, builder, "folder/new.txt", &bid, 0100644)); cl_git_fail(git_treebuilder_insert(NULL, builder, "/",
&bid, GIT_FILEMODE_BLOB));
cl_git_fail(git_treebuilder_insert(NULL, builder, "folder/new.txt",
&bid, GIT_FILEMODE_BLOB));
cl_git_pass(git_treebuilder_insert(
NULL, builder, "new.txt", &bid, GIT_FILEMODE_BLOB));
cl_git_pass(git_treebuilder_insert(NULL,builder,"new.txt",&bid,0100644));
cl_git_pass(git_treebuilder_write(&rid, g_repo, builder)); cl_git_pass(git_treebuilder_write(&rid, g_repo, builder));
cl_assert(git_oid_cmp(&rid, &id2) == 0); cl_assert(git_oid_cmp(&rid, &id2) == 0);
...@@ -63,14 +68,16 @@ void test_object_tree_write__subtree(void) ...@@ -63,14 +68,16 @@ void test_object_tree_write__subtree(void)
//create subtree //create subtree
cl_git_pass(git_treebuilder_create(&builder, NULL)); cl_git_pass(git_treebuilder_create(&builder, NULL));
cl_git_pass(git_treebuilder_insert(NULL,builder,"new.txt",&bid,0100644)); //-V536 cl_git_pass(git_treebuilder_insert(
NULL, builder, "new.txt", &bid, GIT_FILEMODE_BLOB)); //-V536
cl_git_pass(git_treebuilder_write(&subtree_id, g_repo, builder)); cl_git_pass(git_treebuilder_write(&subtree_id, g_repo, builder));
git_treebuilder_free(builder); git_treebuilder_free(builder);
// create parent tree // create parent tree
cl_git_pass(git_tree_lookup(&tree, g_repo, &id)); cl_git_pass(git_tree_lookup(&tree, g_repo, &id));
cl_git_pass(git_treebuilder_create(&builder, tree)); cl_git_pass(git_treebuilder_create(&builder, tree));
cl_git_pass(git_treebuilder_insert(NULL,builder,"new",&subtree_id,040000)); //-V536 cl_git_pass(git_treebuilder_insert(
NULL, builder, "new", &subtree_id, GIT_FILEMODE_TREE)); //-V536
cl_git_pass(git_treebuilder_write(&id_hiearar, g_repo, builder)); cl_git_pass(git_treebuilder_write(&id_hiearar, g_repo, builder));
git_treebuilder_free(builder); git_treebuilder_free(builder);
git_tree_free(tree); git_tree_free(tree);
...@@ -96,23 +103,23 @@ void test_object_tree_write__sorted_subtrees(void) ...@@ -96,23 +103,23 @@ void test_object_tree_write__sorted_subtrees(void)
unsigned int attr; unsigned int attr;
const char *filename; const char *filename;
} entries[] = { } entries[] = {
{ 0100644, ".gitattributes" }, { GIT_FILEMODE_BLOB, ".gitattributes" },
{ 0100644, ".gitignore" }, { GIT_FILEMODE_BLOB, ".gitignore" },
{ 0100644, ".htaccess" }, { GIT_FILEMODE_BLOB, ".htaccess" },
{ 0100644, "Capfile" }, { GIT_FILEMODE_BLOB, "Capfile" },
{ 0100644, "Makefile"}, { GIT_FILEMODE_BLOB, "Makefile"},
{ 0100644, "README"}, { GIT_FILEMODE_BLOB, "README"},
{ 0040000, "app"}, { GIT_FILEMODE_TREE, "app"},
{ 0040000, "cake"}, { GIT_FILEMODE_TREE, "cake"},
{ 0040000, "config"}, { GIT_FILEMODE_TREE, "config"},
{ 0100644, "c"}, { GIT_FILEMODE_BLOB, "c"},
{ 0100644, "git_test.txt"}, { GIT_FILEMODE_BLOB, "git_test.txt"},
{ 0100644, "htaccess.htaccess"}, { GIT_FILEMODE_BLOB, "htaccess.htaccess"},
{ 0100644, "index.php"}, { GIT_FILEMODE_BLOB, "index.php"},
{ 0040000, "plugins"}, { GIT_FILEMODE_TREE, "plugins"},
{ 0040000, "schemas"}, { GIT_FILEMODE_TREE, "schemas"},
{ 0040000, "ssl-certs"}, { GIT_FILEMODE_TREE, "ssl-certs"},
{ 0040000, "vendors"} { GIT_FILEMODE_TREE, "vendors"}
}; };
git_oid blank_oid, tree_oid; git_oid blank_oid, tree_oid;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment