From 56960b8396d3aef0b39f32aa7a9749202f925ada Mon Sep 17 00:00:00 2001 From: Vicent Marti Date: Tue, 28 May 2013 20:47:55 +0200 Subject: Liike this --- tests-clar/refdb/testdb.c | 12 +++++++++--- tests-clar/refs/iterator.c | 35 +++++++++++++++++++---------------- 2 files changed, 28 insertions(+), 19 deletions(-) (limited to 'tests-clar') 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); -- cgit v1.2.3