]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
kunit: Introduce _NULL and _NOT_NULL macros
authorRicardo Ribalda <ribalda@chromium.org>
Fri, 11 Feb 2022 16:42:41 +0000 (17:42 +0100)
committerShuah Khan <skhan@linuxfoundation.org>
Mon, 4 Apr 2022 20:29:02 +0000 (14:29 -0600)
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: Brendan Higgins <brendanhiggins@google.com>
Reviewed-by: Daniel Latypov <dlatypov@google.com>
Signed-off-by: Ricardo Ribalda <ribalda@chromium.org>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
include/kunit/test.h

index 00b9ff7783ab801004bfdcc8f3f3ea027ea1a222..e6c18b609b47c535afa41dd4f4ea3ce222967edf 100644 (file)
@@ -1218,6 +1218,48 @@ 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_NULL_MSG(test,                                            \
+                             ptr,                                             \
+                             NULL)
+
+#define KUNIT_EXPECT_NULL_MSG(test, ptr, fmt, ...)                            \
+       KUNIT_BINARY_PTR_ASSERTION(test,                                       \
+                                  KUNIT_EXPECTATION,                          \
+                                  ptr, ==, NULL,                              \
+                                  fmt,                                        \
+                                  ##__VA_ARGS__)
+
+/**
+ * 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_NOT_NULL_MSG(test,                                        \
+                                 ptr,                                         \
+                                 NULL)
+
+#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 +1527,48 @@ 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_NULL_MSG(test,                                            \
+                             ptr,                                             \
+                             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_NOT_NULL_MSG(test,                                        \
+                                 ptr,                                         \
+                                 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.