diff --git a/testing/templates/foo.html b/testing/templates/foo.html
new file mode 100644
index 00000000..85fa64c0
--- /dev/null
+++ b/testing/templates/foo.html
@@ -0,0 +1 @@
+foo.html
\ No newline at end of file
diff --git a/testing/templates/foo.html.jinja b/testing/templates/foo.html.jinja
new file mode 100644
index 00000000..dc645f3c
--- /dev/null
+++ b/testing/templates/foo.html.jinja
@@ -0,0 +1 @@
+foo.html.jinja
\ No newline at end of file
diff --git a/testing/templates/foo.jinja b/testing/templates/foo.jinja
new file mode 100644
index 00000000..f47c4d58
--- /dev/null
+++ b/testing/templates/foo.jinja
@@ -0,0 +1 @@
+foo.jinja
\ No newline at end of file
diff --git a/testing/tests/ext.rs b/testing/tests/ext.rs
new file mode 100644
index 00000000..5ed4e724
--- /dev/null
+++ b/testing/tests/ext.rs
@@ -0,0 +1,67 @@
+use askama::Template;
+
+#[derive(Template)]
+#[template(path = "foo.html")]
+struct PathHtml;
+
+#[test]
+fn test_path_ext_html() {
+ let t = PathHtml;
+ assert_eq!(t.render().unwrap(), "foo.html");
+ assert_eq!(t.extension(), Some("html"));
+}
+
+#[derive(Template)]
+#[template(path = "foo.jinja")]
+struct PathJinja;
+
+#[test]
+fn test_path_ext_jinja() {
+ let t = PathJinja;
+ assert_eq!(t.render().unwrap(), "foo.jinja");
+ assert_eq!(t.extension(), Some("jinja"));
+}
+
+#[derive(Template)]
+#[template(path = "foo.html.jinja")]
+struct PathHtmlJinja;
+
+#[test]
+fn test_path_ext_html_jinja() {
+ let t = PathHtmlJinja;
+ assert_eq!(t.render().unwrap(), "foo.html.jinja");
+ assert_eq!(t.extension(), Some("html"));
+}
+
+#[derive(Template)]
+#[template(path = "foo.html", ext = "txt")]
+struct PathHtmlAndExtTxt;
+
+#[test]
+fn test_path_ext_html_and_ext_txt() {
+ let t = PathHtmlAndExtTxt;
+ assert_eq!(t.render().unwrap(), "foo.html");
+ assert_eq!(t.extension(), Some("txt"));
+}
+
+#[derive(Template)]
+#[template(path = "foo.jinja", ext = "txt")]
+struct PathJinjaAndExtTxt;
+
+#[test]
+fn test_path_ext_jinja_and_ext_txt() {
+ let t = PathJinjaAndExtTxt;
+ assert_eq!(t.render().unwrap(), "foo.jinja");
+ assert_eq!(t.extension(), Some("txt"));
+}
+
+#[derive(Template)]
+#[template(path = "foo.html.jinja", ext = "txt")]
+struct PathHtmlJinjaAndExtTxt;
+
+#[test]
+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"));
+}