On Mon, Feb 7, 2022 at 1:11 PM Ricardo Ribalda ribalda@chromium.org wrote:
Today, when we want to check if a pointer is NULL and not ERR we have two options:
KUNIT_EXPECT_TRUE(test, ptr == NULL);
or
KUNIT_EXPECT_PTR_NE(test, ptr, (struct mystruct *)NULL);
Create a new set of macros that take care of NULL checks.
Reviewed-by: Daniel Latypov dlatypov@google.com Signed-off-by: Ricardo Ribalda ribalda@chromium.org
include/kunit/test.h | 88 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+)
diff --git a/include/kunit/test.h b/include/kunit/test.h index 00b9ff7783ab..340169723669 100644 --- a/include/kunit/test.h +++ b/include/kunit/test.h @@ -1218,6 +1218,50 @@ do { \ fmt, \ ##__VA_ARGS__)
+/**
- KUNIT_EXPECT_NULL() - Expects that @ptr is null.
- @test: The test context object.
- @ptr: an arbitrary pointer.
- Sets an expectation that the value that @ptr evaluates to is null. This is
- semantically equivalent to KUNIT_EXPECT_PTR_EQ(@test, ptr, NULL).
- See KUNIT_EXPECT_TRUE() for more information.
- */
+#define KUNIT_EXPECT_NULL(test, ptr) \
KUNIT_EXPECT_PTR_EQ_MSG(test, \
ptr, \
NULL, \
NULL)
+#define KUNIT_EXPECT_NULL_MSG(test, ptr, fmt, ...) \
KUNIT_BINARY_PTR_ASSERTION(test, \
KUNIT_EXPECTATION, \
ptr, ==, NULL, \
fmt, \
##__VA_ARGS__)
Sorry, I mentally skipped over this even while reading over it several times. Not sure how. My brain just mentally rewrote it to what I was expecting.
I see you copy-pasted KUNIT_EXPECT_PTR_EQ() and then did s/right/NULL. It works, but...
These macros would be more in line with their counterparts if we instead did
#define KUNIT_EXPECT_NULL(test, ptr) \ KUNIT_EXPECT_NULL_MSG(test, ptr, NULL)
instead of having it go through *PTR_EQ_MSG()
+/**
- KUNIT_EXPECT_NOT_NULL() - Expects that @ptr is not null.
- @test: The test context object.
- @ptr: an arbitrary pointer.
- Sets an expectation that the value that @ptr evaluates to is not null. This
- is semantically equivalent to KUNIT_EXPECT_PTR_NE(@test, ptr, NULL).
- See KUNIT_EXPECT_TRUE() for more information.
- */
+#define KUNIT_EXPECT_NOT_NULL(test, ptr) \
KUNIT_EXPECT_PTR_NE_MSG(test, \
ptr, \
NULL, \
NULL)
ditto here, KUNIT_EXPECT_NOT_NULL_MSG(test, ptr, NULL) would be more consistent.
+#define KUNIT_EXPECT_NOT_NULL_MSG(test, ptr, fmt, ...) \
KUNIT_BINARY_PTR_ASSERTION(test, \
KUNIT_EXPECTATION, \
ptr, !=, NULL, \
fmt, \
##__VA_ARGS__)
/**
- KUNIT_EXPECT_NOT_ERR_OR_NULL() - Expects that @ptr is not null and not err.
- @test: The test context object.
@@ -1485,6 +1529,50 @@ do { \ fmt, \ ##__VA_ARGS__)
+/**
- KUNIT_ASSERT_NULL() - Asserts that pointers @ptr is null.
- @test: The test context object.
- @ptr: an arbitrary pointer.
- Sets an assertion that the values that @ptr evaluates to is null. This is
- the same as KUNIT_EXPECT_NULL(), except it causes an assertion
- failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met.
- */
+#define KUNIT_ASSERT_NULL(test, ptr) \
KUNIT_ASSERT_PTR_EQ_MSG(test, \
ptr, \
NULL, \
NULL)
+#define KUNIT_ASSERT_NULL_MSG(test, ptr, fmt, ...) \
KUNIT_BINARY_PTR_ASSERTION(test, \
KUNIT_ASSERTION, \
ptr, ==, NULL, \
fmt, \
##__VA_ARGS__)
+/**
- KUNIT_ASSERT_NOT_NULL() - Asserts that pointers @ptr is not null.
- @test: The test context object.
- @ptr: an arbitrary pointer.
- Sets an assertion that the values that @ptr evaluates to is not null. This
- is the same as KUNIT_EXPECT_NOT_NULL(), except it causes an assertion
- failure (see KUNIT_ASSERT_TRUE()) when the assertion is not met.
- */
+#define KUNIT_ASSERT_NOT_NULL(test, ptr) \
KUNIT_ASSERT_PTR_NE_MSG(test, \
ptr, \
NULL, \
NULL)
+#define KUNIT_ASSERT_NOT_NULL_MSG(test, ptr, fmt, ...) \
KUNIT_BINARY_PTR_ASSERTION(test, \
KUNIT_ASSERTION, \
ptr, !=, NULL, \
fmt, \
##__VA_ARGS__)
/**
- KUNIT_ASSERT_NOT_ERR_OR_NULL() - Assertion that @ptr is not null and not err.
- @test: The test context object.
-- 2.35.0.263.gb82422642f-goog