From 65dde226765e1dea90fe3b2c771c9ebdbf904523 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Sat, 18 Aug 2012 13:40:21 +0200 Subject: [PATCH] fix mustache render failure test --- .../sonia/scm/template/MustacheTemplate.java | 22 ++++++++++++-- .../scm/template/MustacheTemplateTest.java | 29 +++++++++++++++++++ .../sonia/scm/template/TemplateTestBase.java | 14 ++++++++- .../resources/sonia/scm/template/003.mustache | 2 +- 4 files changed, 63 insertions(+), 4 deletions(-) diff --git a/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java b/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java index 1e570c2fc7..3e75e604b6 100644 --- a/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java +++ b/scm-webapp/src/main/java/sonia/scm/template/MustacheTemplate.java @@ -30,17 +30,21 @@ */ + package sonia.scm.template; //~--- non-JDK imports -------------------------------------------------------- import com.github.mustachejava.Mustache; +import com.google.common.base.Throwables; + import org.slf4j.Logger; import org.slf4j.LoggerFactory; //~--- JDK imports ------------------------------------------------------------ +import java.io.IOException; import java.io.Writer; /** @@ -81,16 +85,30 @@ public class MustacheTemplate implements Template * @param writer * @param environment * @param model + * + * @throws IOException */ @Override - public void execute(Writer writer, Object model) + public void execute(Writer writer, Object model) throws IOException { if (logger.isDebugEnabled()) { logger.debug("render mustache template at {}", templatePath); } - mustache.execute(writer, model); + try + { + + mustache.execute(writer, model); + + } + catch (Exception ex) + { + Throwables.propagateIfInstanceOf(ex, IOException.class); + + throw new TemplateRenderException( + "could not render template ".concat(templatePath), ex); + } } //~--- fields --------------------------------------------------------------- diff --git a/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java b/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java index 7ff4c185b3..dea361fc9f 100644 --- a/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java +++ b/scm-webapp/src/test/java/sonia/scm/template/MustacheTemplateTest.java @@ -36,10 +36,14 @@ package sonia.scm.template; import com.github.mustachejava.DefaultMustacheFactory; import com.github.mustachejava.Mustache; +import com.google.common.base.Function; + //~--- JDK imports ------------------------------------------------------------ import java.io.IOException; +import java.util.Map; + /** * * @author Sebastian Sdorra @@ -73,6 +77,31 @@ public class MustacheTemplateTest extends TemplateTestBase return getTemplate("sonia/scm/template/001.mustache"); } + //~--- methods -------------------------------------------------------------- + + /** + * Method description + * + * + * @param env + */ + @Override + protected void prepareEnv(Map env) + { + env.put("test", new Function() + { + + @Override + public String apply(String input) + { + throw new UnsupportedOperationException("Not supported yet."); + } + + }); + } + + //~--- get methods ---------------------------------------------------------- + /** * Method description * diff --git a/scm-webapp/src/test/java/sonia/scm/template/TemplateTestBase.java b/scm-webapp/src/test/java/sonia/scm/template/TemplateTestBase.java index 15f6e3994e..aa00529fc3 100644 --- a/scm-webapp/src/test/java/sonia/scm/template/TemplateTestBase.java +++ b/scm-webapp/src/test/java/sonia/scm/template/TemplateTestBase.java @@ -58,6 +58,8 @@ public abstract class TemplateTestBase * * * @return + * + * @throws IOException */ public abstract Template getFailureTemplate() throws IOException; @@ -101,6 +103,14 @@ public abstract class TemplateTestBase execute(template); } + /** + * Method description + * + * + * @param env + */ + protected void prepareEnv(Map env) {} + /** * Method description * @@ -113,10 +123,12 @@ public abstract class TemplateTestBase */ private String execute(Template template) throws IOException { - Map env = Maps.newHashMap(); + Map env = Maps.newHashMap(); env.put("name", "marvin"); + prepareEnv(env); + StringWriter writer = new StringWriter(); template.execute(writer, env); diff --git a/scm-webapp/src/test/resources/sonia/scm/template/003.mustache b/scm-webapp/src/test/resources/sonia/scm/template/003.mustache index a2338b1b4a..9fca7c7fdf 100644 --- a/scm-webapp/src/test/resources/sonia/scm/template/003.mustache +++ b/scm-webapp/src/test/resources/sonia/scm/template/003.mustache @@ -1 +1 @@ -Hello {{/name}}! \ No newline at end of file +Hello {{test}}! \ No newline at end of file