[3/6] rust: sync: make doctests compilable/testable

Message ID 20230614180837.630180-4-ojeda@kernel.org
State New
Headers
Series KUnit integration for Rust doctests |

Commit Message

Miguel Ojeda June 14, 2023, 6:08 p.m. UTC
  Rust documentation tests are going to be build/run-tested
with the KUnit integration added in a future patch, thus
update them to make them compilable/testable so that we
may start enforcing it.

Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
---
 rust/kernel/sync/arc.rs           | 9 +++++++--
 rust/kernel/sync/lock/mutex.rs    | 1 +
 rust/kernel/sync/lock/spinlock.rs | 1 +
 3 files changed, 9 insertions(+), 2 deletions(-)
  

Comments

Alice Ryhl June 14, 2023, 8:32 p.m. UTC | #1
Miguel Ojeda <ojeda@kernel.org> writes:
> Rust documentation tests are going to be build/run-tested
> with the KUnit integration added in a future patch, thus
> update them to make them compilable/testable so that we
> may start enforcing it.
> 
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>

Reviewed-by: Alice Ryhl <aliceryhl@google.com>
  
Martin Rodriguez Reboredo June 15, 2023, 1:04 a.m. UTC | #2
On 6/14/23 15:08, Miguel Ojeda wrote:
> Rust documentation tests are going to be build/run-tested
> with the KUnit integration added in a future patch, thus
> update them to make them compilable/testable so that we
> may start enforcing it.
> 
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> ---
> [...]

Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
  
David Gow June 16, 2023, 4:51 a.m. UTC | #3
On Thu, 15 Jun 2023 at 02:09, Miguel Ojeda <ojeda@kernel.org> wrote:
>
> Rust documentation tests are going to be build/run-tested
> with the KUnit integration added in a future patch, thus
> update them to make them compilable/testable so that we
> may start enforcing it.
>
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> ---

Looks good, thanks!

Reviewed-by: David Gow <davidgow@google.com>

Cheers,
-- David
  
Björn Roy Baron June 16, 2023, 11:14 a.m. UTC | #4
------- Original Message -------
On Wednesday, June 14th, 2023 at 20:08, Miguel Ojeda <ojeda@kernel.org> wrote:

> Rust documentation tests are going to be build/run-tested
> with the KUnit integration added in a future patch, thus
> update them to make them compilable/testable so that we
> may start enforcing it.
> 
> Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
> ---
>  rust/kernel/sync/arc.rs           | 9 +++++++--
>  rust/kernel/sync/lock/mutex.rs    | 1 +
>  rust/kernel/sync/lock/spinlock.rs | 1 +
>  3 files changed, 9 insertions(+), 2 deletions(-)
> 
> diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
> index a89843cacaad..1ecb2efab51e 100644
> --- a/rust/kernel/sync/arc.rs
> +++ b/rust/kernel/sync/arc.rs
> @@ -73,6 +73,7 @@
>  /// assert_eq!(cloned.b, 20);
>  ///
>  /// // The refcount drops to zero when `cloned` goes out of scope, and the memory is freed.
> +/// # Ok::<(), Error>(())
>  /// ```
>  ///
>  /// Using `Arc<T>` as the type of `self`:
> @@ -98,6 +99,7 @@
>  /// let obj = Arc::try_new(Example { a: 10, b: 20 })?;
>  /// obj.use_reference();
>  /// obj.take_over();
> +/// # Ok::<(), Error>(())
>  /// ```
>  ///
>  /// Coercion from `Arc<Example>` to `Arc<dyn MyTrait>`:
> @@ -121,6 +123,7 @@
>  ///
>  /// // `coerced` has type `Arc<dyn MyTrait>`.
>  /// let coerced: Arc<dyn MyTrait> = obj;
> +/// # Ok::<(), Error>(())
>  /// ```
>  pub struct Arc<T: ?Sized> {
>      ptr: NonNull<ArcInner<T>>,
> @@ -337,7 +340,7 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
>  /// # Example
>  ///
>  /// ```
> -/// use crate::sync::{Arc, ArcBorrow};
> +/// use kernel::sync::{Arc, ArcBorrow};
>  ///
>  /// struct Example;
>  ///
> @@ -350,12 +353,13 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
>  ///
>  /// // Assert that both `obj` and `cloned` point to the same underlying object.
>  /// assert!(core::ptr::eq(&*obj, &*cloned));
> +/// # Ok::<(), Error>(())
>  /// ```
>  ///
>  /// Using `ArcBorrow<T>` as the type of `self`:
>  ///
>  /// ```
> -/// use crate::sync::{Arc, ArcBorrow};
> +/// use kernel::sync::{Arc, ArcBorrow};
>  ///
>  /// struct Example {
>  ///     a: u32,
> @@ -370,6 +374,7 @@ fn from(item: Pin<UniqueArc<T>>) -> Self {
>  ///
>  /// let obj = Arc::try_new(Example { a: 10, b: 20 })?;
>  /// obj.as_arc_borrow().use_reference();
> +/// # Ok::<(), Error>(())
>  /// ```
>  pub struct ArcBorrow<'a, T: ?Sized + 'a> {
>      inner: NonNull<ArcInner<T>>,
> diff --git a/rust/kernel/sync/lock/mutex.rs b/rust/kernel/sync/lock/mutex.rs
> index 923472f04af4..09276fedc091 100644
> --- a/rust/kernel/sync/lock/mutex.rs
> +++ b/rust/kernel/sync/lock/mutex.rs
> @@ -63,6 +63,7 @@ macro_rules! new_mutex {
>  /// assert_eq!(e.c, 10);
>  /// assert_eq!(e.d.lock().a, 20);
>  /// assert_eq!(e.d.lock().b, 30);
> +/// # Ok::<(), Error>(())
>  /// ```
>  ///
>  /// The following example shows how to use interior mutability to modify the contents of a struct
> diff --git a/rust/kernel/sync/lock/spinlock.rs b/rust/kernel/sync/lock/spinlock.rs
> index 979b56464a4e..91eb2c9e9123 100644
> --- a/rust/kernel/sync/lock/spinlock.rs
> +++ b/rust/kernel/sync/lock/spinlock.rs
> @@ -61,6 +61,7 @@ macro_rules! new_spinlock {
>  /// assert_eq!(e.c, 10);
>  /// assert_eq!(e.d.lock().a, 20);
>  /// assert_eq!(e.d.lock().b, 30);
> +/// # Ok::<(), Error>(())
>  /// ```
>  ///
>  /// The following example shows how to use interior mutability to modify the contents of a struct
> -- 
> 2.41.0

Reviewed-by: Björn Roy Baron <bjorn3_gh@protonmail.com>
  

Patch

diff --git a/rust/kernel/sync/arc.rs b/rust/kernel/sync/arc.rs
index a89843cacaad..1ecb2efab51e 100644
--- a/rust/kernel/sync/arc.rs
+++ b/rust/kernel/sync/arc.rs
@@ -73,6 +73,7 @@ 
 /// assert_eq!(cloned.b, 20);
 ///
 /// // The refcount drops to zero when `cloned` goes out of scope, and the memory is freed.
+/// # Ok::<(), Error>(())
 /// ```
 ///
 /// Using `Arc<T>` as the type of `self`:
@@ -98,6 +99,7 @@ 
 /// let obj = Arc::try_new(Example { a: 10, b: 20 })?;
 /// obj.use_reference();
 /// obj.take_over();
+/// # Ok::<(), Error>(())
 /// ```
 ///
 /// Coercion from `Arc<Example>` to `Arc<dyn MyTrait>`:
@@ -121,6 +123,7 @@ 
 ///
 /// // `coerced` has type `Arc<dyn MyTrait>`.
 /// let coerced: Arc<dyn MyTrait> = obj;
+/// # Ok::<(), Error>(())
 /// ```
 pub struct Arc<T: ?Sized> {
     ptr: NonNull<ArcInner<T>>,
@@ -337,7 +340,7 @@  fn from(item: Pin<UniqueArc<T>>) -> Self {
 /// # Example
 ///
 /// ```
-/// use crate::sync::{Arc, ArcBorrow};
+/// use kernel::sync::{Arc, ArcBorrow};
 ///
 /// struct Example;
 ///
@@ -350,12 +353,13 @@  fn from(item: Pin<UniqueArc<T>>) -> Self {
 ///
 /// // Assert that both `obj` and `cloned` point to the same underlying object.
 /// assert!(core::ptr::eq(&*obj, &*cloned));
+/// # Ok::<(), Error>(())
 /// ```
 ///
 /// Using `ArcBorrow<T>` as the type of `self`:
 ///
 /// ```
-/// use crate::sync::{Arc, ArcBorrow};
+/// use kernel::sync::{Arc, ArcBorrow};
 ///
 /// struct Example {
 ///     a: u32,
@@ -370,6 +374,7 @@  fn from(item: Pin<UniqueArc<T>>) -> Self {
 ///
 /// let obj = Arc::try_new(Example { a: 10, b: 20 })?;
 /// obj.as_arc_borrow().use_reference();
+/// # Ok::<(), Error>(())
 /// ```
 pub struct ArcBorrow<'a, T: ?Sized + 'a> {
     inner: NonNull<ArcInner<T>>,
diff --git a/rust/kernel/sync/lock/mutex.rs b/rust/kernel/sync/lock/mutex.rs
index 923472f04af4..09276fedc091 100644
--- a/rust/kernel/sync/lock/mutex.rs
+++ b/rust/kernel/sync/lock/mutex.rs
@@ -63,6 +63,7 @@  macro_rules! new_mutex {
 /// assert_eq!(e.c, 10);
 /// assert_eq!(e.d.lock().a, 20);
 /// assert_eq!(e.d.lock().b, 30);
+/// # Ok::<(), Error>(())
 /// ```
 ///
 /// The following example shows how to use interior mutability to modify the contents of a struct
diff --git a/rust/kernel/sync/lock/spinlock.rs b/rust/kernel/sync/lock/spinlock.rs
index 979b56464a4e..91eb2c9e9123 100644
--- a/rust/kernel/sync/lock/spinlock.rs
+++ b/rust/kernel/sync/lock/spinlock.rs
@@ -61,6 +61,7 @@  macro_rules! new_spinlock {
 /// assert_eq!(e.c, 10);
 /// assert_eq!(e.d.lock().a, 20);
 /// assert_eq!(e.d.lock().b, 30);
+/// # Ok::<(), Error>(())
 /// ```
 ///
 /// The following example shows how to use interior mutability to modify the contents of a struct