#[cfg(feature = "templates")] #[macro_use] extern crate rocket; #[cfg(feature = "templates")] mod templates_tests { use std::path::{Path, PathBuf}; use rocket::Rocket; use rocket::config::Config; use rocket_contrib::templates::{Template, Metadata}; #[get("//")] fn template_check(md: Metadata<'_>, engine: &str, name: &str) -> Option<()> { match md.contains_template(&format!("{}/{}", engine, name)) { true => Some(()), false => None } } #[get("/is_reloading")] fn is_reloading(md: Metadata<'_>) -> Option<()> { if md.reloading() { Some(()) } else { None } } fn template_root() -> PathBuf { Path::new(env!("CARGO_MANIFEST_DIR")).join("tests").join("templates") } fn rocket() -> Rocket { rocket::custom(Config::figment().merge(("template_dir", template_root()))) .attach(Template::fairing()) .mount("/", routes![template_check, is_reloading]) } #[test] fn test_callback_error() { use rocket::{local::blocking::Client, error::ErrorKind::FailedFairings}; let rocket = rocket::ignite().attach(Template::try_custom(|_| { Err("error reloading templates!".into()) })); match Client::untracked(rocket) { Err(e) => match e.kind() { FailedFairings(failures) => assert_eq!(failures[0], "Templates"), _ => panic!("Wrong kind of launch error"), } _ => panic!("Wrong kind of error"), } } #[cfg(feature = "tera_templates")] mod tera_tests { use super::*; use std::collections::HashMap; use rocket::http::Status; use rocket::local::blocking::Client; const UNESCAPED_EXPECTED: &'static str = "\nh_start\ntitle: _test_\nh_end\n\n\n