You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/09/30 09:35:06 UTC

[3/7] incubator-freemarker git commit: TemplateTest now detects bugs where the output Writer is closed to early

TemplateTest now detects bugs where the output Writer is closed to early


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/560247a0
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/560247a0
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/560247a0

Branch: refs/heads/2.3
Commit: 560247a0928cd31176dfda172ed2cbebbdcfd426
Parents: f27310b
Author: ddekany <dd...@apache.org>
Authored: Thu Sep 28 01:17:18 2017 +0200
Committer: ddekany <dd...@apache.org>
Committed: Thu Sep 28 01:17:18 2017 +0200

----------------------------------------------------------------------
 src/test/java/freemarker/test/TemplateTest.java | 38 ++++++++++++++++++--
 1 file changed, 35 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/560247a0/src/test/java/freemarker/test/TemplateTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/freemarker/test/TemplateTest.java b/src/test/java/freemarker/test/TemplateTest.java
index 99e2db1..9377a45 100644
--- a/src/test/java/freemarker/test/TemplateTest.java
+++ b/src/test/java/freemarker/test/TemplateTest.java
@@ -22,6 +22,7 @@ package freemarker.test;
 import static org.hamcrest.Matchers.*;
 import static org.junit.Assert.*;
 
+import java.io.FilterWriter;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.StringWriter;
@@ -145,9 +146,40 @@ public abstract class TemplateTest {
     
     protected String getOutput(Template t) throws TemplateException, IOException {
         StringWriter out = new StringWriter();
-        t.process(getDataModel(), out);
-        String actualOut = out.toString();
-        return actualOut;
+        t.process(getDataModel(), new FilterWriter(out) {
+            private boolean closed;
+
+            @Override
+            public void write(int c) throws IOException {
+                checkNotClosed();
+                super.write(c);
+            }
+
+            @Override
+            public void write(char[] cbuf, int off, int len) throws IOException {
+                checkNotClosed();
+                super.write(cbuf, off, len);
+            }
+
+            @Override
+            public void write(String str, int off, int len) throws IOException {
+                checkNotClosed();
+                super.write(str, off, len);
+            }
+
+            @Override
+            public void close() throws IOException {
+                super.close();
+                closed = true;
+            }
+            
+            private void checkNotClosed() throws IOException {
+                if (closed) {
+                    throw new IOException("Writer is already closed");
+                }
+            }
+        });
+        return out.toString();
     }
     
     protected Configuration createConfiguration() throws Exception {