diff options
Diffstat (limited to 'tests-clar/online/push_util.h')
-rw-r--r-- | tests-clar/online/push_util.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tests-clar/online/push_util.h b/tests-clar/online/push_util.h new file mode 100644 index 000000000..759122aa6 --- /dev/null +++ b/tests-clar/online/push_util.h @@ -0,0 +1,69 @@ +#ifndef INCLUDE_cl_push_util_h__ +#define INCLUDE_cl_push_util_h__ + +#include "git2/oid.h" + +/* Constant for zero oid */ +extern const git_oid OID_ZERO; + +/** + * Macro for initializing git_remote_callbacks to use test helpers that + * record data in a record_callbacks_data instance. + * @param data pointer to a record_callbacks_data instance + */ +#define RECORD_CALLBACKS_INIT(data) \ + { GIT_REMOTE_CALLBACKS_VERSION, NULL, NULL, record_update_tips_cb, data } + +typedef struct { + char *name; + git_oid *old_oid; + git_oid *new_oid; +} updated_tip; + +typedef struct { + git_vector updated_tips; +} record_callbacks_data; + +typedef struct { + const char *name; + const git_oid *oid; +} expected_ref; + +void updated_tip_free(updated_tip *t); + +void record_callbacks_data_clear(record_callbacks_data *data); + +/** + * Callback for git_remote_update_tips that records updates + * + * @param data (git_vector *) of updated_tip instances + */ +int record_update_tips_cb(const char *refname, const git_oid *a, const git_oid *b, void *data); + +/** + * Callback for git_remote_list that adds refspecs to delete each ref + * + * @param head a ref on the remote + * @param payload a git_push instance + */ +int delete_ref_cb(git_remote_head *head, void *payload); + +/** + * Callback for git_remote_list that adds refspecs to vector + * + * @param head a ref on the remote + * @param payload (git_vector *) of git_remote_head instances + */ +int record_ref_cb(git_remote_head *head, void *payload); + +/** + * Verifies that refs on remote stored by record_ref_cb match the expected + * names, oids, and order. + * + * @param actual_refs actual refs stored by record_ref_cb() + * @param expected_refs expected remote refs + * @param expected_refs_len length of expected_refs + */ +void verify_remote_refs(git_vector *actual_refs, const expected_ref expected_refs[], size_t expected_refs_len); + +#endif /* INCLUDE_cl_push_util_h__ */ |