diff options
| author | Russell Belfer <rb@github.com> | 2014-03-04 16:23:28 -0800 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2014-03-04 16:23:28 -0800 |
| commit | 13f7ecd7b9c5244441eeaae798c8657d1818ea7f (patch) | |
| tree | dad7f25d5b6a5c2c7cf41ea32e5914fe181b95ce /tests/object | |
| parent | f5753999e4cac020c2dd3a4669fe9ba14df93cb5 (diff) | |
| download | libgit2-13f7ecd7b9c5244441eeaae798c8657d1818ea7f.tar.gz | |
Add git_object_short_id API to get short id string
This finds a short id string that will unambiguously select the
given object, starting with the core.abbrev length (usually 7)
and growing until it is no longer ambiguous.
Diffstat (limited to 'tests/object')
| -rw-r--r-- | tests/object/shortid.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/tests/object/shortid.c b/tests/object/shortid.c new file mode 100644 index 000000000..fa1dac09a --- /dev/null +++ b/tests/object/shortid.c @@ -0,0 +1,44 @@ +#include "clar_libgit2.h" + +git_repository *_repo; + +void test_object_shortid__initialize(void) +{ + cl_git_pass(git_repository_open(&_repo, cl_fixture("duplicate.git"))); +} + +void test_object_shortid__cleanup(void) +{ + git_repository_free(_repo); + _repo = NULL; +} + +void test_object_shortid__select(void) +{ + git_oid full; + git_object *obj; + git_buf shorty = {0}; + + git_oid_fromstr(&full, "ce013625030ba8dba906f756967f9e9ca394464a"); + cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY)); + cl_git_pass(git_object_short_id(&shorty, obj)); + cl_assert_equal_i(7, shorty.size); + cl_assert_equal_s("ce01362", shorty.ptr); + git_object_free(obj); + + git_oid_fromstr(&full, "dea509d097ce692e167dfc6a48a7a280cc5e877e"); + cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY)); + cl_git_pass(git_object_short_id(&shorty, obj)); + cl_assert_equal_i(9, shorty.size); + cl_assert_equal_s("dea509d09", shorty.ptr); + git_object_free(obj); + + git_oid_fromstr(&full, "dea509d0b3cb8ee0650f6ca210bc83f4678851ba"); + cl_git_pass(git_object_lookup(&obj, _repo, &full, GIT_OBJ_ANY)); + cl_git_pass(git_object_short_id(&shorty, obj)); + cl_assert_equal_i(9, shorty.size); + cl_assert_equal_s("dea509d0b", shorty.ptr); + git_object_free(obj); + + git_buf_free(&shorty); +} |
