aboutsummaryrefslogtreecommitdiffstats
path: root/testing/tests
diff options
context:
space:
mode:
authorLibravatar Dirkjan Ochtman <dirkjan@ochtman.nl>2021-12-15 14:08:45 +0100
committerLibravatar GitHub <noreply@github.com>2021-12-15 14:08:45 +0100
commit5cfef325b03b25ad96d6c229a5ec3fd6a32f700d (patch)
treed1acb8c1f45e2bddc1453eeb5fe07e9858277a4e /testing/tests
parent228f6b2b34913077259e2d54036154a6d6f5bd10 (diff)
downloadaskama-5cfef325b03b25ad96d6c229a5ec3fd6a32f700d.tar.gz
askama-5cfef325b03b25ad96d6c229a5ec3fd6a32f700d.tar.bz2
askama-5cfef325b03b25ad96d6c229a5ec3fd6a32f700d.zip
Use a separate trait for object safety (#579)
This is relatively major change to the main trait's API. For context, I always started from the concept of monomorphized traits, but later several contributors asked about object safety. At that point I made `Template` object-safe, and then even later added a `SizedTemplate` to make some things easier for people who don't need object safety. However, having object-safety in the primary trait is bad for performance (a substantial number of calls into the virtual `Write` trait is relatively slow), and I don't think those who don't need object safety should pay for the cost of having it. Additionally, I feel using associated consts for the extension and size hint is more idiomatic than having accessor methods. I don't know why I didn't use these from the start -- maybe associated consts didn't exist yet, or I didn't yet know how/when to use them. Askama is pretty old at this point...
Diffstat (limited to '')
-rw-r--r--testing/tests/ext.rs12
-rw-r--r--testing/tests/simple.rs7
2 files changed, 8 insertions, 11 deletions
diff --git a/testing/tests/ext.rs b/testing/tests/ext.rs
index 5ed4e72..7a494fa 100644
--- a/testing/tests/ext.rs
+++ b/testing/tests/ext.rs
@@ -8,7 +8,7 @@ struct PathHtml;
fn test_path_ext_html() {
let t = PathHtml;
assert_eq!(t.render().unwrap(), "foo.html");
- assert_eq!(t.extension(), Some("html"));
+ assert_eq!(PathHtml::EXTENSION, Some("html"));
}
#[derive(Template)]
@@ -19,7 +19,7 @@ struct PathJinja;
fn test_path_ext_jinja() {
let t = PathJinja;
assert_eq!(t.render().unwrap(), "foo.jinja");
- assert_eq!(t.extension(), Some("jinja"));
+ assert_eq!(PathJinja::EXTENSION, Some("jinja"));
}
#[derive(Template)]
@@ -30,7 +30,7 @@ struct PathHtmlJinja;
fn test_path_ext_html_jinja() {
let t = PathHtmlJinja;
assert_eq!(t.render().unwrap(), "foo.html.jinja");
- assert_eq!(t.extension(), Some("html"));
+ assert_eq!(PathHtmlJinja::EXTENSION, Some("html"));
}
#[derive(Template)]
@@ -41,7 +41,7 @@ struct PathHtmlAndExtTxt;
fn test_path_ext_html_and_ext_txt() {
let t = PathHtmlAndExtTxt;
assert_eq!(t.render().unwrap(), "foo.html");
- assert_eq!(t.extension(), Some("txt"));
+ assert_eq!(PathHtmlAndExtTxt::EXTENSION, Some("txt"));
}
#[derive(Template)]
@@ -52,7 +52,7 @@ struct PathJinjaAndExtTxt;
fn test_path_ext_jinja_and_ext_txt() {
let t = PathJinjaAndExtTxt;
assert_eq!(t.render().unwrap(), "foo.jinja");
- assert_eq!(t.extension(), Some("txt"));
+ assert_eq!(PathJinjaAndExtTxt::EXTENSION, Some("txt"));
}
#[derive(Template)]
@@ -63,5 +63,5 @@ struct PathHtmlJinjaAndExtTxt;
fn test_path_ext_html_jinja_and_ext_txt() {
let t = PathHtmlJinjaAndExtTxt;
assert_eq!(t.render().unwrap(), "foo.html.jinja");
- assert_eq!(t.extension(), Some("txt"));
+ assert_eq!(PathHtmlJinjaAndExtTxt::EXTENSION, Some("txt"));
}
diff --git a/testing/tests/simple.rs b/testing/tests/simple.rs
index e66485a..dcd324e 100644
--- a/testing/tests/simple.rs
+++ b/testing/tests/simple.rs
@@ -1,6 +1,6 @@
#![allow(clippy::blacklisted_name)]
-use askama::{SizedTemplate, Template};
+use askama::Template;
use std::collections::HashMap;
@@ -26,10 +26,7 @@ fn test_variables() {
Iñtërnâtiônàlizætiøn is important\n\
in vars too: Iñtërnâtiônàlizætiøn"
);
- assert_eq!(
- <VariablesTemplate as SizedTemplate>::extension(),
- Some("html")
- );
+ assert_eq!(VariablesTemplate::EXTENSION, Some("html"));
}
#[derive(Template)]