Thread (7 messages) 7 messages, 2 authors, 2021-07-07

Re: [PATCH v5 bpf-next 2/3] selftests/bpf: add ASSERT_STRNEQ() variant for test_progs

From: Andrii Nakryiko <hidden>
Date: 2021-07-07 03:33:06
Also in: bpf, linux-kselftest, lkml

On Sat, Jun 19, 2021 at 1:56 AM Alan Maguire [off-list ref] wrote:
quoted hunk ↗ jump to hunk
It will support strncmp()-style string comparisons.

Suggested-by: Andrii Nakryiko <redacted>
Signed-off-by: Alan Maguire <redacted>
---
 tools/testing/selftests/bpf/test_progs.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)
diff --git a/tools/testing/selftests/bpf/test_progs.h b/tools/testing/selftests/bpf/test_progs.h
index 8ef7f33..d2944da 100644
--- a/tools/testing/selftests/bpf/test_progs.h
+++ b/tools/testing/selftests/bpf/test_progs.h
@@ -221,6 +221,18 @@ struct test_env {
        ___ok;                                                          \
 })

+#define ASSERT_STRNEQ(actual, expected, len, name) ({                  \
+       static int duration = 0;                                        \
+       const char *___act = actual;                                    \
+       const char *___exp = expected;                                  \
+       size_t ___len = len;                                            \
+       bool ___ok = strncmp(___act, ___exp, ___len) == 0;              \
+       CHECK(!___ok, (name),                                           \
+             "unexpected %s: actual '%s' != expected '%s'\n",          \
+             (name), ___act, ___exp);                                  \
it would be nice to only emit what we are actually comparing - first n
characters of each string. Luckily, printf is cool enough to support
this:

printf("actual '%.*s' != expected '%.*s'\n", ___len, ___act, ___len, ___exp);
+       ___ok;                                                          \
+})
+
 #define ASSERT_OK(res, name) ({                                                \
        static int duration = 0;                                        \
        long long ___res = (res);                                       \
--
1.8.3.1
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help