diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 26ca174c..6e4e4bc4 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -81,7 +81,7 @@ jobs: - uses: actions-rs/toolchain@v1 with: profile: minimal - toolchain: nightly + toolchain: stable override: true components: clippy - run: cargo test --package askama_rocket --all-targets diff --git a/askama_derive/src/generator.rs b/askama_derive/src/generator.rs index fdc9cae5..142ff7fb 100644 --- a/askama_derive/src/generator.rs +++ b/askama_derive/src/generator.rs @@ -506,7 +506,7 @@ impl<'a> Generator<'a> { let param = syn::GenericParam::Lifetime(syn::LifetimeDef::new(lifetime)); self.write_header( buf, - "::askama_rocket::Responder<'askama>", + "::askama_rocket::Responder<'askama, 'askama>", Some(vec![param]), )?; diff --git a/askama_rocket/Cargo.toml b/askama_rocket/Cargo.toml index bdace044..53a0953f 100644 --- a/askama_rocket/Cargo.toml +++ b/askama_rocket/Cargo.toml @@ -14,7 +14,10 @@ edition = "2018" [dependencies] askama = { version = "0.11.2", path = "../askama", default-features = false, features = ["with-rocket", "mime", "mime_guess"] } -rocket = { version = "0.4", default-features = false } +rocket = { version = "0.5.0-rc.2", default-features = false } + +[dev-dependencies] +futures-lite = "1.12.0" [features] default = ["askama/default"] diff --git a/askama_rocket/src/lib.rs b/askama_rocket/src/lib.rs index f10ba871..fb231a42 100644 --- a/askama_rocket/src/lib.rs +++ b/askama_rocket/src/lib.rs @@ -14,6 +14,6 @@ pub fn respond(t: &T, _ext: &str) -> Result<'static> { let rsp = t.render().map_err(|_| Status::InternalServerError)?; Response::build() .header(Header::new("content-type", T::MIME_TYPE)) - .sized_body(Cursor::new(rsp)) + .sized_body(rsp.len(), Cursor::new(rsp)) .ok() } diff --git a/askama_rocket/tests/basic.rs b/askama_rocket/tests/basic.rs index 0671c4c8..a61c1882 100644 --- a/askama_rocket/tests/basic.rs +++ b/askama_rocket/tests/basic.rs @@ -1,12 +1,8 @@ -#![feature(proc_macro_hygiene, decl_macro)] - -#[macro_use] -extern crate rocket; - use askama::Template; +use futures_lite::future::block_on; use rocket::http::{ContentType, Status}; -use rocket::local::Client; +use rocket::local::asynchronous::Client; #[derive(Template)] #[template(path = "hello.html")] @@ -14,17 +10,23 @@ struct HelloTemplate<'a> { name: &'a str, } -#[get("/")] +#[rocket::get("/")] fn hello() -> HelloTemplate<'static> { HelloTemplate { name: "world" } } #[test] fn test_rocket() { - let rocket = rocket::ignite().mount("/", routes![hello]); - let client = Client::new(rocket).unwrap(); - let mut rsp = client.get("/").dispatch(); - assert_eq!(rsp.status(), Status::Ok); - assert_eq!(rsp.content_type(), Some(ContentType::HTML)); - assert_eq!(rsp.body_string().unwrap(), "Hello, world!"); + block_on(async { + let rocket = rocket::build() + .mount("/", rocket::routes![hello]) + .ignite() + .await + .unwrap(); + let client = Client::untracked(rocket).await.unwrap(); + let rsp = client.get("/").dispatch().await; + assert_eq!(rsp.status(), Status::Ok); + assert_eq!(rsp.content_type(), Some(ContentType::HTML)); + assert_eq!(rsp.into_string().await.as_deref(), Some("Hello, world!")); + }); }