Hi René, René Scharfe <l.s.r@xxxxxx> wrote: > The test_msg() calls only repeat information already present in test > descriptions and check definitions, which are shown automatically if > the checks fail. Remove the redundant messages to simplify the tests > and their output. Here it is with all of them failing before: > > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:18 > # when adding a brand-new object, NULL should be returned > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:21 > # when adding a brand-new object, NULL should be returned > not ok 1 - Add 2 objects, one with a non-NULL decoration and one with a > NULL decoration. > # check "ret == &vars->decoration_a" failed at > t/unit-tests/t-example-decorate.c:29 > # when readding an already existing object, existing decoration should > be returned > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:32 > # when readding an already existing object, existing decoration should > be returned > not ok 2 - When re-adding an already existing object, the old decoration > is returned. > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:40 > # lookup should return added declaration > # check "ret == &vars->decoration_b" failed at > t/unit-tests/t-example-decorate.c:43 > # lookup should return added declaration > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:46 > # lookup for unknown object should return NULL > not ok 3 - Lookup returns the added declarations, or NULL if the object > was never added. > # check "objects_noticed == 2" failed at > t/unit-tests/t-example-decorate.c:58 > # left: 1 > # right: 2 > # should have 2 objects > not ok 4 - The user can also loop through all entries. > 1..4 > > ... and here with the patch applied: > > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:18 > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:20 > not ok 1 - Add 2 objects, one with a non-NULL decoration and one with a > NULL decoration. > # check "ret == &vars->decoration_a" failed at > t/unit-tests/t-example-decorate.c:27 > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:29 > not ok 2 - When re-adding an already existing object, the old decoration > is returned. > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:36 > # check "ret == &vars->decoration_b" failed at > t/unit-tests/t-example-decorate.c:38 > # check "ret == NULL" failed at t/unit-tests/t-example-decorate.c:40 > not ok 3 - Lookup returns the added declarations, or NULL if the object > was never added. > # check "objects_noticed == 2" failed at > t/unit-tests/t-example-decorate.c:51 > # left: 1 > # right: 2 > not ok 4 - The user can also loop through all entries. > 1..4 > > Signed-off-by: René Scharfe <l.s.r@xxxxxx> > --- > t/unit-tests/t-example-decorate.c | 24 ++++++++---------------- > 1 file changed, 8 insertions(+), 16 deletions(-) > > diff --git a/t/unit-tests/t-example-decorate.c > b/t/unit-tests/t-example-decorate.c > index a4a75db735..8bf0709c41 100644 > --- a/t/unit-tests/t-example-decorate.c > +++ b/t/unit-tests/t-example-decorate.c > @@ -15,36 +15,29 @@ static void t_add(struct test_vars *vars) > { > void *ret = add_decoration(&vars->n, vars->one, &vars->decoration_a); > > - if (!check(ret == NULL)) > - test_msg("when adding a brand-new object, NULL should be returned"); > + check(ret == NULL); > ret = add_decoration(&vars->n, vars->two, NULL); > - if (!check(ret == NULL)) > - test_msg("when adding a brand-new object, NULL should be returned"); > + check(ret == NULL); If we want to further simplify, I don't see any need for having 'ret' either and to just call the methods in check(): check(add_decoration(&vars->n, vars->two, NULL), ==, NULL); which would also provide more context in the stdout rather than printing 'check(ret == NULL)'. But, I believe you would have already considered that but kept 'ret' in favor of code readability, so I am also fine with it. Thanks for patch.