Diagnostic message for failed KUNIT_ASSERT|EXPECT_EQ shows in
case of integers only raw values, like for this example:

  bool flag;
  KUNIT_EXPECT_EQ(test, 0, kstrtobool("dunno", &flag));

we will get:

  [ ] Expected 0 == kstrtobool("dunno", &flag), but
  [ ]     kstrtobool("dunno", &flag) == -22 (0xffffffffffffffea)

but we can improve it if the value is within MAX_ERRNO range by
using more friendly error format:

  [ ] Expected 0 == kstrtobool("dunno", &flag), but
  [ ]     kstrtobool("dunno", &flag) == -22 (-EINVAL)

Signed-off-by: Michal Wajdeczko <michal.wajdec...@intel.com>
---
Cc: David Gow <david...@google.com>
Cc: Rae Moar <rm...@google.com>
---
 lib/kunit/assert.c | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/lib/kunit/assert.c b/lib/kunit/assert.c
index 8da89043b734..9dec0551d0d0 100644
--- a/lib/kunit/assert.c
+++ b/lib/kunit/assert.c
@@ -128,15 +128,35 @@ void kunit_binary_assert_format(const struct kunit_assert 
*assert,
                          binary_assert->text->operation,
                          binary_assert->text->right_text);
        if (!is_literal(binary_assert->text->left_text, 
binary_assert->left_value))
-               string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld 
(0x%llx)\n",
+               if (IS_ERR_VALUE(binary_assert->left_value))
+                       string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s 
== %lld (%pe)\n",
+                                         binary_assert->text->left_text,
+                                         binary_assert->left_value,
+                                         ERR_PTR(binary_assert->left_value));
+               else
+                       string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s 
== %lld (0x%llx)\n",
+                                         binary_assert->text->left_text,
+                                         binary_assert->left_value,
+                                         binary_assert->left_value);
+       else if (IS_ERR_VALUE(binary_assert->left_value))
+               string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s is %pe\n",
                                  binary_assert->text->left_text,
-                                 binary_assert->left_value,
-                                 binary_assert->left_value);
+                                 ERR_PTR(binary_assert->left_value));
        if (!is_literal(binary_assert->text->right_text, 
binary_assert->right_value))
-               string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s == %lld 
(0x%llx)",
+               if (IS_ERR_VALUE(binary_assert->right_value))
+                       string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s 
== %lld (%pe)",
+                                         binary_assert->text->right_text,
+                                         binary_assert->right_value,
+                                         ERR_PTR(binary_assert->right_value));
+               else
+                       string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s 
== %lld (0x%llx)",
+                                         binary_assert->text->right_text,
+                                         binary_assert->right_value,
+                                         binary_assert->right_value);
+       else if (IS_ERR_VALUE(binary_assert->right_value))
+               string_stream_add(stream, KUNIT_SUBSUBTEST_INDENT "%s is %pe",
                                  binary_assert->text->right_text,
-                                 binary_assert->right_value,
-                                 binary_assert->right_value);
+                                 ERR_PTR(binary_assert->right_value));
        kunit_assert_print_msg(message, stream);
 }
 EXPORT_SYMBOL_GPL(kunit_binary_assert_format);
-- 
2.43.0


Reply via email to