diff options
Diffstat (limited to 'tests-clar/online/push_util.c')
-rw-r--r-- | tests-clar/online/push_util.c | 126 |
1 files changed, 0 insertions, 126 deletions
diff --git a/tests-clar/online/push_util.c b/tests-clar/online/push_util.c deleted file mode 100644 index 2e457844d..000000000 --- a/tests-clar/online/push_util.c +++ /dev/null @@ -1,126 +0,0 @@ - -#include "clar_libgit2.h" -#include "buffer.h" -#include "vector.h" -#include "push_util.h" - -const git_oid OID_ZERO = {{ 0 }}; - -void updated_tip_free(updated_tip *t) -{ - git__free(t->name); - git__free(t->old_oid); - git__free(t->new_oid); - git__free(t); -} - -void record_callbacks_data_clear(record_callbacks_data *data) -{ - size_t i; - updated_tip *tip; - - git_vector_foreach(&data->updated_tips, i, tip) - updated_tip_free(tip); - - git_vector_free(&data->updated_tips); -} - -int record_update_tips_cb(const char *refname, const git_oid *a, const git_oid *b, void *data) -{ - updated_tip *t; - record_callbacks_data *record_data = (record_callbacks_data *)data; - - cl_assert(t = git__malloc(sizeof(*t))); - - cl_assert(t->name = git__strdup(refname)); - cl_assert(t->old_oid = git__malloc(sizeof(*t->old_oid))); - git_oid_cpy(t->old_oid, a); - - cl_assert(t->new_oid = git__malloc(sizeof(*t->new_oid))); - git_oid_cpy(t->new_oid, b); - - git_vector_insert(&record_data->updated_tips, t); - - return 0; -} - -int delete_ref_cb(git_remote_head *head, void *payload) -{ - git_vector *delete_specs = (git_vector *)payload; - git_buf del_spec = GIT_BUF_INIT; - - /* Ignore malformed ref names (which also saves us from tag^{} */ - if (!git_reference_is_valid_name(head->name)) - return 0; - - /* Create a refspec that deletes a branch in the remote */ - if (strcmp(head->name, "refs/heads/master")) { - cl_git_pass(git_buf_putc(&del_spec, ':')); - cl_git_pass(git_buf_puts(&del_spec, head->name)); - cl_git_pass(git_vector_insert(delete_specs, git_buf_detach(&del_spec))); - } - - return 0; -} - -int record_ref_cb(git_remote_head *head, void *payload) -{ - git_vector *refs = (git_vector *) payload; - return git_vector_insert(refs, head); -} - -void verify_remote_refs(git_vector *actual_refs, const expected_ref expected_refs[], size_t expected_refs_len) -{ - size_t i, j = 0; - git_buf msg = GIT_BUF_INIT; - git_remote_head *actual; - char *oid_str; - bool master_present = false; - - /* We don't care whether "master" is present on the other end or not */ - git_vector_foreach(actual_refs, i, actual) { - if (!strcmp(actual->name, "refs/heads/master")) { - master_present = true; - break; - } - } - - if (expected_refs_len + (master_present ? 1 : 0) != actual_refs->length) - goto failed; - - git_vector_foreach(actual_refs, i, actual) { - if (master_present && !strcmp(actual->name, "refs/heads/master")) - continue; - - if (strcmp(expected_refs[j].name, actual->name) || - git_oid_cmp(expected_refs[j].oid, &actual->oid)) - goto failed; - - j++; - } - - return; - -failed: - git_buf_puts(&msg, "Expected and actual refs differ:\nEXPECTED:\n"); - - for(i = 0; i < expected_refs_len; i++) { - cl_assert(oid_str = git_oid_allocfmt(expected_refs[i].oid)); - cl_git_pass(git_buf_printf(&msg, "%s = %s\n", expected_refs[i].name, oid_str)); - git__free(oid_str); - } - - git_buf_puts(&msg, "\nACTUAL:\n"); - git_vector_foreach(actual_refs, i, actual) { - if (master_present && !strcmp(actual->name, "refs/heads/master")) - continue; - - cl_assert(oid_str = git_oid_allocfmt(&actual->oid)); - cl_git_pass(git_buf_printf(&msg, "%s = %s\n", actual->name, oid_str)); - git__free(oid_str); - } - - cl_fail(git_buf_cstr(&msg)); - - git_buf_free(&msg); -} |