Skip to content

Commit

Permalink
Add test to validate new behavior
Browse files Browse the repository at this point in the history
  • Loading branch information
the10thWiz committed Aug 10, 2024
1 parent acac38a commit b47211c
Showing 1 changed file with 50 additions and 0 deletions.
50 changes: 50 additions & 0 deletions core/lib/tests/drop-in-async-context.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
#[macro_use] extern crate rocket;

use rocket::{Rocket, Build, build, fairing::AdHoc, Orbit};

struct AsyncDropInAsync;

impl Drop for AsyncDropInAsync {
fn drop(&mut self) {
// Attempt to fetch the current runtime while dropping
// Pools in rocket_sync_db_pools (and maybe rocket_db_pools)
// do use this capability. They spawn tasks to asyncronously
// complete shutdown of the pool, which triggers the same panic.
let _ = rocket::tokio::runtime::Handle::current();
}
}

fn rocket() -> Rocket<Build> {
build().manage(AsyncDropInAsync).attach(AdHoc::on_liftoff(
"Shutdown immediately",
|rocket: &Rocket<Orbit>| Box::pin(async {
rocket.shutdown().notify();
}
)))
}

mod launch {
#[launch]
fn launch() -> _ {
super::rocket()
}
#[test]
fn test_launch() {
main();
}
}

mod main {
#[rocket::main]
async fn main() {
super::rocket().launch().await.unwrap();
}
#[test]
fn test_main() {
main();
}
#[test]
fn test_execute() {
rocket::execute(super::rocket().launch()).unwrap();
}
}

0 comments on commit b47211c

Please sign in to comment.