mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 06:17:02 +00:00
Clean up GIT_UNUSED macros on all platforms
It turns out that commit 31e9cfc4cbcaf1b38cdd3dbe3282a8f57e5366a5 did not fix the GIT_USUSED behavior on all platforms. This commit walks through and really cleans things up more thoroughly, getting rid of the unnecessary stuff. To remove the use of some GIT_UNUSED, I ended up adding a couple of new iterators for hashtables that allow you to iterator just over keys or just over values. In making this change, I found a bug in the clar tests (where we were doing *count++ but meant to do (*count)++ to increment the value). I fixed that but then found the test failing because it was not really using an empty repo. So, I took some of the code that I wrote for iterator testing and moved it to clar_helpers.c, then made use of that to make it easier to open fixtures on a per test basis even within a single test file.
This commit is contained in:
parent
74fa4bfae3
commit
854eccbb2d
@ -408,10 +408,9 @@ void git_attr_cache_flush(
|
||||
return;
|
||||
|
||||
if (repo->attrcache.files) {
|
||||
const void *GIT_UNUSED(name);
|
||||
git_attr_file *file;
|
||||
|
||||
GIT_HASHTABLE_FOREACH(repo->attrcache.files, name, file,
|
||||
GIT_HASHTABLE_FOREACH_VALUE(repo->attrcache.files, file,
|
||||
git_attr_file__free(file));
|
||||
|
||||
git_hashtable_free(repo->attrcache.files);
|
||||
@ -419,10 +418,9 @@ void git_attr_cache_flush(
|
||||
}
|
||||
|
||||
if (repo->attrcache.macros) {
|
||||
const void *GIT_UNUSED(name);
|
||||
git_attr_rule *rule;
|
||||
|
||||
GIT_HASHTABLE_FOREACH(repo->attrcache.macros, name, rule,
|
||||
GIT_HASHTABLE_FOREACH_VALUE(repo->attrcache.macros, rule,
|
||||
git_attr_rule__free(rule));
|
||||
|
||||
git_hashtable_free(repo->attrcache.macros);
|
||||
|
@ -33,8 +33,7 @@
|
||||
# define GIT_TYPEOF(x)
|
||||
#endif
|
||||
|
||||
#define GIT_UNUSED(x) x
|
||||
#define GIT_UNUSED_ARG(x) ((void)(x))
|
||||
#define GIT_UNUSED(x) ((void)(x))
|
||||
|
||||
/* Define the printf format specifer to use for size_t output */
|
||||
#if defined(_MSC_VER) || defined(__MINGW32__)
|
||||
|
@ -125,13 +125,12 @@ static int normalize_name(const char *in, char **out)
|
||||
|
||||
static void free_vars(git_hashtable *values)
|
||||
{
|
||||
const char *GIT_UNUSED(_unused) = NULL;
|
||||
cvar_t *var = NULL;
|
||||
|
||||
if (values == NULL)
|
||||
return;
|
||||
|
||||
GIT_HASHTABLE_FOREACH(values, _unused, var,
|
||||
GIT_HASHTABLE_FOREACH_VALUE(values, var,
|
||||
do {
|
||||
cvar_t *next = CVAR_LIST_NEXT(var);
|
||||
cvar_free(var);
|
||||
|
@ -325,7 +325,7 @@ static int maybe_modified(
|
||||
int error = GIT_SUCCESS;
|
||||
git_oid noid, *use_noid = NULL;
|
||||
|
||||
GIT_UNUSED_ARG(old);
|
||||
GIT_UNUSED(old);
|
||||
|
||||
/* support "assume unchanged" & "skip worktree" bits */
|
||||
if ((oitem->flags_extended & GIT_IDXENTRY_INTENT_TO_ADD) != 0 ||
|
||||
|
@ -161,7 +161,7 @@ static int file_is_binary_by_content(
|
||||
git_map *old_data,
|
||||
git_map *new_data)
|
||||
{
|
||||
GIT_UNUSED_ARG(diff);
|
||||
GIT_UNUSED(diff);
|
||||
|
||||
if ((delta->old.flags & BINARY_DIFF_FLAGS) == 0) {
|
||||
size_t search_len = min(old_data->len, 4000);
|
||||
@ -448,7 +448,7 @@ static int print_compact(void *data, git_diff_delta *delta, float progress)
|
||||
diff_print_info *pi = data;
|
||||
char code, old_suffix, new_suffix;
|
||||
|
||||
GIT_UNUSED_ARG(progress);
|
||||
GIT_UNUSED(progress);
|
||||
|
||||
switch (delta->status) {
|
||||
case GIT_STATUS_ADDED: code = 'A'; break;
|
||||
@ -546,7 +546,7 @@ static int print_patch_file(void *data, git_diff_delta *delta, float progress)
|
||||
const char *newpfx = pi->diff->opts.dst_prefix;
|
||||
const char *newpath = delta->new.path;
|
||||
|
||||
GIT_UNUSED_ARG(progress);
|
||||
GIT_UNUSED(progress);
|
||||
|
||||
git_buf_clear(pi->buf);
|
||||
git_buf_printf(pi->buf, "diff --git %s%s %s%s\n", oldpfx, delta->old.path, newpfx, delta->new.path);
|
||||
@ -593,8 +593,8 @@ static int print_patch_hunk(
|
||||
{
|
||||
diff_print_info *pi = data;
|
||||
|
||||
GIT_UNUSED_ARG(d);
|
||||
GIT_UNUSED_ARG(r);
|
||||
GIT_UNUSED(d);
|
||||
GIT_UNUSED(r);
|
||||
|
||||
git_buf_clear(pi->buf);
|
||||
|
||||
@ -613,7 +613,7 @@ static int print_patch_line(
|
||||
{
|
||||
diff_print_info *pi = data;
|
||||
|
||||
GIT_UNUSED_ARG(delta);
|
||||
GIT_UNUSED(delta);
|
||||
|
||||
git_buf_clear(pi->buf);
|
||||
|
||||
|
@ -65,20 +65,20 @@ GIT_INLINE(int) git_hashtable_insert(git_hashtable *h, const void *key, void *va
|
||||
|
||||
#define git_hashtable_node_at(nodes, pos) ((git_hashtable_node *)(&nodes[pos]))
|
||||
|
||||
#define GIT_HASHTABLE_FOREACH(self, pkey, pvalue, code) {\
|
||||
git_hashtable *_self = (self);\
|
||||
git_hashtable_node *_nodes = _self->nodes;\
|
||||
unsigned int _i, _size = _self->size;\
|
||||
for (_i = 0; _i < _size; _i ++) {\
|
||||
git_hashtable_node *_node = git_hashtable_node_at(_nodes, _i);\
|
||||
if (_node->key)\
|
||||
{\
|
||||
pkey = _node->key;\
|
||||
pvalue = _node->value;\
|
||||
code;\
|
||||
}\
|
||||
}\
|
||||
}
|
||||
#define GIT_HASHTABLE__FOREACH(self,block) { \
|
||||
unsigned int _c; \
|
||||
git_hashtable_node *_n = (self)->nodes; \
|
||||
for (_c = (self)->size; _c > 0; _c--, _n++) { \
|
||||
if (!_n->key) continue; block } }
|
||||
|
||||
#define GIT_HASHTABLE_FOREACH(self, pkey, pvalue, code)\
|
||||
GIT_HASHTABLE__FOREACH(self,{(pkey)=_n->key;(pvalue)=_n->value;code;})
|
||||
|
||||
#define GIT_HASHTABLE_FOREACH_KEY(self, pkey, code)\
|
||||
GIT_HASHTABLE__FOREACH(self,{(pkey)=_n->key;code;})
|
||||
|
||||
#define GIT_HASHTABLE_FOREACH_VALUE(self, pvalue, code)\
|
||||
GIT_HASHTABLE__FOREACH(self,{(pvalue)=_n->value;code;})
|
||||
|
||||
#define GIT_HASHTABLE_FOREACH_DELETE() {\
|
||||
_node->key = NULL; _node->value = NULL; _self->key_count--;\
|
||||
|
@ -159,9 +159,9 @@ static int pack_entry_find_prefix(struct git_pack_entry *e,
|
||||
*
|
||||
***********************************************************/
|
||||
|
||||
GIT_INLINE(void) pack_window_free_all(struct pack_backend *GIT_UNUSED(backend), struct git_pack_file *p)
|
||||
GIT_INLINE(void) pack_window_free_all(struct pack_backend *backend, struct git_pack_file *p)
|
||||
{
|
||||
GIT_UNUSED_ARG(backend);
|
||||
GIT_UNUSED(backend);
|
||||
git_mwindow_free_all(&p->mwf);
|
||||
}
|
||||
|
||||
|
@ -41,11 +41,11 @@ static int flush_pkt(git_pkt **out)
|
||||
}
|
||||
|
||||
/* the rest of the line will be useful for multi_ack */
|
||||
static int ack_pkt(git_pkt **out, const char *GIT_UNUSED(line), size_t GIT_UNUSED(len))
|
||||
static int ack_pkt(git_pkt **out, const char *line, size_t len)
|
||||
{
|
||||
git_pkt *pkt;
|
||||
GIT_UNUSED_ARG(line);
|
||||
GIT_UNUSED_ARG(len);
|
||||
GIT_UNUSED(line);
|
||||
GIT_UNUSED(len);
|
||||
|
||||
pkt = git__malloc(sizeof(git_pkt));
|
||||
if (pkt == NULL)
|
||||
|
29
src/refs.c
29
src/refs.c
@ -105,7 +105,7 @@ static int reference_alloc(
|
||||
|
||||
reference->name = git__strdup(name);
|
||||
if (reference->name == NULL) {
|
||||
free(reference);
|
||||
git__free(reference);
|
||||
return GIT_ENOMEM;
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ static int loose_lookup(git_reference *ref)
|
||||
return GIT_SUCCESS;
|
||||
|
||||
if (ref->flags & GIT_REF_SYMBOLIC) {
|
||||
free(ref->target.symbolic);
|
||||
git__free(ref->target.symbolic);
|
||||
ref->target.symbolic = NULL;
|
||||
}
|
||||
|
||||
@ -278,7 +278,8 @@ static int loose_lookup_to_packfile(
|
||||
|
||||
cleanup:
|
||||
git_buf_free(&ref_file);
|
||||
free(ref);
|
||||
git__free(ref);
|
||||
|
||||
return git__rethrow(error, "Failed to lookup loose reference");
|
||||
}
|
||||
|
||||
@ -420,7 +421,7 @@ static int packed_parse_oid(
|
||||
return GIT_SUCCESS;
|
||||
|
||||
cleanup:
|
||||
free(ref);
|
||||
git__free(ref);
|
||||
return git__rethrow(error, "Failed to parse OID of packed reference");
|
||||
}
|
||||
|
||||
@ -495,7 +496,7 @@ static int packed_load(git_repository *repo)
|
||||
|
||||
error = git_hashtable_insert(ref_cache->packfile, ref->name, ref);
|
||||
if (error < GIT_SUCCESS) {
|
||||
free(ref);
|
||||
git__free(ref);
|
||||
goto cleanup;
|
||||
}
|
||||
}
|
||||
@ -560,12 +561,12 @@ static int _dirent_loose_load(void *data, git_buf *full_path)
|
||||
if (git_hashtable_insert2(
|
||||
repository->references.packfile,
|
||||
ref->name, ref, &old_ref) < GIT_SUCCESS) {
|
||||
free(ref);
|
||||
git__free(ref);
|
||||
return GIT_ENOMEM;
|
||||
}
|
||||
|
||||
if (old_ref != NULL)
|
||||
free(old_ref);
|
||||
git__free(old_ref);
|
||||
}
|
||||
|
||||
return error == GIT_SUCCESS ?
|
||||
@ -773,9 +774,8 @@ static int packed_write(git_repository *repo)
|
||||
/* Load all the packfile into a vector */
|
||||
{
|
||||
struct packref *reference;
|
||||
const void *GIT_UNUSED(_unused);
|
||||
|
||||
GIT_HASHTABLE_FOREACH(repo->references.packfile, _unused, reference,
|
||||
GIT_HASHTABLE_FOREACH_VALUE(repo->references.packfile, reference,
|
||||
/* cannot fail: vector already has the right size */
|
||||
git_vector_insert(&packing_list, reference);
|
||||
);
|
||||
@ -929,7 +929,7 @@ static int packed_lookup(git_reference *ref)
|
||||
return GIT_SUCCESS;
|
||||
|
||||
if (ref->flags & GIT_REF_SYMBOLIC) {
|
||||
free(ref->target.symbolic);
|
||||
git__free(ref->target.symbolic);
|
||||
ref->target.symbolic = NULL;
|
||||
}
|
||||
|
||||
@ -1513,12 +1513,11 @@ int git_reference_foreach(
|
||||
/* list all the packed references first */
|
||||
if (list_flags & GIT_REF_PACKED) {
|
||||
const char *ref_name;
|
||||
void *GIT_UNUSED(_unused);
|
||||
|
||||
if ((error = packed_load(repo)) < GIT_SUCCESS)
|
||||
return git__rethrow(error, "Failed to list references");
|
||||
|
||||
GIT_HASHTABLE_FOREACH(repo->references.packfile, ref_name, _unused,
|
||||
GIT_HASHTABLE_FOREACH_KEY(repo->references.packfile, ref_name,
|
||||
if ((error = callback(ref_name, payload)) < GIT_SUCCESS)
|
||||
return git__throw(error,
|
||||
"Failed to list references. User callback failed");
|
||||
@ -1595,12 +1594,10 @@ void git_repository__refcache_free(git_refcache *refs)
|
||||
assert(refs);
|
||||
|
||||
if (refs->packfile) {
|
||||
const void *GIT_UNUSED(_unused);
|
||||
struct packref *reference;
|
||||
|
||||
GIT_HASHTABLE_FOREACH(refs->packfile, _unused, reference,
|
||||
free(reference);
|
||||
);
|
||||
GIT_HASHTABLE_FOREACH_VALUE(
|
||||
refs->packfile, reference, git__free(reference));
|
||||
|
||||
git_hashtable_free(refs->packfile);
|
||||
}
|
||||
|
@ -431,13 +431,13 @@ struct cb_data {
|
||||
regex_t *preg;
|
||||
};
|
||||
|
||||
static int remote_list_cb(const char *name, const char *GIT_UNUSED(value), void *data_)
|
||||
static int remote_list_cb(const char *name, const char *value, void *data_)
|
||||
{
|
||||
struct cb_data *data = (struct cb_data *)data_;
|
||||
size_t nmatch = 2;
|
||||
regmatch_t pmatch[2];
|
||||
int error;
|
||||
GIT_UNUSED_ARG(value);
|
||||
GIT_UNUSED(value);
|
||||
|
||||
if (!regexec(data->preg, name, nmatch, pmatch, 0)) {
|
||||
char *remote_name = git__strndup(&name[pmatch[1].rm_so], pmatch[1].rm_eo - pmatch[1].rm_so);
|
||||
|
@ -590,7 +590,6 @@ int git_revwalk_new(git_revwalk **revwalk_out, git_repository *repo)
|
||||
void git_revwalk_free(git_revwalk *walk)
|
||||
{
|
||||
unsigned int i;
|
||||
const void *GIT_UNUSED(_unused);
|
||||
commit_object *commit;
|
||||
|
||||
if (walk == NULL)
|
||||
@ -602,7 +601,7 @@ void git_revwalk_free(git_revwalk *walk)
|
||||
/* if the parent has more than PARENTS_PER_COMMIT parents,
|
||||
* we had to allocate a separate array for those parents.
|
||||
* make sure it's being free'd */
|
||||
GIT_HASHTABLE_FOREACH(walk->commits, _unused, commit, {
|
||||
GIT_HASHTABLE_FOREACH_VALUE(walk->commits, commit, {
|
||||
if (commit->out_degree > PARENTS_PER_COMMIT)
|
||||
git__free(commit->parents);
|
||||
});
|
||||
@ -669,12 +668,11 @@ int git_revwalk_next(git_oid *oid, git_revwalk *walk)
|
||||
|
||||
void git_revwalk_reset(git_revwalk *walk)
|
||||
{
|
||||
const void *GIT_UNUSED(_unused);
|
||||
commit_object *commit;
|
||||
|
||||
assert(walk);
|
||||
|
||||
GIT_HASHTABLE_FOREACH(walk->commits, _unused, commit,
|
||||
GIT_HASHTABLE_FOREACH_VALUE(walk->commits, commit,
|
||||
commit->seen = 0;
|
||||
commit->in_degree = 0;
|
||||
commit->topo_delay = 0;
|
||||
|
@ -43,9 +43,9 @@ static git_transport_cb transport_find_fn(const char *url)
|
||||
* Public API *
|
||||
**************/
|
||||
|
||||
int git_transport_dummy(git_transport **GIT_UNUSED(transport))
|
||||
int git_transport_dummy(git_transport **transport)
|
||||
{
|
||||
GIT_UNUSED_ARG(transport);
|
||||
GIT_UNUSED(transport);
|
||||
return git__throw(GIT_ENOTIMPLEMENTED, "This protocol isn't implemented. Sorry");
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,7 @@ static int local_ls(git_transport *transport, git_headlist_cb list_cb, void *pay
|
||||
* Try to open the url as a git directory. The direction doesn't
|
||||
* matter in this case because we're calulating the heads ourselves.
|
||||
*/
|
||||
static int local_connect(git_transport *transport, int GIT_UNUSED(direction))
|
||||
static int local_connect(git_transport *transport, int direction)
|
||||
{
|
||||
git_repository *repo;
|
||||
int error;
|
||||
@ -162,7 +162,7 @@ static int local_connect(git_transport *transport, int GIT_UNUSED(direction))
|
||||
const char *path;
|
||||
git_buf buf = GIT_BUF_INIT;
|
||||
|
||||
GIT_UNUSED_ARG(direction);
|
||||
GIT_UNUSED(direction);
|
||||
|
||||
/* The repo layer doesn't want the prefix */
|
||||
if (!git__prefixcmp(transport->url, "file://")) {
|
||||
@ -194,7 +194,7 @@ static int local_connect(git_transport *transport, int GIT_UNUSED(direction))
|
||||
return GIT_SUCCESS;
|
||||
}
|
||||
|
||||
static int local_close(git_transport *GIT_UNUSED(transport))
|
||||
static int local_close(git_transport *transport)
|
||||
{
|
||||
transport_local *t = (transport_local *)transport;
|
||||
|
||||
|
@ -11,20 +11,20 @@
|
||||
#include "fnmatch.h"
|
||||
#include "utf-conv.h"
|
||||
|
||||
GIT_INLINE(int) p_link(const char *GIT_UNUSED(old), const char *GIT_UNUSED(new))
|
||||
GIT_INLINE(int) p_link(const char *old, const char *new)
|
||||
{
|
||||
GIT_UNUSED_ARG(old);
|
||||
GIT_UNUSED_ARG(new);
|
||||
GIT_UNUSED(old);
|
||||
GIT_UNUSED(new);
|
||||
errno = ENOSYS;
|
||||
return -1;
|
||||
}
|
||||
|
||||
GIT_INLINE(int) p_mkdir(const char *path, mode_t GIT_UNUSED(mode))
|
||||
GIT_INLINE(int) p_mkdir(const char *path, mode_t mode)
|
||||
{
|
||||
wchar_t* buf = gitwin_to_utf16(path);
|
||||
int ret = _wmkdir(buf);
|
||||
|
||||
GIT_UNUSED_ARG(mode);
|
||||
GIT_UNUSED(mode);
|
||||
|
||||
git__free(buf);
|
||||
return ret;
|
||||
|
@ -8,10 +8,10 @@
|
||||
#include "pthread.h"
|
||||
|
||||
int pthread_create(pthread_t *GIT_RESTRICT thread,
|
||||
const pthread_attr_t *GIT_RESTRICT GIT_UNUSED(attr),
|
||||
const pthread_attr_t *GIT_RESTRICT attr,
|
||||
void *(*start_routine)(void*), void *GIT_RESTRICT arg)
|
||||
{
|
||||
GIT_UNUSED_ARG(attr);
|
||||
GIT_UNUSED(attr);
|
||||
*thread = (pthread_t) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, arg, 0, NULL);
|
||||
return *thread ? GIT_SUCCESS : git__throw(GIT_EOSERR, "Failed to create pthread");
|
||||
}
|
||||
@ -26,9 +26,9 @@ int pthread_join(pthread_t thread, void **value_ptr)
|
||||
}
|
||||
|
||||
int pthread_mutex_init(pthread_mutex_t *GIT_RESTRICT mutex,
|
||||
const pthread_mutexattr_t *GIT_RESTRICT GIT_UNUSED(mutexattr))
|
||||
const pthread_mutexattr_t *GIT_RESTRICT mutexattr)
|
||||
{
|
||||
GIT_UNUSED_ARG(mutexattr);
|
||||
GIT_UNUSED(mutexattr);
|
||||
InitializeCriticalSection(mutex);
|
||||
return 0;
|
||||
}
|
||||
|
@ -104,12 +104,12 @@ void test_attr_repo__get_many(void)
|
||||
}
|
||||
|
||||
static int count_attrs(
|
||||
const char *GIT_UNUSED(name),
|
||||
const char *GIT_UNUSED(value),
|
||||
const char *name,
|
||||
const char *value,
|
||||
void *payload)
|
||||
{
|
||||
GIT_UNUSED_ARG(name);
|
||||
GIT_UNUSED_ARG(value);
|
||||
GIT_UNUSED(name);
|
||||
GIT_UNUSED(value);
|
||||
|
||||
*((int *)payload) += 1;
|
||||
|
||||
|
@ -39,3 +39,52 @@ void cl_git_append2file(const char *filename, const char *new_content)
|
||||
cl_must_pass(p_chmod(filename, 0644));
|
||||
}
|
||||
|
||||
static const char *_cl_sandbox = NULL;
|
||||
static git_repository *_cl_repo = NULL;
|
||||
|
||||
git_repository *cl_git_sandbox_init(const char *sandbox)
|
||||
{
|
||||
/* Copy the whole sandbox folder from our fixtures to our test sandbox
|
||||
* area. After this it can be accessed with `./sandbox`
|
||||
*/
|
||||
cl_fixture_sandbox(sandbox);
|
||||
_cl_sandbox = sandbox;
|
||||
|
||||
p_chdir(sandbox);
|
||||
|
||||
/* Rename `sandbox/.gitted` to `sandbox/.git` which must be done since
|
||||
* we cannot store a folder named `.git` inside the fixtures folder of
|
||||
* our libgit2 repo.
|
||||
*/
|
||||
cl_git_pass(p_rename(".gitted", ".git"));
|
||||
|
||||
/* If we have `gitattributes`, rename to `.gitattributes`. This may
|
||||
* be necessary if we don't want the attributes to be applied in the
|
||||
* libgit2 repo, but just during testing.
|
||||
*/
|
||||
if (p_access("gitattributes", F_OK) == 0)
|
||||
cl_git_pass(p_rename("gitattributes", ".gitattributes"));
|
||||
|
||||
/* As with `gitattributes`, we may need `gitignore` just for testing. */
|
||||
if (p_access("gitignore", F_OK) == 0)
|
||||
cl_git_pass(p_rename("gitignore", ".gitignore"));
|
||||
|
||||
p_chdir("..");
|
||||
|
||||
/* Now open the sandbox repository and make it available for tests */
|
||||
cl_git_pass(git_repository_open(&_cl_repo, sandbox));
|
||||
|
||||
return _cl_repo;
|
||||
}
|
||||
|
||||
void cl_git_sandbox_cleanup(void)
|
||||
{
|
||||
if (_cl_repo) {
|
||||
git_repository_free(_cl_repo);
|
||||
_cl_repo = NULL;
|
||||
}
|
||||
if (_cl_sandbox) {
|
||||
cl_fixture_cleanup(_cl_sandbox);
|
||||
_cl_sandbox = NULL;
|
||||
}
|
||||
}
|
||||
|
@ -58,4 +58,9 @@ GIT_INLINE(void) cl_assert_strequal_internal(
|
||||
void cl_git_mkfile(const char *filename, const char *content);
|
||||
void cl_git_append2file(const char *filename, const char *new_content);
|
||||
|
||||
/* Git sandbox setup helpers */
|
||||
|
||||
git_repository *cl_git_sandbox_init(const char *sandbox);
|
||||
void cl_git_sandbox_cleanup(void);
|
||||
|
||||
#endif
|
||||
|
@ -12,10 +12,12 @@ void test_config_multivar__cleanup(void)
|
||||
cl_fixture_cleanup("config");
|
||||
}
|
||||
|
||||
static int mv_read_cb(const char *name, const char *GIT_UNUSED(value), void *data)
|
||||
static int mv_read_cb(const char *name, const char *value, void *data)
|
||||
{
|
||||
int *n = (int *) data;
|
||||
|
||||
GIT_UNUSED(value);
|
||||
|
||||
if (!strcmp(name, _name))
|
||||
(*n)++;
|
||||
|
||||
@ -35,10 +37,12 @@ void test_config_multivar__foreach(void)
|
||||
git_config_free(cfg);
|
||||
}
|
||||
|
||||
static int cb(const char *GIT_UNUSED(val), void *data)
|
||||
static int cb(const char *val, void *data)
|
||||
{
|
||||
int *n = (int *) data;
|
||||
|
||||
GIT_UNUSED(val);
|
||||
|
||||
(*n)++;
|
||||
|
||||
return GIT_SUCCESS;
|
||||
|
@ -88,10 +88,10 @@ static int one_entry(void *state, git_buf *path)
|
||||
return GIT_ERROR;
|
||||
}
|
||||
|
||||
static int dont_call_me(void *GIT_UNUSED(state), git_buf *GIT_UNUSED(path))
|
||||
static int dont_call_me(void *state, git_buf *path)
|
||||
{
|
||||
GIT_UNUSED_ARG(state);
|
||||
GIT_UNUSED_ARG(path);
|
||||
GIT_UNUSED(state);
|
||||
GIT_UNUSED(path);
|
||||
return GIT_ERROR;
|
||||
}
|
||||
|
||||
|
@ -5,17 +5,12 @@ static git_repository *g_repo = NULL;
|
||||
|
||||
void test_diff_blob__initialize(void)
|
||||
{
|
||||
cl_fixture_sandbox("attr");
|
||||
cl_git_pass(p_rename("attr/.gitted", "attr/.git"));
|
||||
cl_git_pass(p_rename("attr/gitattributes", "attr/.gitattributes"));
|
||||
cl_git_pass(git_repository_open(&g_repo, "attr/.git"));
|
||||
g_repo = cl_git_sandbox_init("attr");
|
||||
}
|
||||
|
||||
void test_diff_blob__cleanup(void)
|
||||
{
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
cl_fixture_cleanup("attr");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_diff_blob__0(void)
|
||||
|
@ -5,16 +5,12 @@ static git_repository *g_repo = NULL;
|
||||
|
||||
void test_diff_index__initialize(void)
|
||||
{
|
||||
cl_fixture_sandbox("status");
|
||||
cl_git_pass(p_rename("status/.gitted", "status/.git"));
|
||||
cl_git_pass(git_repository_open(&g_repo, "status/.git"));
|
||||
g_repo = cl_git_sandbox_init("status");
|
||||
}
|
||||
|
||||
void test_diff_index__cleanup(void)
|
||||
{
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
cl_fixture_cleanup("status");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_diff_index__0(void)
|
||||
|
@ -2,37 +2,6 @@
|
||||
#include "diff_helpers.h"
|
||||
#include "iterator.h"
|
||||
|
||||
static git_repository *g_repo = NULL;
|
||||
static const char *g_sandbox = NULL;
|
||||
|
||||
static void setup_sandbox(const char *sandbox)
|
||||
{
|
||||
cl_fixture_sandbox(sandbox);
|
||||
g_sandbox = sandbox;
|
||||
|
||||
p_chdir(sandbox);
|
||||
cl_git_pass(p_rename(".gitted", ".git"));
|
||||
if (p_access("gitattributes", F_OK) == 0)
|
||||
cl_git_pass(p_rename("gitattributes", ".gitattributes"));
|
||||
if (p_access("gitignore", F_OK) == 0)
|
||||
cl_git_pass(p_rename("gitignore", ".gitignore"));
|
||||
p_chdir("..");
|
||||
|
||||
cl_git_pass(git_repository_open(&g_repo, sandbox));
|
||||
}
|
||||
|
||||
static void cleanup_sandbox(void)
|
||||
{
|
||||
if (g_repo) {
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
}
|
||||
if (g_sandbox) {
|
||||
cl_fixture_cleanup(g_sandbox);
|
||||
g_sandbox = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void test_diff_iterator__initialize(void)
|
||||
{
|
||||
/* since we are doing tests with different sandboxes, defer setup
|
||||
@ -44,7 +13,7 @@ void test_diff_iterator__initialize(void)
|
||||
|
||||
void test_diff_iterator__cleanup(void)
|
||||
{
|
||||
cleanup_sandbox();
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
|
||||
@ -60,11 +29,10 @@ static void tree_iterator_test(
|
||||
git_iterator *i;
|
||||
const git_index_entry *entry;
|
||||
int count = 0;
|
||||
git_repository *repo = cl_git_sandbox_init(sandbox);
|
||||
|
||||
setup_sandbox(sandbox);
|
||||
|
||||
cl_assert(t = resolve_commit_oid_to_tree(g_repo, treeish));
|
||||
cl_git_pass(git_iterator_for_tree(g_repo, t, &i));
|
||||
cl_assert(t = resolve_commit_oid_to_tree(repo, treeish));
|
||||
cl_git_pass(git_iterator_for_tree(repo, t, &i));
|
||||
cl_git_pass(git_iterator_current(i, &entry));
|
||||
|
||||
while (entry != NULL) {
|
||||
@ -183,10 +151,9 @@ static void index_iterator_test(
|
||||
git_iterator *i;
|
||||
const git_index_entry *entry;
|
||||
int count = 0;
|
||||
git_repository *repo = cl_git_sandbox_init(sandbox);
|
||||
|
||||
setup_sandbox(sandbox);
|
||||
|
||||
cl_git_pass(git_iterator_for_index(g_repo, &i));
|
||||
cl_git_pass(git_iterator_for_index(repo, &i));
|
||||
cl_git_pass(git_iterator_current(i, &entry));
|
||||
|
||||
while (entry != NULL) {
|
||||
@ -303,10 +270,9 @@ static void workdir_iterator_test(
|
||||
git_iterator *i;
|
||||
const git_index_entry *entry;
|
||||
int count = 0, count_all = 0;
|
||||
git_repository *repo = cl_git_sandbox_init(sandbox);
|
||||
|
||||
setup_sandbox(sandbox);
|
||||
|
||||
cl_git_pass(git_iterator_for_workdir(g_repo, &i));
|
||||
cl_git_pass(git_iterator_for_workdir(repo, &i));
|
||||
cl_git_pass(git_iterator_current(i, &entry));
|
||||
|
||||
while (entry != NULL) {
|
||||
|
@ -5,17 +5,12 @@ static git_repository *g_repo = NULL;
|
||||
|
||||
void test_diff_tree__initialize(void)
|
||||
{
|
||||
cl_fixture_sandbox("attr");
|
||||
cl_git_pass(p_rename("attr/.gitted", "attr/.git"));
|
||||
cl_git_pass(p_rename("attr/gitattributes", "attr/.gitattributes"));
|
||||
cl_git_pass(git_repository_open(&g_repo, "attr/.git"));
|
||||
g_repo = cl_git_sandbox_init("attr");
|
||||
}
|
||||
|
||||
void test_diff_tree__cleanup(void)
|
||||
{
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
cl_fixture_cleanup("attr");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_diff_tree__0(void)
|
||||
|
@ -5,16 +5,12 @@ static git_repository *g_repo = NULL;
|
||||
|
||||
void test_diff_workdir__initialize(void)
|
||||
{
|
||||
cl_fixture_sandbox("status");
|
||||
cl_git_pass(p_rename("status/.gitted", "status/.git"));
|
||||
cl_git_pass(git_repository_open(&g_repo, "status/.git"));
|
||||
g_repo = cl_git_sandbox_init("status");
|
||||
}
|
||||
|
||||
void test_diff_workdir__cleanup(void)
|
||||
{
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
cl_fixture_cleanup("status");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_diff_workdir__to_index(void)
|
||||
|
@ -7,21 +7,12 @@ static git_repository *g_repo = NULL;
|
||||
|
||||
void test_status_ignore__initialize(void)
|
||||
{
|
||||
/* Before each test, instantiate the attr repo from the fixtures and
|
||||
* rename the .gitted to .git so it is a repo with a working dir. Also
|
||||
* rename gitignore to .gitignore.
|
||||
*/
|
||||
cl_fixture_sandbox("attr");
|
||||
cl_git_pass(p_rename("attr/.gitted", "attr/.git"));
|
||||
cl_git_pass(p_rename("attr/gitignore", "attr/.gitignore"));
|
||||
cl_git_pass(git_repository_open(&g_repo, "attr/.git"));
|
||||
g_repo = cl_git_sandbox_init("attr");
|
||||
}
|
||||
|
||||
void test_status_ignore__cleanup(void)
|
||||
{
|
||||
git_repository_free(g_repo);
|
||||
g_repo = NULL;
|
||||
cl_fixture_cleanup("attr");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
void test_status_ignore__0(void)
|
||||
|
@ -4,12 +4,6 @@
|
||||
#include "status_data.h"
|
||||
|
||||
|
||||
/**
|
||||
* Test fixtures
|
||||
*/
|
||||
static git_repository *_repository = NULL;
|
||||
|
||||
|
||||
/**
|
||||
* Auxiliary methods
|
||||
*/
|
||||
@ -37,48 +31,27 @@ exit:
|
||||
}
|
||||
|
||||
static int
|
||||
cb_status__count(const char *GIT_UNUSED(p), unsigned int GIT_UNUSED(s), void *payload)
|
||||
cb_status__count(const char *p, unsigned int s, void *payload)
|
||||
{
|
||||
volatile int *count = (int *)payload;
|
||||
|
||||
GIT_UNUSED_ARG(p);
|
||||
GIT_UNUSED_ARG(s);
|
||||
GIT_UNUSED(p);
|
||||
GIT_UNUSED(s);
|
||||
|
||||
*count++;
|
||||
(*count)++;
|
||||
|
||||
return GIT_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Initializer
|
||||
*
|
||||
* This method is called once before starting each
|
||||
* test, and will load the required fixtures
|
||||
* Not all of the tests in this file use the same fixtures, so we allow each
|
||||
* test to load their fixture at the top of the test function.
|
||||
*/
|
||||
void test_status_worktree__initialize(void)
|
||||
{
|
||||
/*
|
||||
* Sandbox the `status/` repository from our Fixtures.
|
||||
* This will copy the whole folder to our sandbox,
|
||||
* so now it can be accessed with `./status`
|
||||
*/
|
||||
cl_fixture_sandbox("status");
|
||||
|
||||
/*
|
||||
* Rename `status/.gitted` to `status/.git`
|
||||
* We do this because we cannot store a folder named `.git`
|
||||
* inside the fixtures folder in our libgit2 repo.
|
||||
*/
|
||||
cl_git_pass(
|
||||
p_rename("status/.gitted", "status/.git")
|
||||
);
|
||||
|
||||
/*
|
||||
* Open the sandboxed "status" repository
|
||||
*/
|
||||
cl_git_pass(git_repository_open(&_repository, "status/.git"));
|
||||
}
|
||||
|
||||
/**
|
||||
@ -89,10 +62,7 @@ void test_status_worktree__initialize(void)
|
||||
*/
|
||||
void test_status_worktree__cleanup(void)
|
||||
{
|
||||
git_repository_free(_repository);
|
||||
_repository = NULL;
|
||||
|
||||
cl_fixture_cleanup("status");
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -101,6 +71,7 @@ void test_status_worktree__cleanup(void)
|
||||
void test_status_worktree__whole_repository(void)
|
||||
{
|
||||
struct status_entry_counts counts;
|
||||
git_repository *repo = cl_git_sandbox_init("status");
|
||||
|
||||
memset(&counts, 0x0, sizeof(struct status_entry_counts));
|
||||
counts.expected_entry_count = entry_count0;
|
||||
@ -108,7 +79,7 @@ void test_status_worktree__whole_repository(void)
|
||||
counts.expected_statuses = entry_statuses0;
|
||||
|
||||
cl_git_pass(
|
||||
git_status_foreach(_repository, cb_status__normal, &counts)
|
||||
git_status_foreach(repo, cb_status__normal, &counts)
|
||||
);
|
||||
|
||||
cl_assert(counts.entry_count == counts.expected_entry_count);
|
||||
@ -119,8 +90,10 @@ void test_status_worktree__whole_repository(void)
|
||||
void test_status_worktree__empty_repository(void)
|
||||
{
|
||||
int count = 0;
|
||||
git_repository *repo = cl_git_sandbox_init("empty_standard_repo");
|
||||
|
||||
cl_git_pass(git_status_foreach(repo, cb_status__count, &count));
|
||||
|
||||
git_status_foreach(_repository, cb_status__count, &count);
|
||||
cl_assert(count == 0);
|
||||
}
|
||||
|
||||
@ -128,10 +101,11 @@ void test_status_worktree__single_file(void)
|
||||
{
|
||||
int i;
|
||||
unsigned int status_flags;
|
||||
git_repository *repo = cl_git_sandbox_init("status");
|
||||
|
||||
for (i = 0; i < (int)entry_count0; i++) {
|
||||
cl_git_pass(
|
||||
git_status_file(&status_flags, _repository, entry_paths0[i])
|
||||
git_status_file(&status_flags, repo, entry_paths0[i])
|
||||
);
|
||||
cl_assert(entry_statuses0[i] == status_flags);
|
||||
}
|
||||
@ -140,15 +114,22 @@ void test_status_worktree__single_file(void)
|
||||
void test_status_worktree__ignores(void)
|
||||
{
|
||||
int i, ignored;
|
||||
git_repository *repo = cl_git_sandbox_init("status");
|
||||
|
||||
for (i = 0; i < (int)entry_count0; i++) {
|
||||
cl_git_pass(git_status_should_ignore(_repository, entry_paths0[i], &ignored));
|
||||
cl_git_pass(
|
||||
git_status_should_ignore(repo, entry_paths0[i], &ignored)
|
||||
);
|
||||
cl_assert(ignored == (entry_statuses0[i] == GIT_STATUS_WT_IGNORED));
|
||||
}
|
||||
|
||||
cl_git_pass(git_status_should_ignore(_repository, "nonexistent_file", &ignored));
|
||||
cl_git_pass(
|
||||
git_status_should_ignore(repo, "nonexistent_file", &ignored)
|
||||
);
|
||||
cl_assert(!ignored);
|
||||
|
||||
cl_git_pass(git_status_should_ignore(_repository, "ignored_nonexistent_file", &ignored));
|
||||
cl_git_pass(
|
||||
git_status_should_ignore(repo, "ignored_nonexistent_file", &ignored)
|
||||
);
|
||||
cl_assert(ignored);
|
||||
}
|
||||
|
@ -424,10 +424,10 @@ static walk_data empty = {
|
||||
GIT_BUF_INIT
|
||||
};
|
||||
|
||||
static int dont_call_me(void *GIT_UNUSED(state), git_buf *GIT_UNUSED(path))
|
||||
static int dont_call_me(void *state, git_buf *path)
|
||||
{
|
||||
GIT_UNUSED_ARG(state);
|
||||
GIT_UNUSED_ARG(path);
|
||||
GIT_UNUSED(state);
|
||||
GIT_UNUSED(path);
|
||||
return GIT_ERROR;
|
||||
}
|
||||
|
||||
|
@ -154,7 +154,6 @@ BEGIN_TEST(tableit0, "iterate through all the contents of the table")
|
||||
const int objects_n = 32;
|
||||
int i;
|
||||
table_item *objects, *ob;
|
||||
const void *GIT_UNUSED(_unused);
|
||||
|
||||
git_hashtable *table = NULL;
|
||||
|
||||
@ -170,9 +169,7 @@ BEGIN_TEST(tableit0, "iterate through all the contents of the table")
|
||||
must_pass(git_hashtable_insert(table, &(objects[i].id), &(objects[i])));
|
||||
}
|
||||
|
||||
GIT_HASHTABLE_FOREACH(table, _unused, ob,
|
||||
ob->visited = 1;
|
||||
);
|
||||
GIT_HASHTABLE_FOREACH_VALUE(table, ob, ob->visited = 1);
|
||||
|
||||
/* make sure all nodes have been visited */
|
||||
for (i = 0; i < objects_n; ++i)
|
||||
|
@ -156,14 +156,14 @@ BEGIN_TEST(statuscb0, "test retrieving status for worktree of repository")
|
||||
git_futils_rmdir_r(TEMP_REPO_FOLDER, 1);
|
||||
END_TEST
|
||||
|
||||
static int status_cb1(const char *GIT_UNUSED(path), unsigned int GIT_UNUSED(status_flags), void *payload)
|
||||
static int status_cb1(const char *path, unsigned int status_flags, void *payload)
|
||||
{
|
||||
int *count = (int *)payload;;
|
||||
|
||||
GIT_UNUSED_ARG(path);
|
||||
GIT_UNUSED_ARG(status_flags);
|
||||
GIT_UNUSED(path);
|
||||
GIT_UNUSED(status_flags);
|
||||
|
||||
(void) *count++;
|
||||
(*count)++;
|
||||
|
||||
return GIT_SUCCESS;
|
||||
}
|
||||
|
@ -70,12 +70,12 @@ int __cdecl
|
||||
#else
|
||||
int
|
||||
#endif
|
||||
main(int GIT_UNUSED(argc), char *GIT_UNUSED(argv[]))
|
||||
main(int argc, char *argv[])
|
||||
{
|
||||
unsigned int i, failures;
|
||||
|
||||
GIT_UNUSED_ARG(argc);
|
||||
GIT_UNUSED_ARG(argv);
|
||||
GIT_UNUSED(argc);
|
||||
GIT_UNUSED(argv);
|
||||
|
||||
git_threads_init();
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user