From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stephen Boyd Subject: Re: [PATCH v9 01/18] kunit: test: add KUnit test runner core Date: Mon, 15 Jul 2019 13:10:53 -0700 Message-ID: <20190715201054.C69AA2086C@mail.kernel.org> References: <20190712081744.87097-1-brendanhiggins@google.com> <20190712081744.87097-2-brendanhiggins@google.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Return-path: In-Reply-To: <20190712081744.87097-2-brendanhiggins@google.com> Sender: linux-kernel-owner@vger.kernel.org To: frowand.list@gmail.com, gregkh@linuxfoundation.org, jpoimboe@redhat.com, keescook@google.com, kieran.bingham@ideasonboard.com, mcgrof@kernel.org, peterz@infradead.org, robh@kernel.org, shuah@kernel.org, tytso@mit.edu, yamada.masahiro@socionext.com Cc: devicetree@vger.kernel.org, dri-devel@lists.freedesktop.org, kunit-dev@googlegroups.com, linux-doc@vger.kernel.org, linux-fsdevel@vger.kernel.org, linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-nvdimm@lists.01.org, linux-um@lists.infradead.org, Alexander.Levin@microsoft.com, Tim.Bird@sony.com, amir73il@gmail.com, dan.carpenter@oracle.com, daniel@ffwll.ch, jdike@addtoit.com, joel@jms.id.au, julia.lawall@lip6.fr, khilman@baylibre.com, knut.omang@oracle.com, logang@deltatee.com, mpe@ellerman.id.au, pmladek@suse.com, rdunlap@infradead.org, richard@nod.at, rientjes@google.com, rostedt@goodmis.org, wfg@linux.intel.com, Brendan Higgins List-Id: devicetree@vger.kernel.org Quoting Brendan Higgins (2019-07-12 01:17:27) > Add core facilities for defining unit tests; this provides a common way > to define test cases, functions that execute code which is under test > and determine whether the code under test behaves as expected; this also > provides a way to group together related test cases in test suites (here > we call them test_modules). >=20 > Just define test cases and how to execute them for now; setting > expectations on code will be defined later. >=20 > Signed-off-by: Brendan Higgins > Reviewed-by: Greg Kroah-Hartman > Reviewed-by: Logan Gunthorpe > Reviewed-by: Luis Chamberlain Reviewed-by: Stephen Boyd Minor nits below. > diff --git a/kunit/test.c b/kunit/test.c > new file mode 100644 > index 0000000000000..571e4c65deb5c > --- /dev/null > +++ b/kunit/test.c > @@ -0,0 +1,189 @@ > +// SPDX-License-Identifier: GPL-2.0 > +/* > + * Base unit test (KUnit) API. > + * > + * Copyright (C) 2019, Google LLC. > + * Author: Brendan Higgins > + */ > + > +#include > +#include > + > +static void kunit_set_failure(struct kunit *test) > +{ > + WRITE_ONCE(test->success, false); > +} > + [...] > + > +void kunit_init_test(struct kunit *test, const char *name) > +{ > + test->name =3D name; > + test->success =3D true; > +} > + > +/* > + * Performs all logic to run a test case. > + */ > +static void kunit_run_case(struct kunit_suite *suite, > + struct kunit_case *test_case) > +{ > + struct kunit test; > + int ret =3D 0; > + > + kunit_init_test(&test, test_case->name); > + > + if (suite->init) { > + ret =3D suite->init(&test); Can you push the ret definition into this if scope? That way we can avoid default initialize to 0 for it. > + if (ret) { > + kunit_err(&test, "failed to initialize: %d\n", re= t); > + kunit_set_failure(&test); Do we need to 'test_case->success =3D test.success' here too? Or is the test failure extracted somewhere else? > + return; > + } > + } > + > + test_case->run_case(&test); > + > + if (suite->exit) > + suite->exit(&test); > + > + test_case->success =3D test.success;