task: add AbortOnDropHandle type (#6786)

This commit is contained in:
Rafael Bachmann
2024-08-20 10:58:04 +02:00
committed by GitHub
parent ff3f2a8878
commit 1ac8dff213
3 changed files with 93 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
use tokio::sync::oneshot;
use tokio_util::task::AbortOnDropHandle;
#[tokio::test]
async fn aborts_task_on_drop() {
let (mut tx, rx) = oneshot::channel::<bool>();
let handle = tokio::spawn(async move {
let _ = rx.await;
});
let handle = AbortOnDropHandle::new(handle);
drop(handle);
tx.closed().await;
assert!(tx.is_closed());
}
#[tokio::test]
async fn aborts_task_directly() {
let (mut tx, rx) = oneshot::channel::<bool>();
let handle = tokio::spawn(async move {
let _ = rx.await;
});
let handle = AbortOnDropHandle::new(handle);
handle.abort();
tx.closed().await;
assert!(tx.is_closed());
assert!(handle.is_finished());
}