mirror of
https://github.com/torvalds/linux.git
synced 2024-12-05 10:32:35 +00:00
selftests/nolibc: add EXPECT_PTREQ, EXPECT_PTRNE and EXPECT_PTRER
The syscalls like sbrk() and mmap() return pointers, to test them, more pointer compare test macros are required, add them: - EXPECT_PTREQ() expects two equal pointers. - EXPECT_PTRNE() expects two non-equal pointers. - EXPECT_PTRER() expects failure with a specified errno. - EXPECT_PTRER2() expects failure with one of two specified errnos. Signed-off-by: Zhangjin Wu <falcon@tinylab.org> Signed-off-by: Willy Tarreau <w@1wt.eu>
This commit is contained in:
parent
82e339c230
commit
29f5540be3
@ -364,6 +364,64 @@ static int expect_ptrnz(const void *expr, int llen)
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define EXPECT_PTREQ(cond, expr, cmp) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_ptreq(expr, llen, cmp); } while (0)
|
||||
|
||||
static int expect_ptreq(const void *expr, int llen, const void *cmp)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
llen += printf(" = <%p> ", expr);
|
||||
if (expr != cmp) {
|
||||
ret = 1;
|
||||
llen += pad_spc(llen, 64, "[FAIL]\n");
|
||||
} else {
|
||||
llen += pad_spc(llen, 64, " [OK]\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define EXPECT_PTRNE(cond, expr, cmp) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_ptrne(expr, llen, cmp); } while (0)
|
||||
|
||||
static int expect_ptrne(const void *expr, int llen, const void *cmp)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
llen += printf(" = <%p> ", expr);
|
||||
if (expr == cmp) {
|
||||
ret = 1;
|
||||
llen += pad_spc(llen, 64, "[FAIL]\n");
|
||||
} else {
|
||||
llen += pad_spc(llen, 64, " [OK]\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define EXPECT_PTRER2(cond, expr, expret, experr1, experr2) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_ptrerr2(expr, expret, experr1, experr2, llen); } while (0)
|
||||
|
||||
#define EXPECT_PTRER(cond, expr, expret, experr) \
|
||||
EXPECT_PTRER2(cond, expr, expret, experr, 0)
|
||||
|
||||
static int expect_ptrerr2(const void *expr, const void *expret, int experr1, int experr2, int llen)
|
||||
{
|
||||
int ret = 0;
|
||||
int _errno = errno;
|
||||
|
||||
llen += printf(" = <%p> %s ", expr, errorname(_errno));
|
||||
if (expr != expret || (_errno != experr1 && _errno != experr2)) {
|
||||
ret = 1;
|
||||
if (experr2 == 0)
|
||||
llen += printf(" != (<%p> %s) ", expret, errorname(experr1));
|
||||
else
|
||||
llen += printf(" != (<%p> %s %s) ", expret, errorname(experr1), errorname(experr2));
|
||||
llen += pad_spc(llen, 64, "[FAIL]\n");
|
||||
} else {
|
||||
llen += pad_spc(llen, 64, " [OK]\n");
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define EXPECT_STRZR(cond, expr) \
|
||||
do { if (!cond) pad_spc(llen, 64, "[SKIPPED]\n"); else ret += expect_strzr(expr, llen); } while (0)
|
||||
|
Loading…
Reference in New Issue
Block a user