Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
git2
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
git2
Commits
29cc374d
Commit
29cc374d
authored
Nov 08, 2012
by
nulltoken
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
tree: enforce coverage of silent entry replacement
parent
9d641283
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
117 additions
and
0 deletions
+117
-0
tests-clar/object/tree/duplicateentries.c
+117
-0
No files found.
tests-clar/object/tree/duplicateentries.c
0 → 100644
View file @
29cc374d
#include "clar_libgit2.h"
#include "tree.h"
static
git_repository
*
_repo
;
void
test_object_tree_duplicateentries__initialize
(
void
)
{
_repo
=
cl_git_sandbox_init
(
"testrepo"
);
}
void
test_object_tree_duplicateentries__cleanup
(
void
)
{
cl_git_sandbox_cleanup
();
}
/*
* $ git show --format=raw refs/heads/dir
* commit 144344043ba4d4a405da03de3844aa829ae8be0e
* tree d52a8fe84ceedf260afe4f0287bbfca04a117e83
* parent cf80f8de9f1185bf3a05f993f6121880dd0cfbc9
* author Ben Straub <bstraub@github.com> 1343755506 -0700
* committer Ben Straub <bstraub@github.com> 1343755506 -0700
*
* Change a file mode
*
* diff --git a/a/b.txt b/a/b.txt
* old mode 100644
* new mode 100755
*
* $ git ls-tree d52a8fe84ceedf260afe4f0287bbfca04a117e83
* 100644 blob a8233120f6ad708f843d861ce2b7228ec4e3dec6 README
* 040000 tree 4e0883eeeeebc1fb1735161cea82f7cb5fab7e63 a
* 100644 blob 45b983be36b73c0788dc9cbcb76cbb80fc7bb057 branch_file.txt
* 100644 blob a71586c1dfe8a71c6cbf6c129f404c5642ff31bd new.txt
*/
static
void
tree_checker
(
git_oid
*
tid
,
const
char
*
expected_sha
,
git_filemode_t
expected_filemode
)
{
git_tree
*
tree
;
const
git_tree_entry
*
entry
;
git_oid
oid
;
cl_git_pass
(
git_tree_lookup
(
&
tree
,
_repo
,
tid
));
cl_assert_equal_i
(
1
,
git_tree_entrycount
(
tree
));
entry
=
git_tree_entry_byindex
(
tree
,
0
);
cl_git_pass
(
git_oid_fromstr
(
&
oid
,
expected_sha
));
cl_assert_equal_i
(
0
,
git_oid_cmp
(
&
oid
,
git_tree_entry_id
(
entry
)));
cl_assert_equal_i
(
expected_filemode
,
git_tree_entry_filemode
(
entry
));
git_tree_free
(
tree
);
}
static
void
tree_creator
(
git_oid
*
out
,
void
(
*
fn
)(
git_treebuilder
*
))
{
git_treebuilder
*
builder
;
cl_git_pass
(
git_treebuilder_create
(
&
builder
,
NULL
));
fn
(
builder
);
cl_git_pass
(
git_treebuilder_write
(
out
,
_repo
,
builder
));
git_treebuilder_free
(
builder
);
}
static
void
two_blobs
(
git_treebuilder
*
bld
)
{
git_oid
oid
;
const
git_tree_entry
*
entry
;
cl_git_pass
(
git_oid_fromstr
(
&
oid
,
"a8233120f6ad708f843d861ce2b7228ec4e3dec6"
));
/* blob oid (README) */
cl_git_pass
(
git_treebuilder_insert
(
&
entry
,
bld
,
"duplicate"
,
&
oid
,
GIT_FILEMODE_BLOB
));
cl_git_pass
(
git_oid_fromstr
(
&
oid
,
"a71586c1dfe8a71c6cbf6c129f404c5642ff31bd"
));
/* blob oid (new.txt) */
cl_git_pass
(
git_treebuilder_insert
(
&
entry
,
bld
,
"duplicate"
,
&
oid
,
GIT_FILEMODE_BLOB
));
}
static
void
one_blob_and_one_tree
(
git_treebuilder
*
bld
)
{
git_oid
oid
;
const
git_tree_entry
*
entry
;
cl_git_pass
(
git_oid_fromstr
(
&
oid
,
"a8233120f6ad708f843d861ce2b7228ec4e3dec6"
));
/* blob oid (README) */
cl_git_pass
(
git_treebuilder_insert
(
&
entry
,
bld
,
"duplicate"
,
&
oid
,
GIT_FILEMODE_BLOB
));
cl_git_pass
(
git_oid_fromstr
(
&
oid
,
"4e0883eeeeebc1fb1735161cea82f7cb5fab7e63"
));
/* tree oid (a) */
cl_git_pass
(
git_treebuilder_insert
(
&
entry
,
bld
,
"duplicate"
,
&
oid
,
GIT_FILEMODE_TREE
));
}
void
test_object_tree_duplicateentries__cannot_create_a_duplicate_entry_through_the_treebuilder
(
void
)
{
git_oid
tid
;
tree_creator
(
&
tid
,
two_blobs
);
tree_checker
(
&
tid
,
"a71586c1dfe8a71c6cbf6c129f404c5642ff31bd"
,
GIT_FILEMODE_BLOB
);
tree_creator
(
&
tid
,
one_blob_and_one_tree
);
tree_checker
(
&
tid
,
"4e0883eeeeebc1fb1735161cea82f7cb5fab7e63"
,
GIT_FILEMODE_TREE
);
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment