Re: [PATCH v1 11/17] kunit: test: add test managed resource tests
On Thu, Apr 04, 2019 at 03:06:46PM -0700, Brendan Higgins wrote: > From: Avinash Kondareddy > > Tests how tests interact with test managed resources in their lifetime. > > Signed-off-by: Avinash Kondareddy > Signed-off-by: Brendan Higgins > --- > kunit/test-test.c | 122 ++ > 1 file changed, 122 insertions(+) > > diff --git a/kunit/test-test.c b/kunit/test-test.c > index 4bd7a34d0a6cb..54add8ca418a0 100644 > --- a/kunit/test-test.c > +++ b/kunit/test-test.c > @@ -135,3 +135,125 @@ static struct kunit_module kunit_try_catch_test_module > = { > .test_cases = kunit_try_catch_test_cases, > }; > module_test(kunit_try_catch_test_module); > + > +/* > + * Context for testing test managed resources > + * is_resource_initialized is used to test arbitrary resources > + */ > +struct kunit_test_resource_context { > + struct kunit test; > + bool is_resource_initialized; > +}; > + > +static int fake_resource_init(struct kunit_resource *res, void *context) > +{ > + struct kunit_test_resource_context *ctx = context; > + > + res->allocation = >is_resource_initialized; > + ctx->is_resource_initialized = true; > + return 0; > +} > + > +static void fake_resource_free(struct kunit_resource *res) > +{ > + bool *is_resource_initialized = res->allocation; > + > + *is_resource_initialized = false; > +} > + > +static void kunit_resource_test_init_resources(struct kunit *test) > +{ > + struct kunit_test_resource_context *ctx = test->priv; > + > + kunit_init_test(>test, "testing_test_init_test"); > + > + KUNIT_EXPECT_TRUE(test, list_empty(>test.resources)); > +} > + > +static void kunit_resource_test_alloc_resource(struct kunit *test) > +{ > + struct kunit_test_resource_context *ctx = test->priv; > + struct kunit_resource *res; > + kunit_resource_free_t free = fake_resource_free; > + > + res = kunit_alloc_resource(>test, > +fake_resource_init, > +fake_resource_free, > +ctx); > + > + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, res); KUNIT_EXPECT_NOT_ERR_OR_NULL(test, res); Thanks! Masa ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel
Re: [PATCH v1 14/17] Documentation: kunit: add documentation for KUnit
Hi Brendan, KUNIT_ASSERT_NOT_ERR_OR_NULL() should be replaced to KUNIT_EXPECT_NOT_ERR_OR_NULL(), right? On Thu, Apr 04, 2019 at 03:06:49PM -0700, Brendan Higgins wrote: > Add documentation for KUnit, the Linux kernel unit testing framework. > - Add intro and usage guide for KUnit > - Add API reference > > Signed-off-by: Felix Guo > Signed-off-by: Brendan Higgins > --- > diff --git a/Documentation/kunit/start.rst b/Documentation/kunit/start.rst > new file mode 100644 > index 0..5cdba5091905e > --- /dev/null > +++ b/Documentation/kunit/start.rst > +Assertions > +~~ > + > +KUnit also has the concept of an *assertion*. An assertion is just like an > +expectation except the assertion immediately terminates the test case if it > is > +not satisfied. > + > +For example: > + > +.. code-block:: c > + > + static void mock_test_do_expect_default_return(struct kunit *test) > + { > + struct mock_test_context *ctx = test->priv; > + struct mock *mock = ctx->mock; > + int param0 = 5, param1 = -5; > + const char *two_param_types[] = {"int", "int"}; > + const void *two_params[] = {, }; > + const void *ret; > + > + ret = mock->do_expect(mock, > + "test_printk", test_printk, > + two_param_types, two_params, > + ARRAY_SIZE(two_params)); > + KUNIT_ASSERT_NOT_ERR_OR_NULL(test, ret); KUNIT_EXPECT_NOT_ERR_OR_NULL(test, ret); > + KUNIT_EXPECT_EQ(test, -4, *((int *) ret)); > + } > + > +In this example, the method under test should return a pointer to a value, so > +if the pointer returned by the method is null or an errno, we don't want to > +bother continuing the test since the following expectation could crash the > test > +case. `ASSERT_NOT_ERR_OR_NULL(...)` allows us to bail out of the test case if +case. `KUNIT_EXPECT_NOT_ERR_OR_NULL(...)` allows us to bail out of the test case if Thanks! Masa ___ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel