033abf97fc
Ind8193743e0
(usage.c: add BUG() function, 2017-05-12), a new macro was introduced to use for reporting bugs instead of die(). It was then subsequently used to convert one single caller in588a538ae5
(setup_git_env: convert die("BUG") to BUG(), 2017-05-12). The cover letter of the patch series containing this patch (cf 20170513032414.mfrwabt4hovujde2@sigill.intra.peff.net) is not terribly clear why only one call site was converted, or what the plan is for other, similar calls to die() to report bugs. Let's just convert all remaining ones in one fell swoop. This trick was performed by this invocation: sed -i 's/die("BUG: /BUG("/g' $(git grep -l 'die("BUG' \*.c) Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
76 lines
1.9 KiB
C
76 lines
1.9 KiB
C
#include "test-tool.h"
|
|
#include "cache.h"
|
|
#include "object.h"
|
|
#include "decorate.h"
|
|
|
|
int cmd__example_decorate(int argc, const char **argv)
|
|
{
|
|
struct decoration n;
|
|
struct object_id one_oid = { {1} };
|
|
struct object_id two_oid = { {2} };
|
|
struct object_id three_oid = { {3} };
|
|
struct object *one, *two, *three;
|
|
|
|
int decoration_a, decoration_b;
|
|
|
|
void *ret;
|
|
|
|
int i, objects_noticed = 0;
|
|
|
|
/*
|
|
* The struct must be zero-initialized.
|
|
*/
|
|
memset(&n, 0, sizeof(n));
|
|
|
|
/*
|
|
* Add 2 objects, one with a non-NULL decoration and one with a NULL
|
|
* decoration.
|
|
*/
|
|
one = lookup_unknown_object(one_oid.hash);
|
|
two = lookup_unknown_object(two_oid.hash);
|
|
ret = add_decoration(&n, one, &decoration_a);
|
|
if (ret)
|
|
BUG("when adding a brand-new object, NULL should be returned");
|
|
ret = add_decoration(&n, two, NULL);
|
|
if (ret)
|
|
BUG("when adding a brand-new object, NULL should be returned");
|
|
|
|
/*
|
|
* When re-adding an already existing object, the old decoration is
|
|
* returned.
|
|
*/
|
|
ret = add_decoration(&n, one, NULL);
|
|
if (ret != &decoration_a)
|
|
BUG("when readding an already existing object, existing decoration should be returned");
|
|
ret = add_decoration(&n, two, &decoration_b);
|
|
if (ret)
|
|
BUG("when readding an already existing object, existing decoration should be returned");
|
|
|
|
/*
|
|
* Lookup returns the added declarations, or NULL if the object was
|
|
* never added.
|
|
*/
|
|
ret = lookup_decoration(&n, one);
|
|
if (ret)
|
|
BUG("lookup should return added declaration");
|
|
ret = lookup_decoration(&n, two);
|
|
if (ret != &decoration_b)
|
|
BUG("lookup should return added declaration");
|
|
three = lookup_unknown_object(three_oid.hash);
|
|
ret = lookup_decoration(&n, three);
|
|
if (ret)
|
|
BUG("lookup for unknown object should return NULL");
|
|
|
|
/*
|
|
* The user can also loop through all entries.
|
|
*/
|
|
for (i = 0; i < n.size; i++) {
|
|
if (n.entries[i].base)
|
|
objects_noticed++;
|
|
}
|
|
if (objects_noticed != 2)
|
|
BUG("should have 2 objects");
|
|
|
|
return 0;
|
|
}
|