diff options
| author | Russell Belfer <rb@github.com> | 2012-04-13 10:33:14 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2012-04-17 10:44:50 -0700 |
| commit | f201d613a80f7ad6f54d90eb7a7a0d8b8c72676b (patch) | |
| tree | c3cd8f0eee145f40b640519e06ae628cdb942eb3 /tests-clar | |
| parent | 1a6e8f8a54eea1159a950cd8a49cedae3699ff9a (diff) | |
| download | libgit2-f201d613a80f7ad6f54d90eb7a7a0d8b8c72676b.tar.gz | |
Add git_reference_lookup_oid and lookup_resolved
Adds a new public reference function `git_reference_lookup_oid`
that directly resolved a reference name to an OID without returning
the intermediate `git_reference` object (hence, no free needed).
Internally, this adds a `git_reference_lookup_resolved` function
that combines looking up and resolving a reference. This allows
us to be more efficient with memory reallocation.
The existing `git_reference_lookup` and `git_reference_resolve`
are reimplmented on top of the new utility and a few places in the
code are changed to use one of the two new functions.
Diffstat (limited to 'tests-clar')
| -rw-r--r-- | tests-clar/refs/lookup.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/tests-clar/refs/lookup.c b/tests-clar/refs/lookup.c new file mode 100644 index 000000000..d9b6c260f --- /dev/null +++ b/tests-clar/refs/lookup.c @@ -0,0 +1,42 @@ +#include "clar_libgit2.h" +#include "refs.h" + +static git_repository *g_repo; + +void test_refs_lookup__initialize(void) +{ + g_repo = cl_git_sandbox_init("testrepo.git"); +} + +void test_refs_lookup__cleanup(void) +{ + cl_git_sandbox_cleanup(); +} + +void test_refs_lookup__with_resolve(void) +{ + git_reference *a, *b, *temp; + + cl_git_pass(git_reference_lookup(&temp, g_repo, "HEAD")); + cl_git_pass(git_reference_resolve(&a, temp)); + git_reference_free(temp); + + cl_git_pass(git_reference_lookup_resolved(&b, g_repo, "HEAD", 5)); + cl_assert(git_reference_cmp(a, b) == 0); + git_reference_free(b); + + cl_git_pass(git_reference_lookup_resolved(&b, g_repo, "head-tracker", 5)); + cl_assert(git_reference_cmp(a, b) == 0); + git_reference_free(b); + + git_reference_free(a); +} + +void test_refs_lookup__oid(void) +{ + git_oid tag, expected; + + cl_git_pass(git_reference_lookup_oid(&tag, g_repo, "refs/tags/point_to_blob")); + cl_git_pass(git_oid_fromstr(&expected, "1385f264afb75a56a5bec74243be9b367ba4ca08")); + cl_assert(git_oid_cmp(&tag, &expected) == 0); +} |
