blob: 9a4aea71fffa826010ca114e5e29204234edda80 [file] [log] [blame]
===========
Using KUnit
===========
.. toctree::
:maxdepth: 2
:caption: Contents:
getting_kunit
faq
Where is KUnit?
:doc:`getting_kunit`
KUnit is integrated into the Linux kernel, so all you need is a version of the
kernel which contains KUnit, and a config file with which to build it. The
:doc:`getting_kunit` page covers the different versions of KUnit available, and
where to get them.
Running tests
=============
To run KUnit tests, you'll need to provide a 'kunitconfig' file, which contains
the list of test modules to build, and their dependencies.
Once you have the ``kunitconfig`` file, just run:
``$ ./tools/testing/kunit/kunit.py run``
This will build a UML (User Mode Linux) kernel, run the specified tests, and
print the results (nicely formatted) to the screen.
Writing tests
=============
Once you have KUnit working, writing tests is easy. Each test is a function
which accepts a ``struct kunit`` argument, and which calls the various
``KUNIT_EXPECT_*`` macros to verify the state under test.
More details can be found in the `Getting Started <../third_party/kernel/docs/start.html>`_
guide.
Submitting tests upstream
=========================
Ideally, KUnit tests will be submitted upstream alongside the code being tested,
so any user or developer can run the tests and test any changes they make. Once
KUnit itself is upstream, this means that KUnit tests should ideally be treated
as any other change, and submitted via the maintainer of the subsystem being
tested. (Though do feel free to copy in the ``kunit-dev@googlegroups.com`` list
if you want.)
For the time being, though, we recommend submitting patches via the
``linux-kselftest/test`` branch, which contains the version of KUnit likely to
head upstream. To do so, please send your patch via the
``linux-kselftest@vger.kernel.org`` list, and include ``linux-kselftest/test``
in the subject prefix. You should still get a review from the subsystem
maintainer, though.
And, of course, you should follow the general rules and guidelines laid out in
https://www.kernel.org/doc/html/latest/process/submitting-patches.html