Add test to validate new behavior

This commit is contained in:
Matthew Pomes 2024-08-09 23:01:18 -05:00 committed by Sergio Benitez
parent 02680076eb
commit 24a84d52e4
1 changed files with 50 additions and 0 deletions

View File

@ -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();
}
}