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
8fae76c5
Commit
8fae76c5
authored
Dec 14, 2011
by
nulltoken
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
commit: add test to ensure predictability of generation of commit, tree and blob object ids
parent
16a9f32a
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
81 additions
and
23 deletions
+81
-23
tests-clay/clay.h
+3
-3
tests-clay/clay_main.c
+9
-9
tests-clay/object/commit/commitstagedfile.c
+69
-11
No files found.
tests-clay/clay.h
View file @
8fae76c5
...
...
@@ -129,6 +129,9 @@ extern void test_network_remotes__initialize(void);
extern
void
test_network_remotes__parsing
(
void
);
extern
void
test_network_remotes__refspec_parsing
(
void
);
extern
void
test_network_remotes__transform
(
void
);
extern
void
test_object_commit_commitstagedfile__cleanup
(
void
);
extern
void
test_object_commit_commitstagedfile__generate_predictable_object_ids
(
void
);
extern
void
test_object_commit_commitstagedfile__initialize
(
void
);
extern
void
test_object_raw_chars__build_valid_oid_from_raw_bytes
(
void
);
extern
void
test_object_raw_chars__find_invalid_chars_in_oid
(
void
);
extern
void
test_object_raw_compare__compare_allocfmt_oids
(
void
);
...
...
@@ -159,9 +162,6 @@ extern void test_object_raw_size__validate_oid_size(void);
extern
void
test_object_raw_type2string__check_type_is_loose
(
void
);
extern
void
test_object_raw_type2string__convert_string_to_type
(
void
);
extern
void
test_object_raw_type2string__convert_type_to_string
(
void
);
extern
void
test_object_tree_buildfromindex__cleanup
(
void
);
extern
void
test_object_tree_buildfromindex__generate_predictable_object_ids
(
void
);
extern
void
test_object_tree_buildfromindex__initialize
(
void
);
extern
void
test_object_tree_diff__addition
(
void
);
extern
void
test_object_tree_diff__cleanup
(
void
);
extern
void
test_object_tree_diff__deletion
(
void
);
...
...
tests-clay/clay_main.c
View file @
8fae76c5
...
...
@@ -200,6 +200,9 @@ static const struct clay_func _clay_cb_network_remotes[] = {
{
"refspec_parsing"
,
&
test_network_remotes__refspec_parsing
},
{
"transform"
,
&
test_network_remotes__transform
}
};
static
const
struct
clay_func
_clay_cb_object_commit_commitstagedfile
[]
=
{
{
"generate_predictable_object_ids"
,
&
test_object_commit_commitstagedfile__generate_predictable_object_ids
}
};
static
const
struct
clay_func
_clay_cb_object_raw_chars
[]
=
{
{
"build_valid_oid_from_raw_bytes"
,
&
test_object_raw_chars__build_valid_oid_from_raw_bytes
},
{
"find_invalid_chars_in_oid"
,
&
test_object_raw_chars__find_invalid_chars_in_oid
}
...
...
@@ -246,9 +249,6 @@ static const struct clay_func _clay_cb_object_raw_type2string[] = {
{
"convert_string_to_type"
,
&
test_object_raw_type2string__convert_string_to_type
},
{
"convert_type_to_string"
,
&
test_object_raw_type2string__convert_type_to_string
}
};
static
const
struct
clay_func
_clay_cb_object_tree_buildfromindex
[]
=
{
{
"generate_predictable_object_ids"
,
&
test_object_tree_buildfromindex__generate_predictable_object_ids
}
};
static
const
struct
clay_func
_clay_cb_object_tree_diff
[]
=
{
{
"addition"
,
&
test_object_tree_diff__addition
},
{
"deletion"
,
&
test_object_tree_diff__deletion
},
...
...
@@ -400,6 +400,12 @@ static const struct clay_suite _clay_suites[] = {
_clay_cb_network_remotes
,
4
},
{
"object::commit::commitstagedfile"
,
{
"initialize"
,
&
test_object_commit_commitstagedfile__initialize
},
{
"cleanup"
,
&
test_object_commit_commitstagedfile__cleanup
},
_clay_cb_object_commit_commitstagedfile
,
1
},
{
"object::raw::chars"
,
{
NULL
,
NULL
},
{
NULL
,
NULL
},
...
...
@@ -448,12 +454,6 @@ static const struct clay_suite _clay_suites[] = {
_clay_cb_object_raw_type2string
,
3
},
{
"object::tree::buildfromindex"
,
{
"initialize"
,
&
test_object_tree_buildfromindex__initialize
},
{
"cleanup"
,
&
test_object_tree_buildfromindex__cleanup
},
_clay_cb_object_tree_buildfromindex
,
1
},
{
"object::tree::diff"
,
{
"initialize"
,
&
test_object_tree_diff__initialize
},
{
"cleanup"
,
&
test_object_tree_diff__cleanup
},
...
...
tests-clay/object/
tree/buildfromindex
.c
→
tests-clay/object/
commit/commitstagedfile
.c
View file @
8fae76c5
...
...
@@ -13,7 +13,7 @@ static void file_create(const char *filename, const char *content)
cl_git_pass
(
p_close
(
fd
));
}
void
test_object_
tree_buildfromindex
__initialize
(
void
)
void
test_object_
commit_commitstagedfile
__initialize
(
void
)
{
cl_fixture
(
"treebuilder"
);
cl_git_pass
(
git_repository_init
(
&
repo
,
"treebuilder/"
,
0
));
...
...
@@ -21,40 +21,98 @@ void test_object_tree_buildfromindex__initialize(void)
cl_assert
(
repo
!=
NULL
);
}
void
test_object_
tree_buildfromindex
__cleanup
(
void
)
void
test_object_
commit_commitstagedfile
__cleanup
(
void
)
{
git_repository_free
(
repo
);
cl_fixture_cleanup
(
"treebuilder"
);
}
void
test_object_
tree_buildfromindex
__generate_predictable_object_ids
(
void
)
void
test_object_
commit_commitstagedfile
__generate_predictable_object_ids
(
void
)
{
git_index
*
index
;
git_oid
blob_oid
,
tree_oid
,
expected_tree_oid
;
git_index_entry
*
entry
;
git_oid
expected_blob_oid
,
tree_oid
,
expected_tree_oid
,
commit_oid
,
expected_commit_oid
;
git_signature
*
signature
;
git_tree
*
tree
;
/*
* Add a new file to the index
* The test below replicates the following git scenario
*
* $ echo "test" > test.txt
* $ git hash-object test.txt
* 9daeafb9864cf43055ae93beb0afd6c7d144bfa4
*
* $ git add .
* $ git commit -m "Initial commit"
*
* $ git log
* commit 1fe3126578fc4eca68c193e4a3a0a14a0704624d
* Author: nulltoken <emeric.fermas@gmail.com>
* Date: Wed Dec 14 08:29:03 2011 +0100
*
* Initial commit
*
* $ git show 1fe3 --format=raw
* commit 1fe3126578fc4eca68c193e4a3a0a14a0704624d
* tree 2b297e643c551e76cfa1f93810c50811382f9117
* author nulltoken <emeric.fermas@gmail.com> 1323847743 +0100
* committer nulltoken <emeric.fermas@gmail.com> 1323847743 +0100
*
* Initial commit
*
* diff --git a/test.txt b/test.txt
* new file mode 100644
* index 0000000..9daeafb
* --- /dev/null
* +++ b/test.txt
* @@ -0,0 +1 @@
* +test
*
* $ git ls-tree 2b297
* 100644 blob 9daeafb9864cf43055ae93beb0afd6c7d144bfa4 test.txt
*/
cl_git_pass
(
git_repository_index
(
&
index
,
repo
));
cl_git_pass
(
git_oid_fromstr
(
&
expected_commit_oid
,
"1fe3126578fc4eca68c193e4a3a0a14a0704624d"
));
cl_git_pass
(
git_oid_fromstr
(
&
expected_tree_oid
,
"2b297e643c551e76cfa1f93810c50811382f9117"
));
cl_git_pass
(
git_oid_fromstr
(
&
expected_blob_oid
,
"9daeafb9864cf43055ae93beb0afd6c7d144bfa4"
));
/*
* Add a new file to the index
*/
file_create
(
"treebuilder/test.txt"
,
"test
\n
"
);
cl_git_pass
(
git_repository_index
(
&
index
,
repo
));
cl_git_pass
(
git_index_add
(
index
,
"test.txt"
,
0
));
entry
=
git_index_get
(
index
,
0
);
/* $ echo "test" | git hash-object --stdin */
cl_git_pass
(
git_oid_fromstr
(
&
blob_oid
,
"9daeafb9864cf43055ae93beb0afd6c7d144bfa4"
));
cl_assert
(
git_oid_cmp
(
&
blob_oid
,
&
entry
->
oid
)
==
0
);
cl_assert
(
git_oid_cmp
(
&
expected_blob_oid
,
&
entry
->
oid
)
==
0
);
/*
* Build the tree from the index
*/
cl_git_pass
(
git_tree_create_fromindex
(
&
tree_oid
,
index
));
cl_git_pass
(
git_oid_fromstr
(
&
expected_tree_oid
,
"2b297e643c551e76cfa1f93810c50811382f9117"
));
cl_assert
(
git_oid_cmp
(
&
expected_tree_oid
,
&
tree_oid
)
==
0
);
/*
* Commit the staged file
*/
cl_git_pass
(
git_signature_new
(
&
signature
,
"nulltoken"
,
"emeric.fermas@gmail.com"
,
1323847743
,
60
));
cl_git_pass
(
git_tree_lookup
(
&
tree
,
repo
,
&
tree_oid
));
cl_git_pass
(
git_commit_create_v
(
&
commit_oid
,
repo
,
"HEAD"
,
signature
,
signature
,
NULL
,
"Initial commit
\n
"
,
// Note: the trailing linefeed is mandatory to replicate git behavior
tree
,
0
));
cl_assert
(
git_oid_cmp
(
&
expected_commit_oid
,
&
commit_oid
)
==
0
);
git_signature_free
(
signature
);
git_tree_free
(
tree
);
git_index_free
(
index
);
}
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