You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: task_abort.rs
    path of file: ./repos/tokio/tokio/tests
    
    the code of the file until where you have to start completion: #![warn(rust_2018_idioms)]
#![cfg(all(feature = "full", not(target_os = "wasi")))] // Wasi doesn't support panic recovery

use std::sync::Arc;
use std::thread::sleep;
use tokio::time::Duration;

use tokio::runtime::Builder;

struct PanicOnDrop;

impl Drop for PanicOnDrop {
    fn drop(&mut self) {
        panic!("Well what did you expect would happen...");
    }
}
    
fn test_abort_task_that_panics_on_drop_returned() {
    let rt = Builder::new_current_thread().enable_time().build().unwrap();

    rt.block_on(async move {
        let handle = tokio::spawn(async move {
            // Make sure the Arc is moved into the task
            let _panic_dropped = PanicOnDrop;
            tokio::time::sleep(Duration::new(100, 0)).await
        });

        // wait for task to sleep.
        tokio::time::sleep(Duration::from_millis(10)).await;

        handle.abort();
        assert!(handle.await.unwrap_err().is_panic());
    });
}