mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 00:43:41 +00:00

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.
45 lines
1.2 KiB
C
45 lines
1.2 KiB
C
#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);
|
|
}
|