http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/DateFormatTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/DateFormatTest.java b/src/test/java/org/apache/freemarker/core/DateFormatTest.java index 4fdb1c7..049655f 100644 --- a/src/test/java/org/apache/freemarker/core/DateFormatTest.java +++ b/src/test/java/org/apache/freemarker/core/DateFormatTest.java @@ -44,7 +44,7 @@ import org.apache.freemarker.core.valueformat.TemplateDateFormatFactory; import org.apache.freemarker.core.valueformat.UndefinedCustomFormatException; import org.apache.freemarker.core.valueformat.impl.AliasTemplateDateFormatFactory; import org.apache.freemarker.test.TemplateTest; -import org.junit.Before; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; import com.google.common.collect.ImmutableMap; @@ -55,20 +55,22 @@ public class DateFormatTest extends TemplateTest { private static long T = 1441540800000L; private static TemplateDateModel TM = new SimpleDate(new Date(T), TemplateDateModel.DATETIME); - @Before - public void setup() { - Configuration cfg = getConfiguration(); - cfg.setIncompatibleImprovements(Configuration.VERSION_3_0_0); - cfg.setLocale(Locale.US); - cfg.setTimeZone(TimeZone.getTimeZone("GMT+01:00")); - cfg.setSQLDateAndTimeTimeZone(TimeZone.getTimeZone("UTC")); - - cfg.setCustomDateFormats(ImmutableMap.of( - "epoch", EpochMillisTemplateDateFormatFactory.INSTANCE, - "loc", LocAndTZSensitiveTemplateDateFormatFactory.INSTANCE, - "div", EpochMillisDivTemplateDateFormatFactory.INSTANCE, - "appMeta", AppMetaTemplateDateFormatFactory.INSTANCE, - "htmlIso", HTMLISOTemplateDateFormatFactory.INSTANCE)); + private TestConfigurationBuilder createConfigurationBuilder() { + return new TestConfigurationBuilder() + .locale(Locale.US) + .timeZone(TimeZone.getTimeZone("GMT+01:00")) + .sqlDateAndTimeTimeZone(TimeZone.getTimeZone("UTC")) + .customDateFormats(ImmutableMap.of( + "epoch", EpochMillisTemplateDateFormatFactory.INSTANCE, + "loc", LocAndTZSensitiveTemplateDateFormatFactory.INSTANCE, + "div", EpochMillisDivTemplateDateFormatFactory.INSTANCE, + "appMeta", AppMetaTemplateDateFormatFactory.INSTANCE, + "htmlIso", HTMLISOTemplateDateFormatFactory.INSTANCE)); + } + + @Override + protected Configuration createDefaultConfiguration() throws Exception { + return createConfigurationBuilder().build(); } @Test @@ -77,14 +79,14 @@ public class DateFormatTest extends TemplateTest { assertOutput( "${d?string.@epoch} ${d?string.@epoch} <#setting locale='de_DE'>${d?string.@epoch}", "123456789 123456789 123456789"); - - getConfiguration().setDateTimeFormat("@epoch"); + + setConfigurationWithDateTimeFormat("@epoch"); assertOutput( "<#assign d = d?datetime>" + "${d} ${d?string} <#setting locale='de_DE'>${d}", "123456789 123456789 123456789"); - - getConfiguration().setDateTimeFormat("@htmlIso"); + + setConfigurationWithDateTimeFormat("@htmlIso"); assertOutput( "<#assign d = d?datetime>" + "${d} ${d?string} <#setting locale='de_DE'>${d}", @@ -105,8 +107,8 @@ public class DateFormatTest extends TemplateTest { "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00 " + "123456789@de_DE:GMT+01:00 123456789@de_DE:GMT+01:00 " + "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00"); - - getConfiguration().setDateTimeFormat("@loc"); + + setConfigurationWithDateTimeFormat("@loc"); assertOutput( "<#assign d = d?datetime>" + "${d} ${d?string} " @@ -122,7 +124,7 @@ public class DateFormatTest extends TemplateTest { @Test public void testTimeZoneChange() throws Exception { addToDataModel("d", new Date(123456789)); - getConfiguration().setDateTimeFormat("iso"); + setConfigurationWithDateTimeFormat("iso"); assertOutput( "${d?string.@loc} ${d?string.@loc} ${d?datetime?isoLocal} " + "<#setting timeZone='GMT+02:00'>" @@ -132,8 +134,8 @@ public class DateFormatTest extends TemplateTest { "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00 1970-01-02T11:17:36+01:00 " + "123456789@en_US:GMT+02:00 123456789@en_US:GMT+02:00 1970-01-02T12:17:36+02:00 " + "123456789@en_US:GMT+01:00 123456789@en_US:GMT+01:00 1970-01-02T11:17:36+01:00"); - - getConfiguration().setDateTimeFormat("@loc"); + + setConfigurationWithDateTimeFormat("@loc"); assertOutput( "<#assign d = d?datetime>" + "${d} ${d?string} " @@ -148,31 +150,41 @@ public class DateFormatTest extends TemplateTest { @Test public void testWrongFormatStrings() throws Exception { - getConfiguration().setDateTimeFormat("x1"); + setConfigurationWithDateTimeFormat("x1"); assertErrorContains("${.now}", "\"x1\"", "'x'"); assertErrorContains("${.now?string}", "\"x1\"", "'x'"); - getConfiguration().setDateTimeFormat("short"); + setConfigurationWithDateTimeFormat("short"); assertErrorContains("${.now?string('x2')}", "\"x2\"", "'x'"); + assertErrorContains("${.now?string('[wrong]')}", "format string", "[wrong]"); + + setConfiguration(createConfigurationBuilder() + .dateFormat("[wrong d]") + .dateTimeFormat("[wrong dt]") + .timeFormat("[wrong t]") + .build()); + assertErrorContains("${.now?date}", "\"date_format\"", "[wrong d]"); + assertErrorContains("${.now?datetime}", "\"datetime_format\"", "[wrong dt]"); + assertErrorContains("${.now?time}", "\"time_format\"", "[wrong t]"); } @Test public void testCustomParameterized() throws Exception { Configuration cfg = getConfiguration(); addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATETIME)); - cfg.setDateTimeFormat("@div 1000"); + setConfigurationWithDateTimeFormat("@div 1000"); assertOutput("${d}", "12345"); assertOutput("${d?string}", "12345"); assertOutput("${d?string.@div_100}", "123456"); assertErrorContains("${d?string.@div_xyz}", "\"@div_xyz\"", "\"xyz\""); - cfg.setDateTimeFormat("@div"); + setConfigurationWithDateTimeFormat("@div"); assertErrorContains("${d}", "\"datetime_format\"", "\"@div\"", "format parameter is required"); } @Test public void testUnknownCustomFormat() throws Exception { { - getConfiguration().setDateTimeFormat("@noSuchFormat"); + setConfigurationWithDateTimeFormat("@noSuchFormat"); Throwable exc = assertErrorContains( "${.now}", "\"@noSuchFormat\"", "\"noSuchFormat\"", "\"datetime_format\""); @@ -180,26 +192,30 @@ public class DateFormatTest extends TemplateTest { } { - getConfiguration().setDateFormat("@noSuchFormatD"); + setConfiguration(createConfigurationBuilder().dateFormat("@noSuchFormatD").build()); assertErrorContains( "${.now?date}", "\"@noSuchFormatD\"", "\"noSuchFormatD\"", "\"date_format\""); } { - getConfiguration().setTimeFormat("@noSuchFormatT"); + setConfiguration(createConfigurationBuilder().timeFormat("@noSuchFormatT").build()); assertErrorContains( "${.now?time}", "\"@noSuchFormatT\"", "\"noSuchFormatT\"", "\"time_format\""); } { - getConfiguration().setDateTimeFormat(""); + setConfigurationWithDateTimeFormat(""); Throwable exc = assertErrorContains("${.now?string('@noSuchFormat2')}", "\"@noSuchFormat2\"", "\"noSuchFormat2\""); assertThat(exc.getCause(), instanceOf(UndefinedCustomFormatException.class)); } } - + + private void setConfigurationWithDateTimeFormat(String formatString) { + setConfiguration(createConfigurationBuilder().dateTimeFormat(formatString).build()); + } + @Test public void testNullInModel() throws Exception { addToDataModel("d", new MutableTemplateDateModel()); @@ -209,37 +225,40 @@ public class DateFormatTest extends TemplateTest { @Test public void testIcIAndEscaping() throws Exception { - Configuration cfg = getConfiguration(); addToDataModel("d", new SimpleDate(new Date(12345678L), TemplateDateModel.DATETIME)); - cfg.setDateTimeFormat("@epoch"); + setConfigurationWithDateTimeFormat("@epoch"); assertOutput("${d}", "12345678"); - cfg.setDateTimeFormat("'@'yyyy"); + setConfigurationWithDateTimeFormat("'@'yyyy"); assertOutput("${d}", "@1970"); - cfg.setDateTimeFormat("@@yyyy"); + setConfigurationWithDateTimeFormat("@@yyyy"); assertOutput("${d}", "@@1970"); - - cfg.setCustomDateFormats(Collections.<String, TemplateDateFormatFactory>emptyMap()); - - cfg.setDateTimeFormat("@epoch"); + + setConfiguration(createConfigurationBuilder() + .customDateFormats(Collections.<String, TemplateDateFormatFactory>emptyMap()) + .dateTimeFormat("@epoch") + .build()); assertErrorContains("${d}", "custom", "\"epoch\""); } @Test public void testEnvironmentGetters() throws Exception { - Template t = new Template(null, "", getConfiguration()); - Environment env = t.createProcessingEnvironment(null, null); - - Configuration cfg = getConfiguration(); - String dateFormatStr = "yyyy.MM.dd. (Z)"; String timeFormatStr = "HH:mm"; String dateTimeFormatStr = "yyyy.MM.dd. HH:mm"; - cfg.setDateFormat(dateFormatStr); - cfg.setTimeFormat(timeFormatStr); - cfg.setDateTimeFormat(dateTimeFormatStr); + + setConfiguration(createConfigurationBuilder() + .dateFormat(dateFormatStr) + .timeFormat(timeFormatStr) + .dateTimeFormat(dateTimeFormatStr) + .build()); + + Configuration cfg = getConfiguration(); + + Template t = new Template(null, "", cfg); + Environment env = t.createProcessingEnvironment(null, null); - // Test that values are coming from the cache if possible + // Test that values are coming from the cache if possible for (Class dateClass : new Class[] { Date.class, Timestamp.class, java.sql.Date.class, Time.class } ) { for (int dateType : new int[] { TemplateDateModel.DATE, TemplateDateModel.TIME, TemplateDateModel.DATETIME }) { @@ -314,32 +333,25 @@ public class DateFormatTest extends TemplateTest { assertEquals("2015.09.06. 13:00 Sunday", format2.formatToPlainText(TM)); assertSame(format1, format2); } - - addToDataModel("d", TM); - assertErrorContains("${d?string('[wrong]')}", "format string", "[wrong]"); - cfg.setDateFormat("[wrong d]"); - cfg.setDateTimeFormat("[wrong dt]"); - cfg.setTimeFormat("[wrong t]"); - assertErrorContains("${d?date}", "\"date_format\"", "[wrong d]"); - assertErrorContains("${d?datetime}", "\"datetime_format\"", "[wrong dt]"); - assertErrorContains("${d?time}", "\"time_format\"", "[wrong t]"); } - + @Test - public void testAlieses() throws Exception { - Configuration cfg = getConfiguration(); - cfg.setCustomDateFormats(ImmutableMap.of( - "d", new AliasTemplateDateFormatFactory("yyyy-MMM-dd"), - "m", new AliasTemplateDateFormatFactory("yyyy-MMM"), - "epoch", EpochMillisTemplateDateFormatFactory.INSTANCE)); - - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.setCustomDateFormats(ImmutableMap.of( - "m", new AliasTemplateDateFormatFactory("yyyy-MMMM"), - "i", new AliasTemplateDateFormatFactory("@epoch"))); - cfg.setTemplateConfigurations(new ConditionalTemplateConfigurationFactory( - new FileNameGlobMatcher("*2*"), tcb.build())); - + public void testAliases() throws Exception { + setConfiguration(createConfigurationBuilder() + .customDateFormats(ImmutableMap.of( + "d", new AliasTemplateDateFormatFactory("yyyy-MMM-dd"), + "m", new AliasTemplateDateFormatFactory("yyyy-MMM"), + "epoch", EpochMillisTemplateDateFormatFactory.INSTANCE)) + .templateConfigurations( + new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("*2*"), + new TemplateConfiguration.Builder() + .customDateFormats(ImmutableMap.of( + "m", new AliasTemplateDateFormatFactory("yyyy-MMMM"), + "i", new AliasTemplateDateFormatFactory("@epoch"))) + .build())) + .build()); + addToDataModel("d", TM); String commonFtl = "${d?string.@d} ${d?string.@m} " + "<#setting locale='fr_FR'>${d?string.@m} " @@ -353,15 +365,17 @@ public class DateFormatTest extends TemplateTest { } @Test - public void testAlieses2() throws Exception { - Configuration cfg = getConfiguration(); - cfg.setCustomDateFormats(ImmutableMap.of( - "d", new AliasTemplateDateFormatFactory("yyyy-MMM", - ImmutableMap.of( - new Locale("en"), "yyyy-MMM'_en'", - Locale.UK, "yyyy-MMM'_en_GB'", - Locale.FRANCE, "yyyy-MMM'_fr_FR'")))); - cfg.setDateTimeFormat("@d"); + public void testAliases2() throws Exception { + setConfiguration( + createConfigurationBuilder() + .customDateFormats(ImmutableMap.of( + "d", new AliasTemplateDateFormatFactory("yyyy-MMM", + ImmutableMap.of( + new Locale("en"), "yyyy-MMM'_en'", + Locale.UK, "yyyy-MMM'_en_GB'", + Locale.FRANCE, "yyyy-MMM'_fr_FR'")))) + .dateTimeFormat("@d") + .build()); addToDataModel("d", TM); assertOutput( "<#setting locale='en_US'>${d} " @@ -377,11 +391,13 @@ public class DateFormatTest extends TemplateTest { */ @Test public void testZeroArgDateBI() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - cfg.setDateFormat("@epoch"); - cfg.setDateTimeFormat("@epoch"); - cfg.setTimeFormat("@epoch"); - + setConfiguration( + createConfigurationBuilder() + .dateFormat("@epoch") + .dateTimeFormat("@epoch") + .timeFormat("@epoch") + .build()); + addToDataModel("t", String.valueOf(T)); assertOutput( @@ -397,11 +413,13 @@ public class DateFormatTest extends TemplateTest { @Test public void testAppMetaRoundtrip() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - cfg.setDateFormat("@appMeta"); - cfg.setDateTimeFormat("@appMeta"); - cfg.setTimeFormat("@appMeta"); - + setConfiguration( + createConfigurationBuilder() + .dateFormat("@appMeta") + .dateTimeFormat("@appMeta") + .timeFormat("@appMeta") + .build()); + addToDataModel("t", String.valueOf(T) + "/foo"); assertOutput(
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java b/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java index 15f96dd..29220c4 100644 --- a/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java +++ b/src/test/java/org/apache/freemarker/core/DirectiveCallPlaceTest.java @@ -36,12 +36,7 @@ import org.apache.freemarker.test.TemplateTest; import org.junit.Test; public class DirectiveCallPlaceTest extends TemplateTest { - - @Override - protected Configuration createConfiguration() { - return new Configuration(Configuration.VERSION_3_0_0); - } - + @Test public void testCustomDataBasics() throws IOException, TemplateException { addTemplate( http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/EncodingOverrideTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/EncodingOverrideTest.java b/src/test/java/org/apache/freemarker/core/EncodingOverrideTest.java index ece57c1..b1acead 100644 --- a/src/test/java/org/apache/freemarker/core/EncodingOverrideTest.java +++ b/src/test/java/org/apache/freemarker/core/EncodingOverrideTest.java @@ -27,6 +27,7 @@ import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.Collections; +import org.apache.freemarker.core.templateresolver.impl.ClassTemplateLoader; import org.junit.Test; public class EncodingOverrideTest { @@ -52,10 +53,10 @@ public class EncodingOverrideTest { } private Configuration createConfig(Charset charset) { - Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); - cfg.setClassForTemplateLoading(EncodingOverrideTest.class, ""); - cfg.setSourceEncoding(charset); - return cfg; + return new Configuration.Builder(Configuration.VERSION_3_0_0) + .templateLoader(new ClassTemplateLoader(EncodingOverrideTest.class, "")) + .sourceEncoding(charset) + .build(); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java b/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java index a82b29c..b79559c 100644 --- a/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java +++ b/src/test/java/org/apache/freemarker/core/EnvironmentGetTemplateVariantsTest.java @@ -32,6 +32,7 @@ import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.model.impl.SimpleScalar; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; public class EnvironmentGetTemplateVariantsTest extends TemplateTest { @@ -187,10 +188,10 @@ public class EnvironmentGetTemplateVariantsTest extends TemplateTest { } private Configuration createConfiguration(Version iciVersion) { - Configuration cfg = new Configuration(iciVersion); - cfg.setTemplateLoader(TEMPLATES); - cfg.setWhitespaceStripping(false); - return cfg; + return new TestConfigurationBuilder(iciVersion) + .templateLoader(TEMPLATES) + .whitespaceStripping(false) + .build(); } @Override http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/ExceptionTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/ExceptionTest.java b/src/test/java/org/apache/freemarker/core/ExceptionTest.java index e70869e..19c3b6e 100644 --- a/src/test/java/org/apache/freemarker/core/ExceptionTest.java +++ b/src/test/java/org/apache/freemarker/core/ExceptionTest.java @@ -34,6 +34,7 @@ import java.util.Locale; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; import org.apache.freemarker.core.util._NullWriter; +import org.apache.freemarker.test.TestConfigurationBuilder; import junit.framework.TestCase; public class ExceptionTest extends TestCase { @@ -43,9 +44,8 @@ public class ExceptionTest extends TestCase { } public void testParseExceptionSerializable() throws IOException, ClassNotFoundException { - Configuration cfg = new Configuration(); try { - new Template("<string>", new StringReader("<@>"), cfg); + new Template(null, new StringReader("<@>"), new TestConfigurationBuilder().build()); fail(); } catch (ParseException e) { ByteArrayOutputStream out = new ByteArrayOutputStream(); @@ -55,8 +55,8 @@ public class ExceptionTest extends TestCase { } public void testTemplateErrorSerializable() throws IOException, ClassNotFoundException { - Configuration cfg = new Configuration(); - Template tmp = new Template("<string>", new StringReader("${noSuchVar}"), cfg); + Template tmp = new Template(null, new StringReader("${noSuchVar}"), + new TestConfigurationBuilder().build()); try { tmp.process(Collections.EMPTY_MAP, new StringWriter()); fail(); @@ -69,13 +69,11 @@ public class ExceptionTest extends TestCase { @SuppressWarnings("boxing") public void testTemplateExceptionLocationInformation() throws IOException { - Configuration cfg = new Configuration(); - StringTemplateLoader tl = new StringTemplateLoader(); tl.putTemplate("foo_en.ftl", "\n\nxxx${noSuchVariable}"); - cfg.setTemplateLoader(tl); - - Template t = cfg.getTemplate("foo.ftl", Locale.US); + + Template t = new TestConfigurationBuilder().templateLoader(tl).build() + .getTemplate("foo.ftl", Locale.US); try { t.process(null, _NullWriter.INSTANCE); fail(); @@ -94,14 +92,12 @@ public class ExceptionTest extends TestCase { @SuppressWarnings("cast") public void testParseExceptionLocationInformation() throws IOException { - Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); - StringTemplateLoader tl = new StringTemplateLoader(); tl.putTemplate("foo_en.ftl", "\n\nxxx<#noSuchDirective>"); - cfg.setTemplateLoader(tl); - + try { - cfg.getTemplate("foo.ftl", Locale.US); + new TestConfigurationBuilder().templateLoader(tl).build() + .getTemplate("foo.ftl", Locale.US); fail(); } catch (ParseException e) { System.out.println(e.getMessage()); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/GetSourceTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/GetSourceTest.java b/src/test/java/org/apache/freemarker/core/GetSourceTest.java index 81feec6..1462bfc 100644 --- a/src/test/java/org/apache/freemarker/core/GetSourceTest.java +++ b/src/test/java/org/apache/freemarker/core/GetSourceTest.java @@ -20,30 +20,30 @@ package org.apache.freemarker.core; import static org.junit.Assert.*; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; public class GetSourceTest { @Test public void testGetSource() throws Exception { - Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); - { // Note: Default tab size is 8. - Template t = new Template(null, "a\n\tb\nc", cfg); + Template t = new Template(null, "a\n\tb\nc", + new TestConfigurationBuilder().build()); // A historical quirk we keep for B.C.: it repaces tabs with spaces. assertEquals("a\n b\nc", t.getSource(1, 1, 1, 3)); } { - cfg.setTabSize(4); - Template t = new Template(null, "a\n\tb\nc", cfg); + Template t = new Template(null, "a\n\tb\nc", + new TestConfigurationBuilder().tabSize(4).build()); assertEquals("a\n b\nc", t.getSource(1, 1, 1, 3)); } { - cfg.setTabSize(1); - Template t = new Template(null, "a\n\tb\nc", cfg); + Template t = new Template(null, "a\n\tb\nc", + new TestConfigurationBuilder().tabSize(1).build()); // If tab size is 1, it behaves as it always should have: it keeps the tab. assertEquals("a\n\tb\nc", t.getSource(1, 1, 1, 3)); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/HeaderParsingTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/HeaderParsingTest.java b/src/test/java/org/apache/freemarker/core/HeaderParsingTest.java index 87bae62..6f8851d 100644 --- a/src/test/java/org/apache/freemarker/core/HeaderParsingTest.java +++ b/src/test/java/org/apache/freemarker/core/HeaderParsingTest.java @@ -22,16 +22,14 @@ package org.apache.freemarker.core; import java.io.IOException; import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; public class HeaderParsingTest extends TemplateTest { - private final Configuration cfgStripWS = new Configuration(Configuration.VERSION_3_0_0); - private final Configuration cfgNoStripWS = new Configuration(Configuration.VERSION_3_0_0); - { - cfgNoStripWS.setWhitespaceStripping(false); - } - + private final Configuration cfgStripWS = new TestConfigurationBuilder().build(); + private final Configuration cfgNoStripWS = new TestConfigurationBuilder().whitespaceStripping(false).build(); + @Test public void test() throws IOException, TemplateException { assertOutput("<#ftl>text", "text", "text"); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/IncludeAndImportConfigurableLayersTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/IncludeAndImportConfigurableLayersTest.java b/src/test/java/org/apache/freemarker/core/IncludeAndImportConfigurableLayersTest.java index 7d37d95..738b4de 100644 --- a/src/test/java/org/apache/freemarker/core/IncludeAndImportConfigurableLayersTest.java +++ b/src/test/java/org/apache/freemarker/core/IncludeAndImportConfigurableLayersTest.java @@ -24,20 +24,26 @@ import java.io.StringWriter; import org.apache.freemarker.core.templateresolver.ConditionalTemplateConfigurationFactory; import org.apache.freemarker.core.templateresolver.FileNameGlobMatcher; -import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; -public class IncludeAndImportConfigurableLayersTest extends TemplateTest { +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + +public class IncludeAndImportConfigurableLayersTest { @Test public void test3LayerImportNoClashes() throws Exception { - Configuration cfg = getConfiguration(); - cfg.addAutoImport("t1", "t1.ftl"); - - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.addAutoImport("t2", "t2.ftl"); - cfg.setTemplateConfigurations( - new ConditionalTemplateConfigurationFactory(new FileNameGlobMatcher("main.ftl"), tcb.build())); + TestConfigurationBuilder cfgB = createConfigurationBuilder() + .autoImports(ImmutableMap.of("t1", "t1.ftl")) + .templateConfigurations( + new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("main.ftl"), + new TemplateConfiguration.Builder() + .autoImports(ImmutableMap.of("t2", "t2.ftl")) + .build())); + Configuration cfg = cfgB.build(); { Template t = cfg.getTemplate("main.ftl"); @@ -68,8 +74,9 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { assertEquals("In main2: t1;t3;", sw.toString()); } - cfg.removeAutoImport("t1"); - + cfgB.removeAutoImport("t1"); + cfg = cfgB.build(); + { Template t = cfg.getTemplate("main.ftl"); StringWriter sw = new StringWriter(); @@ -83,15 +90,18 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { @Test public void test3LayerImportClashes() throws Exception { - Configuration cfg = getConfiguration(); - cfg.addAutoImport("t1", "t1.ftl"); - cfg.addAutoImport("t2", "t2.ftl"); - cfg.addAutoImport("t3", "t3.ftl"); - - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.addAutoImport("t2", "t2b.ftl"); - cfg.setTemplateConfigurations( - new ConditionalTemplateConfigurationFactory(new FileNameGlobMatcher("main.ftl"), tcb.build())); + Configuration cfg = createConfigurationBuilder() + .autoImports(ImmutableMap.of( + "t1", "t1.ftl", + "t2", "t2.ftl", + "t3", "t3.ftl")) + .templateConfigurations( + new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("main.ftl"), + new TemplateConfiguration.Builder() + .autoImports(ImmutableMap.of("t2", "t2b.ftl")) + .build())) + .build(); { Template t = cfg.getTemplate("main.ftl"); @@ -125,13 +135,16 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { @Test public void test3LayerIncludesNoClashes() throws Exception { - Configuration cfg = getConfiguration(); - cfg.addAutoInclude("t1.ftl"); + TestConfigurationBuilder cfgB = createConfigurationBuilder() + .autoIncludes(ImmutableList.of("t1.ftl")) + .templateConfigurations( + new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("main.ftl"), + new TemplateConfiguration.Builder() + .autoIncludes(ImmutableList.of("t2.ftl")) + .build())); - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.addAutoInclude("t2.ftl"); - cfg.setTemplateConfigurations( - new ConditionalTemplateConfigurationFactory(new FileNameGlobMatcher("main.ftl"), tcb.build())); + Configuration cfg = cfgB.build(); { Template t = cfg.getTemplate("main.ftl"); @@ -162,8 +175,9 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { assertEquals("T1;T3;In main2: t1;t3;", sw.toString()); } - cfg.removeAutoInclude("t1.ftl"); - + cfgB.removeAutoInclude("t1.ftl"); + cfg = cfgB.build(); + { Template t = cfg.getTemplate("main.ftl"); StringWriter sw = new StringWriter(); @@ -177,15 +191,17 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { @Test public void test3LayerIncludeClashes() throws Exception { - Configuration cfg = getConfiguration(); - cfg.addAutoInclude("t1.ftl"); - cfg.addAutoInclude("t2.ftl"); - cfg.addAutoInclude("t3.ftl"); - - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.addAutoInclude("t2.ftl"); - cfg.setTemplateConfigurations( - new ConditionalTemplateConfigurationFactory(new FileNameGlobMatcher("main.ftl"), tcb.build())); + Configuration cfg = createConfigurationBuilder() + .autoIncludes(ImmutableList.of( + "t1.ftl", + "t2.ftl", + "t3.ftl")) + .templateConfigurations(new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("main.ftl"), + new TemplateConfiguration.Builder() + .autoIncludes(ImmutableList.of("t2.ftl")) + .build())) + .build(); { Template t = cfg.getTemplate("main.ftl"); @@ -229,15 +245,15 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { @Test public void test3LayerIncludesClashes2() throws Exception { - Configuration cfg = getConfiguration(); - cfg.addAutoInclude("t1.ftl"); - cfg.addAutoInclude("t1.ftl"); - - TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - tcb.addAutoInclude("t2.ftl"); - tcb.addAutoInclude("t2.ftl"); - cfg.setTemplateConfigurations( - new ConditionalTemplateConfigurationFactory(new FileNameGlobMatcher("main.ftl"), tcb.build())); + Configuration cfg = createConfigurationBuilder() + .autoIncludes(ImmutableList.of("t1.ftl", "t1.ftl")) + .templateConfigurations( + new ConditionalTemplateConfigurationFactory( + new FileNameGlobMatcher("main.ftl"), + new TemplateConfiguration.Builder() + .autoIncludes(ImmutableList.of("t2.ftl", "t2.ftl")) + .build())) + .build(); { Template t = cfg.getTemplate("main.ftl"); @@ -254,39 +270,45 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { } @Test - public void test3LayerLazyness() throws Exception { + public void test3LayerLaziness() throws Exception { for (Class<?> layer : new Class<?>[] { Configuration.class, Template.class, Environment.class }) { - test3LayerLazyness(layer, null, null, false, "t1;t2;"); - test3LayerLazyness(layer, null, null, true, "t1;t2;"); - test3LayerLazyness(layer, null, false, true, "t1;t2;"); - test3LayerLazyness(layer, null, true, true, "t2;"); + test3LayerLaziness(layer, null, null, false, "t1;t2;"); + test3LayerLaziness(layer, null, null, true, "t1;t2;"); + test3LayerLaziness(layer, null, false, true, "t1;t2;"); + test3LayerLaziness(layer, null, true, true, "t2;"); - test3LayerLazyness(layer, false, null, false, "t1;t2;"); - test3LayerLazyness(layer, false, null, true, "t1;t2;"); - test3LayerLazyness(layer, false, false, true, "t1;t2;"); - test3LayerLazyness(layer, false, true, true, "t2;"); + test3LayerLaziness(layer, false, null, false, "t1;t2;"); + test3LayerLaziness(layer, false, null, true, "t1;t2;"); + test3LayerLaziness(layer, false, false, true, "t1;t2;"); + test3LayerLaziness(layer, false, true, true, "t2;"); - test3LayerLazyness(layer, true, null, false, ""); - test3LayerLazyness(layer, true, null, true, ""); - test3LayerLazyness(layer, true, false, true, "t1;"); - test3LayerLazyness(layer, true, true, true, ""); + test3LayerLaziness(layer, true, null, false, ""); + test3LayerLaziness(layer, true, null, true, ""); + test3LayerLaziness(layer, true, false, true, "t1;"); + test3LayerLaziness(layer, true, true, true, ""); } } - private void test3LayerLazyness( + private void test3LayerLaziness( Class<?> layer, Boolean lazyImports, Boolean lazyAutoImports, boolean setLazyAutoImports, String expectedOutput) throws Exception { - dropConfiguration(); - Configuration cfg = getConfiguration(); - cfg.addAutoImport("t1", "t1.ftl"); + Configuration cfg; + { + TestConfigurationBuilder cfgB = createConfigurationBuilder() + .autoImports(ImmutableMap.of("t1", "t1.ftl")); + if (layer == Configuration.class) { + setLazinessOfConfigurable(cfgB, lazyImports, lazyAutoImports, setLazyAutoImports); + } + cfg = cfgB.build(); + } TemplateConfiguration tc; if (layer == Template.class) { TemplateConfiguration.Builder tcb = new TemplateConfiguration.Builder(); - setLazynessOfConfigurable(tcb, lazyImports, lazyAutoImports, setLazyAutoImports); + setLazinessOfConfigurable(tcb, lazyImports, lazyAutoImports, setLazyAutoImports); tc = tcb.build(); } else { tc = null; @@ -294,21 +316,17 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { Template t = new Template(null, "<#import 't2.ftl' as t2>${loaded!}", cfg, tc); StringWriter sw = new StringWriter(); - Environment env = t.createProcessingEnvironment(null, sw); - if (layer == Configuration.class) { - setLazynessOfConfigurable(cfg, lazyImports, lazyAutoImports, setLazyAutoImports); - } else if (layer == Environment.class) { - setLazynessOfConfigurable(env, lazyImports, lazyAutoImports, setLazyAutoImports); - } else if (layer != Template.class) { - throw new IllegalArgumentException(); + Environment env = t.createProcessingEnvironment(null, sw); + if (layer == Environment.class) { + setLazinessOfConfigurable(env, lazyImports, lazyAutoImports, setLazyAutoImports); } env.process(); assertEquals(expectedOutput, sw.toString()); } - private void setLazynessOfConfigurable( + private void setLazinessOfConfigurable( MutableProcessingConfiguration<?> cfg, Boolean lazyImports, Boolean lazyAutoImports, boolean setLazyAutoImports) { if (lazyImports != null) { @@ -319,21 +337,18 @@ public class IncludeAndImportConfigurableLayersTest extends TemplateTest { } } - @Override - protected Configuration createConfiguration() throws Exception { - return new Configuration(Configuration.VERSION_3_0_0); - } + private TestConfigurationBuilder createConfigurationBuilder() { + StringTemplateLoader loader = new StringTemplateLoader(); + loader.putTemplate("main.ftl", "In main: ${loaded}"); + loader.putTemplate("main2.ftl", "In main2: ${loaded}"); + loader.putTemplate("t1.ftl", "<#global loaded = (loaded!) + 't1;'>T1;"); + loader.putTemplate("t2.ftl", "<#global loaded = (loaded!) + 't2;'>T2;"); + loader.putTemplate("t3.ftl", "<#global loaded = (loaded!) + 't3;'>T3;"); + loader.putTemplate("t1b.ftl", "<#global loaded = (loaded!) + 't1b;'>T1b;"); + loader.putTemplate("t2b.ftl", "<#global loaded = (loaded!) + 't2b;'>T2b;"); + loader.putTemplate("t3b.ftl", "<#global loaded = (loaded!) + 't3b;'>T3b;"); - @Override - protected void addCommonTemplates() { - addTemplate("main.ftl", "In main: ${loaded}"); - addTemplate("main2.ftl", "In main2: ${loaded}"); - addTemplate("t1.ftl", "<#global loaded = (loaded!) + 't1;'>T1;"); - addTemplate("t2.ftl", "<#global loaded = (loaded!) + 't2;'>T2;"); - addTemplate("t3.ftl", "<#global loaded = (loaded!) + 't3;'>T3;"); - addTemplate("t1b.ftl", "<#global loaded = (loaded!) + 't1b;'>T1b;"); - addTemplate("t2b.ftl", "<#global loaded = (loaded!) + 't2b;'>T2b;"); - addTemplate("t3b.ftl", "<#global loaded = (loaded!) + 't3b;'>T3b;"); + return new TestConfigurationBuilder().templateLoader(loader); } } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/IncludeAndImportTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/IncludeAndImportTest.java b/src/test/java/org/apache/freemarker/core/IncludeAndImportTest.java index d35003d..fa767ff 100644 --- a/src/test/java/org/apache/freemarker/core/IncludeAndImportTest.java +++ b/src/test/java/org/apache/freemarker/core/IncludeAndImportTest.java @@ -29,14 +29,17 @@ import org.apache.freemarker.core.Environment.LazilyInitializedNamespace; import org.apache.freemarker.core.Environment.Namespace; import org.apache.freemarker.core.model.WrappingTemplateModel; import org.apache.freemarker.test.TemplateTest; -import org.junit.Before; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; +import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; + @SuppressWarnings("boxing") public class IncludeAndImportTest extends TemplateTest { - @Before - public void setup() { + @Override + protected void addCommonTemplates() { addTemplate("inc1.ftl", "[inc1]<#global inc1Cnt = (inc1Cnt!0) + 1><#global history = (history!) + 'I'>"); addTemplate("inc2.ftl", "[inc2]"); addTemplate("inc3.ftl", "[inc3]"); @@ -90,10 +93,15 @@ public class IncludeAndImportTest extends TemplateTest { */ @Test public void autoIncludeAndAutoImport() throws IOException, TemplateException { - getConfiguration().addAutoInclude("inc1.ftl"); - getConfiguration().addAutoInclude("inc2.ftl"); - getConfiguration().addAutoImport("lib1", "lib1.ftl"); - getConfiguration().addAutoImport("lib2", "lib2CallsLib1.ftl"); + setConfiguration(new TestConfigurationBuilder() + .autoImports(ImmutableMap.of( + "lib1", "lib1.ftl", + "lib2", "lib2CallsLib1.ftl" + )) + .autoIncludes(ImmutableList.of( + "inc1.ftl", + "inc2.ftl")) + .build()); assertOutput( "<#include 'inc3.ftl'>[main] ${inc1Cnt}, ${history}, <@lib1.m/>, <@lib2.m/>", "[inc1][inc2][inc3][main] 1, L1L2I, In lib1, In lib2 (In lib1)"); @@ -130,7 +138,7 @@ public class IncludeAndImportTest extends TemplateTest { assertOutput(ftl, "In lib2, In lib1; L1L2L3"); - getConfiguration().setLazyImports(true); + setConfiguration(new TestConfigurationBuilder().lazyImports(true).build()); assertOutput(ftl, "In lib2, In lib1; L2L1"); assertOutput(ftlImports + "<@l3.m/>, " + ftlCalls, "In lib3 (In lib1), In lib2, In lib1; L3L1L2"); @@ -138,7 +146,7 @@ public class IncludeAndImportTest extends TemplateTest { @Test public void lazyImportAndLocale() throws IOException, TemplateException { - getConfiguration().setLazyImports(true); + setConfiguration(new TestConfigurationBuilder().lazyImports(true).build()); assertOutput("<#setting locale = 'de_DE'><#import 'lib.ftl' as lib>" + "[${history!}] " + "<#setting locale = 'en'>" @@ -148,47 +156,59 @@ public class IncludeAndImportTest extends TemplateTest { @Test public void lazyAutoImportSettings() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - cfg.addAutoImport("l1", "lib1.ftl"); - cfg.addAutoImport("l2", "lib2.ftl"); - cfg.addAutoImport("l3", "lib3.ftl"); - + TestConfigurationBuilder cfgB = new TestConfigurationBuilder() + .autoImports(ImmutableMap.of( + "l1", "lib1.ftl", + "l2", "lib2.ftl", + "l3", "lib3.ftl" + )); + String ftl = "<@l2.m/>, <@l1.m/>; ${history}"; String expectedEagerOutput = "In lib2, In lib1; L1L2L3"; String expecedLazyOutput = "In lib2, In lib1; L2L1"; - + + setConfiguration(cfgB.build()); assertOutput(ftl, expectedEagerOutput); - cfg.setLazyImports(true); + cfgB.setLazyImports(true); + setConfiguration(cfgB.build()); assertOutput(ftl, expecedLazyOutput); - cfg.setLazyImports(false); + cfgB.setLazyImports(false); + setConfiguration(cfgB.build()); assertOutput(ftl, expectedEagerOutput); - cfg.setLazyAutoImports(true); + cfgB.setLazyAutoImports(true); + setConfiguration(cfgB.build()); assertOutput(ftl, expecedLazyOutput); - cfg.setLazyAutoImports(null); + cfgB.setLazyAutoImports(null); + setConfiguration(cfgB.build()); assertOutput(ftl, expectedEagerOutput); - cfg.setLazyImports(true); - cfg.setLazyAutoImports(false); + cfgB.setLazyImports(true); + cfgB.setLazyAutoImports(false); + setConfiguration(cfgB.build()); assertOutput(ftl, expectedEagerOutput); } @Test public void lazyAutoImportMixedWithManualImport() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - cfg.addAutoImport("l1", "lib1.ftl"); - cfg.addAutoImport("l2", "/./lib2.ftl"); - cfg.addAutoImport("l3", "lib3.ftl"); - cfg.setLazyAutoImports(true); + TestConfigurationBuilder cfgB = new TestConfigurationBuilder() + .autoImports(ImmutableMap.of( + "l1", "lib1.ftl", + "l2", "/./lib2.ftl", + "l3", "lib3.ftl")) + .lazyAutoImports(true); String ftl = "<@l2.m/>, <@l1.m/>; ${history}"; String expectOutputWithoutHistory = "In lib2, In lib1; "; String expecedOutput = expectOutputWithoutHistory + "L2L1"; - + + setConfiguration(cfgB.build()); assertOutput(ftl, expecedOutput); assertOutput("<#import 'lib1.ftl' as l1>" + ftl, expectOutputWithoutHistory + "L1L2"); assertOutput("<#import './x/../lib1.ftl' as l1>" + ftl, expectOutputWithoutHistory + "L1L2"); assertOutput("<#import 'lib2.ftl' as l2>" + ftl, expecedOutput); assertOutput("<#import 'lib3.ftl' as l3>" + ftl, expectOutputWithoutHistory + "L3L2L1"); - cfg.setLazyImports(true); + + cfgB.setLazyImports(true); + setConfiguration(cfgB.build()); assertOutput("<#import 'lib1.ftl' as l1>" + ftl, expecedOutput); assertOutput("<#import './x/../lib1.ftl' as l1>" + ftl, expecedOutput); assertOutput("<#import 'lib2.ftl' as l2>" + ftl, expecedOutput); @@ -197,12 +217,14 @@ public class IncludeAndImportTest extends TemplateTest { @Test public void lazyImportErrors() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - cfg.setLazyImports(true); - + TestConfigurationBuilder cfgB = new TestConfigurationBuilder(); + cfgB.setLazyImports(true); + + setConfiguration(cfgB.build()); assertOutput("<#import 'noSuchTemplate.ftl' as wrong>x", "x"); - cfg.addAutoImport("wrong", "noSuchTemplate.ftl"); + cfgB.addAutoImport("wrong", "noSuchTemplate.ftl"); + setConfiguration(cfgB.build()); assertOutput("x", "x"); try { http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/IncudeFromNamelessTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/IncudeFromNamelessTest.java b/src/test/java/org/apache/freemarker/core/IncudeFromNamelessTest.java index b9848a5..f4908b8 100644 --- a/src/test/java/org/apache/freemarker/core/IncudeFromNamelessTest.java +++ b/src/test/java/org/apache/freemarker/core/IncudeFromNamelessTest.java @@ -24,6 +24,7 @@ import java.io.StringReader; import java.io.StringWriter; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; +import org.apache.freemarker.test.TestConfigurationBuilder; import junit.framework.TestCase; @@ -34,13 +35,13 @@ public class IncudeFromNamelessTest extends TestCase { } public void test() throws IOException, TemplateException { - Configuration cfg = new Configuration(); - StringTemplateLoader tl = new StringTemplateLoader(); - tl.putTemplate("i.ftl", "[i]"); - tl.putTemplate("sub/i.ftl", "[sub/i]"); - tl.putTemplate("import.ftl", "<#assign x = 1>"); - cfg.setTemplateLoader(tl); - + StringTemplateLoader loader = new StringTemplateLoader(); + loader.putTemplate("i.ftl", "[i]"); + loader.putTemplate("sub/i.ftl", "[sub/i]"); + loader.putTemplate("import.ftl", "<#assign x = 1>"); + + Configuration cfg = new TestConfigurationBuilder().templateLoader(loader).build(); + Template t = new Template(null, new StringReader( "<#include 'i.ftl'>\n" + "<#include '/i.ftl'>\n" http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/InterpretAndEvalTemplateNameTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/InterpretAndEvalTemplateNameTest.java b/src/test/java/org/apache/freemarker/core/InterpretAndEvalTemplateNameTest.java index 0d5e20b..ff5897f 100644 --- a/src/test/java/org/apache/freemarker/core/InterpretAndEvalTemplateNameTest.java +++ b/src/test/java/org/apache/freemarker/core/InterpretAndEvalTemplateNameTest.java @@ -22,6 +22,7 @@ import java.io.IOException; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; /** @@ -48,8 +49,8 @@ public class InterpretAndEvalTemplateNameTest extends TemplateTest { + "i{<@[r'" + getTemplateNames + " {<#include \"a.ftl\">','named_interpreted']?interpret />}}"); tl.putTemplate("sub/a.ftl", "In sub/a.ftl, " + getTemplateNames); tl.putTemplate("a.ftl", "In a.ftl"); - - getConfiguration().setTemplateLoader(tl); + + setConfiguration(new TestConfigurationBuilder().templateLoader(tl).build()); assertOutputForNamed("main.ftl", "c=main.ftl, m=main.ftl " http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/InterpretSettingInheritanceTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/InterpretSettingInheritanceTest.java b/src/test/java/org/apache/freemarker/core/InterpretSettingInheritanceTest.java index cd0a912..2d061d7 100644 --- a/src/test/java/org/apache/freemarker/core/InterpretSettingInheritanceTest.java +++ b/src/test/java/org/apache/freemarker/core/InterpretSettingInheritanceTest.java @@ -21,6 +21,7 @@ package org.apache.freemarker.core; import java.io.IOException; import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; /** @@ -40,21 +41,25 @@ public class InterpretSettingInheritanceTest extends TemplateTest { @Test public void tagSyntaxTest() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - - cfg.setTagSyntax(Configuration.ANGLE_BRACKET_TAG_SYNTAX); + setConfiguration(new TestConfigurationBuilder() + .tagSyntax(ParsingConfiguration.ANGLE_BRACKET_TAG_SYNTAX) + .build()); assertOutput(FTL_S_A_S, OUT_A_S_WHEN_SYNTAX_IS_A); assertOutput(FTL_S_S_A, OUT_S_A_WHEN_SYNTAX_IS_A); assertOutput(FTL_A_A_S, OUT_A_S_WHEN_SYNTAX_IS_A); assertOutput(FTL_A_S_A, OUT_S_A_WHEN_SYNTAX_IS_A); - - cfg.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX); + + setConfiguration(new TestConfigurationBuilder() + .tagSyntax(ParsingConfiguration.SQUARE_BRACKET_TAG_SYNTAX) + .build()); assertOutput(FTL_S_A_S, OUT_A_S_WHEN_SYNTAX_IS_S); assertOutput(FTL_S_S_A, OUT_S_A_WHEN_SYNTAX_IS_S); assertOutput(FTL_A_A_S, OUT_A_S_WHEN_SYNTAX_IS_S); assertOutput(FTL_A_S_A, OUT_S_A_WHEN_SYNTAX_IS_S); - - cfg.setTagSyntax(Configuration.AUTO_DETECT_TAG_SYNTAX); + + setConfiguration(new TestConfigurationBuilder() + .tagSyntax(ParsingConfiguration.AUTO_DETECT_TAG_SYNTAX) + .build()); assertOutput(FTL_S_A_S, OUT_A_S_WHEN_SYNTAX_IS_A); assertOutput(FTL_S_S_A, OUT_S_A_WHEN_SYNTAX_IS_S); assertOutput(FTL_A_A_S, OUT_A_S_WHEN_SYNTAX_IS_A); @@ -65,13 +70,17 @@ public class InterpretSettingInheritanceTest extends TemplateTest { @Test public void whitespaceStrippingTest() throws IOException, TemplateException { Configuration cfg = getConfiguration(); - - cfg.setWhitespaceStripping(true); + + setConfiguration(new TestConfigurationBuilder() + .whitespaceStripping(true) + .build()); assertOutput("<#assign x = 1>\nX<@'<#assign x = 1>\\nY'?interpret />", "XY"); assertOutput("<#ftl stripWhitespace=false><#assign x = 1>\nX<@'<#assign x = 1>\\nY'?interpret />", "\nXY"); assertOutput("<#assign x = 1>\nX<@'<#ftl stripWhitespace=false><#assign x = 1>\\nY'?interpret />", "X\nY"); - - cfg.setWhitespaceStripping(false); + + setConfiguration(new TestConfigurationBuilder() + .whitespaceStripping(false) + .build()); assertOutput("<#assign x = 1>\nX<@'<#assign x = 1>\\nY'?interpret />", "\nX\nY"); assertOutput("<#ftl stripWhitespace=true><#assign x = 1>\nX<@'<#assign x = 1>\\nY'?interpret />", "X\nY"); assertOutput("<#assign x = 1>\nX<@'<#ftl stripWhitespace=true><#assign x = 1>\\nY'?interpret />", "\nXY"); @@ -79,13 +88,15 @@ public class InterpretSettingInheritanceTest extends TemplateTest { @Test public void evalTest() throws IOException, TemplateException { - Configuration cfg = getConfiguration(); - - cfg.setTagSyntax(Configuration.ANGLE_BRACKET_TAG_SYNTAX); + setConfiguration(new TestConfigurationBuilder() + .tagSyntax(ParsingConfiguration.ANGLE_BRACKET_TAG_SYNTAX) + .build()); assertOutput("<@'\"[#if true]s[/#if]<#if true>a</#if>\"?interpret'?eval />", OUT_S_A_WHEN_SYNTAX_IS_A); assertOutput("[#ftl][@'\"[#if true]s[/#if]<#if true>a</#if>\"?interpret'?eval /]", OUT_S_A_WHEN_SYNTAX_IS_A); - - cfg.setTagSyntax(Configuration.SQUARE_BRACKET_TAG_SYNTAX); + + setConfiguration(new TestConfigurationBuilder() + .tagSyntax(ParsingConfiguration.SQUARE_BRACKET_TAG_SYNTAX) + .build()); assertOutput("[@'\"[#if true]s[/#if]<#if true>a</#if>\"?interpret'?eval /]", OUT_S_A_WHEN_SYNTAX_IS_S); assertOutput("<#ftl><@'\"[#if true]s[/#if]<#if true>a</#if>\"?interpret'?eval />", OUT_S_A_WHEN_SYNTAX_IS_S); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/JavaCCExceptionAsEOFFixTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/JavaCCExceptionAsEOFFixTest.java b/src/test/java/org/apache/freemarker/core/JavaCCExceptionAsEOFFixTest.java index 0a74f96..0fa3f79 100644 --- a/src/test/java/org/apache/freemarker/core/JavaCCExceptionAsEOFFixTest.java +++ b/src/test/java/org/apache/freemarker/core/JavaCCExceptionAsEOFFixTest.java @@ -23,6 +23,7 @@ import static org.junit.Assert.*; import java.io.IOException; import java.io.Reader; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Assert; import org.junit.Test; @@ -89,7 +90,7 @@ public class JavaCCExceptionAsEOFFixTest { @Test public void testIOException() throws IOException { try { - new Template(null, new FailingReader(new IOException("test")), new Configuration()); + new Template(null, new FailingReader(new IOException("test")), new TestConfigurationBuilder().build()); fail(); } catch (IOException e) { assertEquals("test", e.getMessage()); @@ -99,7 +100,7 @@ public class JavaCCExceptionAsEOFFixTest { @Test public void testRuntimeException() throws IOException { try { - new Template(null, new FailingReader(new NullPointerException("test")), new Configuration()); + new Template(null, new FailingReader(new NullPointerException("test")), new TestConfigurationBuilder().build()); fail(); } catch (NullPointerException e) { assertEquals("test", e.getMessage()); @@ -109,7 +110,7 @@ public class JavaCCExceptionAsEOFFixTest { @Test public void testError() throws IOException { try { - new Template(null, new FailingReader(new OutOfMemoryError("test")), new Configuration()); + new Template(null, new FailingReader(new OutOfMemoryError("test")), new TestConfigurationBuilder().build()); fail(); } catch (OutOfMemoryError e) { assertEquals("test", e.getMessage()); @@ -118,7 +119,7 @@ public class JavaCCExceptionAsEOFFixTest { @Test public void testNoException() throws IOException { - Template t = new Template(null, new FailingReader(null), new Configuration()); + Template t = new Template(null, new FailingReader(null), new TestConfigurationBuilder().build()); assertEquals("abc", t.toString()); } http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/MiscErrorMessagesTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/MiscErrorMessagesTest.java b/src/test/java/org/apache/freemarker/core/MiscErrorMessagesTest.java index 438ee28..1903e05 100644 --- a/src/test/java/org/apache/freemarker/core/MiscErrorMessagesTest.java +++ b/src/test/java/org/apache/freemarker/core/MiscErrorMessagesTest.java @@ -21,6 +21,7 @@ package org.apache.freemarker.core; import org.apache.freemarker.core.templateresolver.impl.DefaultTemplateNameFormat; import org.apache.freemarker.test.TemplateTest; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; public class MiscErrorMessagesTest extends TemplateTest { @@ -32,8 +33,8 @@ public class MiscErrorMessagesTest extends TemplateTest { @Test public void wrongTemplateNameFormat() { - getConfiguration().setTemplateNameFormat(DefaultTemplateNameFormat.INSTANCE); - + setConfiguration(new TestConfigurationBuilder().templateNameFormat(DefaultTemplateNameFormat.INSTANCE).build()); + assertErrorContains("<#include 'foo:/bar:baaz'>", "Malformed template name", "':'"); assertErrorContains("<#include '../baaz'>", "Malformed template name", "root"); assertErrorContains("<#include '\u0000'>", "Malformed template name", "\\u0000"); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/MistakenlyPublicImportAPIsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/MistakenlyPublicImportAPIsTest.java b/src/test/java/org/apache/freemarker/core/MistakenlyPublicImportAPIsTest.java index c5a025f..5fcee97 100644 --- a/src/test/java/org/apache/freemarker/core/MistakenlyPublicImportAPIsTest.java +++ b/src/test/java/org/apache/freemarker/core/MistakenlyPublicImportAPIsTest.java @@ -30,6 +30,7 @@ import org.apache.freemarker.core.Environment.Namespace; import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.templateresolver.impl.StringTemplateLoader; import org.apache.freemarker.core.util._NullWriter; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; /** @@ -39,11 +40,11 @@ public class MistakenlyPublicImportAPIsTest { @Test public void testImportCopying() throws IOException, TemplateException { - Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); StringTemplateLoader tl = new StringTemplateLoader(); tl.putTemplate("imp1", "<#macro m>1</#macro>"); tl.putTemplate("imp2", "<#assign x = 2><#macro m>${x}</#macro>"); - cfg.setTemplateLoader(tl); + + Configuration cfg = new TestConfigurationBuilder().templateLoader(tl).build(); Template t1 = new Template(null, "<#import 'imp1' as i1><#import 'imp2' as i2>", cfg); List<ASTDirImport> imports = t1.getImports(); http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/MistakenlyPublicMacroAPIsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/MistakenlyPublicMacroAPIsTest.java b/src/test/java/org/apache/freemarker/core/MistakenlyPublicMacroAPIsTest.java index f1eb7bd..9c87e61 100644 --- a/src/test/java/org/apache/freemarker/core/MistakenlyPublicMacroAPIsTest.java +++ b/src/test/java/org/apache/freemarker/core/MistakenlyPublicMacroAPIsTest.java @@ -28,6 +28,7 @@ import java.util.Map; import org.apache.freemarker.core.model.TemplateModel; import org.apache.freemarker.core.util._NullWriter; +import org.apache.freemarker.test.TestConfigurationBuilder; import org.junit.Test; /** @@ -35,7 +36,7 @@ import org.junit.Test; */ public class MistakenlyPublicMacroAPIsTest { - private final Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); + private final Configuration cfg = new TestConfigurationBuilder().build(); /** * Getting the macros from one template, and adding them to another. http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java b/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java index 40dfe13..d865deb 100644 --- a/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java +++ b/src/test/java/org/apache/freemarker/core/NewBiObjectWrapperRestrictionTest.java @@ -22,16 +22,15 @@ package org.apache.freemarker.core; import java.io.IOException; import org.apache.freemarker.test.TemplateTest; -import org.apache.freemarker.test.util.FullyCustomObjectWrapper; +import org.apache.freemarker.test.TestConfigurationBuilder; +import org.apache.freemarker.test.util.EntirelyCustomObjectWrapper; import org.junit.Test; public class NewBiObjectWrapperRestrictionTest extends TemplateTest { @Override - protected Configuration createConfiguration() throws Exception { - Configuration cfg = super.createConfiguration(); - cfg.setObjectWrapper(new FullyCustomObjectWrapper()); - return cfg; + protected Configuration createDefaultConfiguration() throws Exception { + return new TestConfigurationBuilder().objectWrapper(new EntirelyCustomObjectWrapper()).build(); } @Test http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java b/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java index 73e03f6..49534fa 100644 --- a/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java +++ b/src/test/java/org/apache/freemarker/core/ObjectBuilderSettingsTest.java @@ -356,7 +356,7 @@ public class ObjectBuilderSettingsTest { @Test public void configurationPropertiesTest() throws Exception { - final Configuration cfg = new Configuration(Configuration.getVersion()); + final Configuration.Builder cfgB = new Configuration.Builder(Configuration.getVersion()); { Properties props = new Properties(); @@ -366,23 +366,23 @@ public class ObjectBuilderSettingsTest { "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyArithmeticEngine"); props.setProperty(MutableProcessingConfiguration.TEMPLATE_EXCEPTION_HANDLER_KEY, "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyTemplateExceptionHandler"); - props.setProperty(Configuration.CACHE_STORAGE_KEY, + props.setProperty(Configuration.ExtendableBuilder.CACHE_STORAGE_KEY, "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyCacheStorage()"); props.setProperty(MutableProcessingConfiguration.NEW_BUILTIN_CLASS_RESOLVER_KEY, "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyNewBuiltinClassResolver()"); - props.setProperty(Configuration.SOURCE_ENCODING_KEY, "utf-8"); - props.setProperty(Configuration.TEMPLATE_LOADER_KEY, + props.setProperty(Configuration.ExtendableBuilder.SOURCE_ENCODING_KEY, "utf-8"); + props.setProperty(Configuration.ExtendableBuilder.TEMPLATE_LOADER_KEY, "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyTemplateLoader()"); - cfg.setSettings(props); - assertEquals(DefaultObjectWrapper.class, cfg.getObjectWrapper().getClass()); + cfgB.setSettings(props); + assertEquals(DefaultObjectWrapper.class, cfgB.getObjectWrapper().getClass()); assertEquals( - Configuration.VERSION_3_0_0, ((DefaultObjectWrapper) cfg.getObjectWrapper()).getIncompatibleImprovements()); - assertEquals(DummyArithmeticEngine.class, cfg.getArithmeticEngine().getClass()); - assertEquals(DummyTemplateExceptionHandler.class, cfg.getTemplateExceptionHandler().getClass()); - assertEquals(DummyCacheStorage.class, cfg.getCacheStorage().getClass()); - assertEquals(DummyNewBuiltinClassResolver.class, cfg.getNewBuiltinClassResolver().getClass()); - assertEquals(DummyTemplateLoader.class, cfg.getTemplateLoader().getClass()); - assertEquals(StandardCharsets.UTF_8, cfg.getSourceEncoding()); + Configuration.VERSION_3_0_0, ((DefaultObjectWrapper) cfgB.getObjectWrapper()).getIncompatibleImprovements()); + assertEquals(DummyArithmeticEngine.class, cfgB.getArithmeticEngine().getClass()); + assertEquals(DummyTemplateExceptionHandler.class, cfgB.getTemplateExceptionHandler().getClass()); + assertEquals(DummyCacheStorage.class, cfgB.getCacheStorage().getClass()); + assertEquals(DummyNewBuiltinClassResolver.class, cfgB.getNewBuiltinClassResolver().getClass()); + assertEquals(DummyTemplateLoader.class, cfgB.getTemplateLoader().getClass()); + assertEquals(StandardCharsets.UTF_8, cfgB.getSourceEncoding()); } { @@ -392,19 +392,19 @@ public class ObjectBuilderSettingsTest { "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyArithmeticEngine(x = 1)"); props.setProperty(MutableProcessingConfiguration.TEMPLATE_EXCEPTION_HANDLER_KEY, "org.apache.freemarker.core.ObjectBuilderSettingsTest$DummyTemplateExceptionHandler(x = 1)"); - props.setProperty(Configuration.CACHE_STORAGE_KEY, + props.setProperty(Configuration.ExtendableBuilder.CACHE_STORAGE_KEY, "soft: 500, strong: 100"); props.setProperty(MutableProcessingConfiguration.NEW_BUILTIN_CLASS_RESOLVER_KEY, "allows_nothing"); - cfg.setSettings(props); - assertEquals(DefaultObjectWrapper.class, cfg.getObjectWrapper().getClass()); - assertEquals(1, ((DummyArithmeticEngine) cfg.getArithmeticEngine()).getX()); - assertEquals(1, ((DummyTemplateExceptionHandler) cfg.getTemplateExceptionHandler()).getX()); + cfgB.setSettings(props); + assertEquals(DefaultObjectWrapper.class, cfgB.getObjectWrapper().getClass()); + assertEquals(1, ((DummyArithmeticEngine) cfgB.getArithmeticEngine()).getX()); + assertEquals(1, ((DummyTemplateExceptionHandler) cfgB.getTemplateExceptionHandler()).getX()); assertEquals(Configuration.VERSION_3_0_0, - ((DefaultObjectWrapper) cfg.getObjectWrapper()).getIncompatibleImprovements()); - assertEquals(500, ((MruCacheStorage) cfg.getCacheStorage()).getSoftSizeLimit()); - assertEquals(TemplateClassResolver.ALLOWS_NOTHING_RESOLVER, cfg.getNewBuiltinClassResolver()); - assertEquals(StandardCharsets.UTF_8, cfg.getSourceEncoding()); + ((DefaultObjectWrapper) cfgB.getObjectWrapper()).getIncompatibleImprovements()); + assertEquals(500, ((MruCacheStorage) cfgB.getCacheStorage()).getSoftSizeLimit()); + assertEquals(TemplateClassResolver.ALLOWS_NOTHING_RESOLVER, cfgB.getNewBuiltinClassResolver()); + assertEquals(StandardCharsets.UTF_8, cfgB.getSourceEncoding()); } { @@ -412,22 +412,22 @@ public class ObjectBuilderSettingsTest { props.setProperty(MutableProcessingConfiguration.OBJECT_WRAPPER_KEY, "Default"); props.setProperty(MutableProcessingConfiguration.ARITHMETIC_ENGINE_KEY, "bigdecimal"); props.setProperty(MutableProcessingConfiguration.TEMPLATE_EXCEPTION_HANDLER_KEY, "rethrow"); - cfg.setSettings(props); - assertEquals(DefaultObjectWrapper.class, cfg.getObjectWrapper().getClass()); - assertSame(BigDecimalArithmeticEngine.INSTANCE, cfg.getArithmeticEngine()); - assertSame(TemplateExceptionHandler.RETHROW_HANDLER, cfg.getTemplateExceptionHandler()); + cfgB.setSettings(props); + assertEquals(DefaultObjectWrapper.class, cfgB.getObjectWrapper().getClass()); + assertSame(BigDecimalArithmeticEngine.INSTANCE, cfgB.getArithmeticEngine()); + assertSame(TemplateExceptionHandler.RETHROW_HANDLER, cfgB.getTemplateExceptionHandler()); assertEquals(Configuration.VERSION_3_0_0, - ((DefaultObjectWrapper) cfg.getObjectWrapper()).getIncompatibleImprovements()); + ((DefaultObjectWrapper) cfgB.getObjectWrapper()).getIncompatibleImprovements()); } { Properties props = new Properties(); props.setProperty(MutableProcessingConfiguration.OBJECT_WRAPPER_KEY, "DefaultObjectWrapper(3.0.0)"); - cfg.setSettings(props); - assertEquals(DefaultObjectWrapper.class, cfg.getObjectWrapper().getClass()); + cfgB.setSettings(props); + assertEquals(DefaultObjectWrapper.class, cfgB.getObjectWrapper().getClass()); assertEquals( Configuration.VERSION_3_0_0, - ((DefaultObjectWrapper) cfg.getObjectWrapper()).getIncompatibleImprovements()); + ((DefaultObjectWrapper) cfgB.getObjectWrapper()).getIncompatibleImprovements()); } } @@ -911,7 +911,7 @@ public class ObjectBuilderSettingsTest { assertEqualsEvaled(123, "org.apache.freemarker.core.ObjectBuilderSettingsTest$TestStaticFields.CONST"); // With shorthand class name: - assertEqualsEvaled(Configuration.AUTO_DETECT_TAG_SYNTAX, "Configuration.AUTO_DETECT_TAG_SYNTAX"); + assertEqualsEvaled(ParsingConfiguration.AUTO_DETECT_TAG_SYNTAX, "Configuration.AUTO_DETECT_TAG_SYNTAX"); try { _ObjectBuilderSettingEvaluator.eval( http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/7d61a45d/src/test/java/org/apache/freemarker/core/OptInTemplateClassResolverTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/freemarker/core/OptInTemplateClassResolverTest.java b/src/test/java/org/apache/freemarker/core/OptInTemplateClassResolverTest.java index 569b4c0..06e863c 100644 --- a/src/test/java/org/apache/freemarker/core/OptInTemplateClassResolverTest.java +++ b/src/test/java/org/apache/freemarker/core/OptInTemplateClassResolverTest.java @@ -25,6 +25,7 @@ import java.util.List; import java.util.Set; import org.apache.freemarker.core.util.OptInTemplateClassResolver; +import org.apache.freemarker.test.TestConfigurationBuilder; import junit.framework.AssertionFailedError; import junit.framework.TestCase; @@ -51,10 +52,11 @@ public class OptInTemplateClassResolverTest extends TestCase { private OptInTemplateClassResolver resolver = new OptInTemplateClassResolver( ALLOWED_CLASSES, TRUSTED_TEMPLATES); - private Configuration dummyCfg = new Configuration(); - private Template dummyTemp = Template.createPlainTextTemplate("foo.ftl", "", dummyCfg); - + public void testOptIn() throws TemplateException { + Template dummyTemp = Template.createPlainTextTemplate("foo.ftl", "", + new TestConfigurationBuilder().build()); + assertEquals(String.class, resolver.resolve("java.lang.String", null, dummyTemp)); assertEquals(Integer.class, resolver.resolve("java.lang.Integer", null, dummyTemp)); try { @@ -66,18 +68,20 @@ public class OptInTemplateClassResolverTest extends TestCase { } public void testTrusted() throws TemplateException { + Configuration cfg = new TestConfigurationBuilder().build(); + assertEquals(Long.class, resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("lib/foo.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("lib/foo.ftl", "", cfg))); assertEquals(String.class, resolver.resolve("java.lang.String", null, - Template.createPlainTextTemplate("lib/foo.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("lib/foo.ftl", "", cfg))); assertEquals(Long.class, resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("/lib/foo.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("/lib/foo.ftl", "", cfg))); assertEquals(Long.class, resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("include/foo.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("include/foo.ftl", "", cfg))); assertEquals(Long.class, resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("trusted.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("trusted.ftl", "", cfg))); assertEquals(Long.class, resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("/trusted.ftl", "", dummyCfg))); + Template.createPlainTextTemplate("/trusted.ftl", "", cfg))); } public void testCraftedTrusted() throws TemplateException { @@ -112,7 +116,8 @@ public class OptInTemplateClassResolverTest extends TestCase { public void testTrusted_checkFails(String templateName) { try { resolver.resolve("java.lang.Long", null, - Template.createPlainTextTemplate(templateName, "", dummyCfg)); + Template.createPlainTextTemplate(templateName, "", + new TestConfigurationBuilder().build())); fail(); } catch (TemplateException e) { // Expected @@ -120,87 +125,106 @@ public class OptInTemplateClassResolverTest extends TestCase { } public void testSettingParser() throws Exception { - Configuration cfg = new Configuration(Configuration.VERSION_3_0_0); - - cfg.setSetting("new_builtin_class_resolver", - "trusted_templates: foo.ftl, \"lib/*\""); - TemplateClassResolver res = cfg.getNewBuiltinClassResolver(); - assertEquals(String.class, res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("foo.ftl", "", cfg))); - assertEquals(String.class, res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("lib/bar.ftl", "", cfg))); - try { - res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("bar.ftl", "", cfg)); - fail(); - } catch (TemplateException e) { - // Expected - } + { + Configuration cfg = new TestConfigurationBuilder() + .setting( + "new_builtin_class_resolver", + "trusted_templates: foo.ftl, \"lib/*\"") + .build(); - cfg.setSetting("new_builtin_class_resolver", - "allowed_classes: java.lang.String, java.lang.Integer"); - res = cfg.getNewBuiltinClassResolver(); - assertEquals(String.class, res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("foo.ftl", "", cfg))); - assertEquals(Integer.class, res.resolve("java.lang.Integer", null, - Template.createPlainTextTemplate("foo.ftl", "", cfg))); - try { - res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("foo.ftl", "", cfg)); - fail(); - } catch (TemplateException e) { - // good + TemplateClassResolver res = cfg.getNewBuiltinClassResolver(); + assertEquals(String.class, res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("foo.ftl", "", cfg))); + assertEquals(String.class, res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("lib/bar.ftl", "", cfg))); + try { + res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("bar.ftl", "", cfg)); + fail(); + } catch (TemplateException e) { + // Expected + } } - cfg.setSetting("new_builtin_class_resolver", - "trusted_templates: foo.ftl, 'lib/*', " + - "allowed_classes: 'java.lang.String', java.lang.Integer"); - res = cfg.getNewBuiltinClassResolver(); - assertEquals(String.class, res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("x.ftl", "", cfg))); - assertEquals(Integer.class, res.resolve("java.lang.Integer", null, - Template.createPlainTextTemplate("x.ftl", "", cfg))); - try { - res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("x.ftl", "", cfg)); - fail(); - } catch (TemplateException e) { - // Expected + { + Configuration cfg = new TestConfigurationBuilder() + .setting( + "new_builtin_class_resolver", + "allowed_classes: java.lang.String, java.lang.Integer") + .build(); + + TemplateClassResolver res = cfg.getNewBuiltinClassResolver(); + assertEquals(String.class, res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("foo.ftl", "", cfg))); + assertEquals(Integer.class, res.resolve("java.lang.Integer", null, + Template.createPlainTextTemplate("foo.ftl", "", cfg))); + try { + res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("foo.ftl", "", cfg)); + fail(); + } catch (TemplateException e) { + // good + } } - assertEquals(Long.class, res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("foo.ftl", "", cfg))); - assertEquals(Long.class, res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("lib/bar.ftl", "", cfg))); - try { - res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("x.ftl", "", cfg)); - fail(); - } catch (TemplateException e) { - // Expected + + { + Configuration cfg = new TestConfigurationBuilder() + .setting( + "new_builtin_class_resolver", + "trusted_templates: foo.ftl, 'lib/*', allowed_classes: 'java.lang.String'," + + " java.lang.Integer") + .build(); + TemplateClassResolver res = cfg.getNewBuiltinClassResolver(); + assertEquals(String.class, res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("x.ftl", "", cfg))); + assertEquals(Integer.class, res.resolve("java.lang.Integer", null, + Template.createPlainTextTemplate("x.ftl", "", cfg))); + try { + res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("x.ftl", "", cfg)); + fail(); + } catch (TemplateException e) { + // Expected + } + assertEquals(Long.class, res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("foo.ftl", "", cfg))); + assertEquals(Long.class, res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("lib/bar.ftl", "", cfg))); + try { + res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("x.ftl", "", cfg)); + fail(); + } catch (TemplateException e) { + // Expected + } } try { - cfg.setSetting("new_builtin_class_resolver", "wrong: foo"); + new TestConfigurationBuilder().setSetting("new_builtin_class_resolver", "wrong: foo"); fail(); } catch (ConfigurationException e) { // Expected } - - cfg.setSetting("new_builtin_class_resolver", - "\"allowed_classes\" : java.lang.String , " + - "'trusted_templates' :\"lib:*\""); - res = cfg.getNewBuiltinClassResolver(); - assertEquals(String.class, res.resolve("java.lang.String", null, - Template.createPlainTextTemplate("x.ftl", "", cfg))); - try { - res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("x.ftl", "", cfg)); - fail(); - } catch (TemplateException e) { - // Expected + + { + Configuration cfg = new TestConfigurationBuilder() + .setting( + "new_builtin_class_resolver", + "\"allowed_classes\" : java.lang.String , 'trusted_templates' :\"lib:*\"") + .build(); + TemplateClassResolver res = cfg.getNewBuiltinClassResolver(); + assertEquals(String.class, res.resolve("java.lang.String", null, + Template.createPlainTextTemplate("x.ftl", "", cfg))); + try { + res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("x.ftl", "", cfg)); + fail(); + } catch (TemplateException e) { + // Expected + } + assertEquals(Long.class, res.resolve("java.lang.Long", null, + Template.createPlainTextTemplate("lib:bar.ftl", "", cfg))); } - assertEquals(Long.class, res.resolve("java.lang.Long", null, - Template.createPlainTextTemplate("lib:bar.ftl", "", cfg))); } }
