On Mon, Aug 12, 2019 at 9:55 PM Stephen Boyd sboyd@kernel.org wrote:
Quoting Brendan Higgins (2019-08-12 11:24:14)
Add support for assertions which are like expectations except the test terminates if the assertion is not satisfied.
The idea with assertions is that you use them to state all the preconditions for your test. Logically speaking, these are the premises of the test case, so if a premise isn't true, there is no point in continuing the test case because there are no conclusions that can be drawn without the premises. Whereas, the expectation is the thing you are trying to prove. It is not used universally in x-unit style test frameworks, but I really like it as a convention. You could still express the idea of a premise using the above idiom, but I think KUNIT_ASSERT_* states the intended idea perfectly.
Signed-off-by: Brendan Higgins brendanhiggins@google.com Reviewed-by: Greg Kroah-Hartman gregkh@linuxfoundation.org Reviewed-by: Logan Gunthorpe logang@deltatee.com
Reviewed-by: Stephen Boyd sboyd@kernel.org
- Sets an expectation that the values that @left and @right evaluate to are
- not equal. This is semantically equivalent to
- KUNIT_ASSERT_TRUE(@test, strcmp((@left), (@right))). See KUNIT_ASSERT_TRUE()
- for more information.
- */
+#define KUNIT_ASSERT_STRNEQ(test, left, right) \
KUNIT_BINARY_STR_NE_ASSERTION(test, \
KUNIT_ASSERTION, \
left, \
right)
+#define KUNIT_ASSERT_STRNEQ_MSG(test, left, right, fmt, ...) \
KUNIT_BINARY_STR_NE_MSG_ASSERTION(test, \
KUNIT_ASSERTION, \
left, \
right, \
fmt, \
Same question about tabbing too.
Yep. WIll fix.
diff --git a/kunit/test-test.c b/kunit/test-test.c index 88f4cdf03db2a..058f3fb37458a 100644 --- a/kunit/test-test.c +++ b/kunit/test-test.c @@ -78,11 +78,13 @@ static int kunit_try_catch_test_init(struct kunit *test) struct kunit_try_catch_test_context *ctx;
ctx = kunit_kzalloc(test, sizeof(*ctx), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx);
Ah ok. Question still stands if kunit_kzalloc() should just have the assertion on failure.
Right. In the previous patch KUNIT_ASSERT_* doesn't exist yet, so I can't use it. And rather than fall back to return -ENOMEM like I should have, I evidently forgot to do that.
test->priv = ctx; ctx->try_catch = kunit_kmalloc(test, sizeof(*ctx->try_catch), GFP_KERNEL);
KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ctx->try_catch);