Re: [PATCH 4/7] rust: str: convert `rusttest` tests into KUnit

John Hubbard
2025-05-10T01:58:08Z

On 5/2/25 2:51 PM, Miguel Ojeda wrote:
> In general, we should aim to test as much as possible within the actual
> kernel, and not in the build host.
>
> Thus convert these `rusttest` tests into KUnit tests.

yes yes yes! :)

Like many, many kernel developers, I've been using separate development
and test machines, and so "make test" approaches are broken by
design.

In other works, launching tests from make(1) usually includes the
fatal flaw of leaving all the dependencies connected. And so when
you try to run on your test machine, it tries to rebuild, but the
kernel was build on the development machine...

It's just a constraint that should not be imposed on developers.

thanks,
--
John Hubbard

>
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> ---
> rust/kernel/str.rs | 10 ++++------
> 1 file changed, 4 insertions(+), 6 deletions(-)
>
> diff --git a/rust/kernel/str.rs b/rust/kernel/str.rs
> index 878111cb77bc..cf2caa2db168 100644
> --- a/rust/kernel/str.rs
> +++ b/rust/kernel/str.rs
> @@ -6,7 +6,7 @@
> use core::fmt::{self, Write};
> use core::ops::{self, Deref, DerefMut, Index};
>
> -use crate::error::{code::*, Error};
> +use crate::prelude::*;
>
> /// Byte string without UTF-8 validity guarantee.
> #[repr(transparent)]
> @@ -572,8 +572,7 @@ macro_rules! c_str {
> }};
> }
>
> -#[cfg(test)]
> -#[expect(clippy::items_after_test_module)]
> +#[kunit_tests(rust_kernel_str)]
> mod tests {
> use super::*;
>
> @@ -622,11 +621,10 @@ fn test_cstr_to_str() {
> }
>
> #[test]
> - #[should_panic]
> - fn test_cstr_to_str_panic() {
> + fn test_cstr_to_str_invalid_utf8() {
> let bad_bytes = b"\xc3\x28\0";
> let checked_cstr = CStr::from_bytes_with_nul(bad_bytes).unwrap();
> - checked_cstr.to_str().unwrap();
> + assert!(checked_cstr.to_str().is_err());
> }
>
> #[test]