Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/libgit2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVicent Marti <tanoku@gmail.com>2013-05-28 22:47:55 +0400
committerVicent Marti <tanoku@gmail.com>2013-05-28 22:47:55 +0400
commit56960b8396d3aef0b39f32aa7a9749202f925ada (patch)
tree90148977efa5b5dd715ddc4e474732737320314e /tests-clar
parent2638a03affdf57c989f573d48afca3b849cb4c1f (diff)
Liike this
Diffstat (limited to 'tests-clar')
-rw-r--r--tests-clar/refdb/testdb.c12
-rw-r--r--tests-clar/refs/iterator.c35
2 files changed, 28 insertions, 19 deletions
diff --git a/tests-clar/refdb/testdb.c b/tests-clar/refdb/testdb.c
index 961e18d44..c89bcce9f 100644
--- a/tests-clar/refdb/testdb.c
+++ b/tests-clar/refdb/testdb.c
@@ -134,7 +134,7 @@ static int refdb_test_backend__iterator(git_reference_iterator **out, git_refdb_
return 0;
}
-static int refdb_test_backend__next(const char **name, git_reference_iterator *_iter)
+static int refdb_test_backend__next(git_reference **out, git_reference_iterator *_iter)
{
refdb_test_entry *entry;
refdb_test_backend *backend = (refdb_test_backend *) _iter->backend;
@@ -144,9 +144,15 @@ static int refdb_test_backend__next(const char **name, git_reference_iterator *_
if (!entry)
return GIT_ITEROVER;
- *name = entry->name;
- iter->i++;
+ if (entry->type == GIT_REF_OID) {
+ *out = git_reference__alloc(entry->name, &entry->target.oid, NULL);
+ } else if (entry->type == GIT_REF_SYMBOLIC) {
+ *out = git_reference__alloc_symbolic(entry->name, entry->target.symbolic);
+ } else {
+ return -1;
+ }
+ iter->i++;
return 0;
}
diff --git a/tests-clar/refs/iterator.c b/tests-clar/refs/iterator.c
index d5555c657..7a966892b 100644
--- a/tests-clar/refs/iterator.c
+++ b/tests-clar/refs/iterator.c
@@ -38,40 +38,43 @@ static const char *refnames[] = {
"refs/tags/wrapped_tag",
};
+static int refcmp_cb(const void *a, const void *b)
+{
+ const git_reference *refa = (const git_reference *)a;
+ const git_reference *refb = (const git_reference *)b;
+
+ return strcmp(refa->name, refb->name);
+}
+
void test_refs_iterator__list(void)
{
git_reference_iterator *iter;
git_vector output;
- char *refname;
+ git_reference *ref;
int error;
size_t i;
- cl_git_pass(git_vector_init(&output, 32, git__strcmp_cb));
+ cl_git_pass(git_vector_init(&output, 32, &refcmp_cb));
cl_git_pass(git_reference_iterator_new(&iter, repo));
do {
- const char *name;
- error = git_reference_next(&name, iter);
+ error = git_reference_next(&ref, iter);
cl_assert(error == 0 || error == GIT_ITEROVER);
if (error != GIT_ITEROVER) {
- char *dup = git__strdup(name);
- cl_assert(dup != NULL);
- cl_git_pass(git_vector_insert(&output, dup));
+ cl_git_pass(git_vector_insert(&output, ref));
}
} while (!error);
+ git_reference_iterator_free(iter);
cl_assert_equal_i(output.length, ARRAY_SIZE(refnames));
git_vector_sort(&output);
- git_vector_foreach(&output, i, refname) {
- cl_assert_equal_s(refname, refnames[i]);
- }
-
- git_reference_iterator_free(iter);
- git_vector_foreach(&output, i, refname) {
- git__free(refname);
+ git_vector_foreach(&output, i, ref) {
+ cl_assert_equal_s(ref->name, refnames[i]);
+ git_reference_free(ref);
}
+
git_vector_free(&output);
}
@@ -79,14 +82,14 @@ void test_refs_iterator__empty(void)
{
git_reference_iterator *iter;
git_odb *odb;
- const char *name;
+ git_reference *ref;
git_repository *empty;
cl_git_pass(git_odb_new(&odb));
cl_git_pass(git_repository_wrap_odb(&empty, odb));
cl_git_pass(git_reference_iterator_new(&iter, empty));
- cl_assert_equal_i(GIT_ITEROVER, git_reference_next(&name, iter));
+ cl_assert_equal_i(GIT_ITEROVER, git_reference_next(&ref, iter));
git_reference_iterator_free(iter);
git_odb_free(odb);