On Thu, 15 Jun 2023 at 02:09, Miguel Ojeda ojeda@kernel.org wrote:
This is the initial KUnit integration for running Rust documentation tests within the kernel.
Thank you to the KUnit team for all the input and feedback on this over the months, as well as the Intel LKP 0-Day team!
This may be merged through either the KUnit or the Rust trees. If the KUnit team wants to merge it, then that would be great.
Please see the message in the main commit for the details.
Thanks very much for putting this together! I've been looking forward to it, and it works well here.
I've been running it on linux-next to get both the pending KUnit and Rust changes, and it works well apart from needing to fix a couple of conflicts from https://git.kernel.org/pub/scm/linux/kernel/git/shuah/linux-kselftest.git/co...
In particular, the tests run with: ./tools/testing/kunit/kunit.py run --kconfig_add CONFIG_RUST=y --make_options LLVM=1 'rust_doctests_kernel'
And also under QEMU / x86_64 with: ./tools/testing/kunit/kunit.py run --arch x86_64 --kconfig_add CONFIG_RUST=y --make_options LLVM=1 'rust_doctests_kernel'
(And I'm looking forward to trying out the other architecture support patches with it, too)
The doctests also run nicely as part of the default test suite when CONFIG_RUST=y. At some point, we might want to add a Rust-specific .kunitconfig to make it easier to just run Rust-related test suites, but it's not a big deal for just these.
I assume we'll take this in via the kselftest/kunit tree for 6.6, but if you'd rather take them via the Rust tree, that's fine too.
Cheers, -- David
Miguel Ojeda (6): rust: init: make doctests compilable/testable rust: str: make doctests compilable/testable rust: sync: make doctests compilable/testable rust: types: make doctests compilable/testable rust: support running Rust documentation tests as KUnit ones MAINTAINERS: add Rust KUnit files to the KUnit entry
MAINTAINERS | 2 + lib/Kconfig.debug | 13 +++ rust/.gitignore | 2 + rust/Makefile | 29 ++++++ rust/bindings/bindings_helper.h | 1 + rust/helpers.c | 7 ++ rust/kernel/init.rs | 25 +++-- rust/kernel/kunit.rs | 156 ++++++++++++++++++++++++++++ rust/kernel/lib.rs | 2 + rust/kernel/str.rs | 4 +- rust/kernel/sync/arc.rs | 9 +- rust/kernel/sync/lock/mutex.rs | 1 + rust/kernel/sync/lock/spinlock.rs | 1 + rust/kernel/types.rs | 6 +- scripts/.gitignore | 2 + scripts/Makefile | 4 + scripts/rustdoc_test_builder.rs | 73 ++++++++++++++ scripts/rustdoc_test_gen.rs | 162 ++++++++++++++++++++++++++++++ 18 files changed, 484 insertions(+), 15 deletions(-) create mode 100644 rust/kernel/kunit.rs create mode 100644 scripts/rustdoc_test_builder.rs create mode 100644 scripts/rustdoc_test_gen.rs
base-commit: d2e3115d717197cb2bc020dd1f06b06538474ac3
2.41.0