This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch experimental in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit fe6b50d09a73edda68706ab856ec21e0f43ec214 Author: Siegfried Goeschl <[email protected]> AuthorDate: Sun May 3 12:57:55 2020 +0200 Improve examples, unit tests and documentation --- freemarker-generator-cli/README.md | 2 + .../org/apache/freemarker/generator/cli/Main.java | 6 +- .../freemarker/generator/cli/ExamplesTest.java | 2 + .../freemarker/generator/cli/PicocliTest.java | 71 +++++++++++++--------- 4 files changed, 50 insertions(+), 31 deletions(-) diff --git a/freemarker-generator-cli/README.md b/freemarker-generator-cli/README.md index bd9ec0e..587dadb 100644 --- a/freemarker-generator-cli/README.md +++ b/freemarker-generator-cli/README.md @@ -1116,9 +1116,11 @@ Sometimes we simply need to transform a JSON into an equivalent YAML or the othe ``` > ./bin/freemarker-cli -t templates/yaml/json/transform.ftl > site/sample/yaml/swagger-spec.yaml > ./bin/freemarker-cli -i > '${GsonTool.toJson(YamlTool.parse(DataSources.get(0)))}' > site/sample/yaml/swagger-spec.yaml +> ./bin/freemarker-cli -i '${GsonTool.toJson(yaml)}' -m yaml=site/sample/yaml/swagger-spec.yaml > ./bin/freemarker-cli -t templates/json/yaml/transform.ftl > site/sample/json/swagger-spec.json > ./bin/freemarker-cli -i > '${YamlTool.toYaml(GsonTool.parse(DataSources.get(0)))}' > site/sample/json/swagger-spec.json +> ./bin/freemarker-cli -i '${YamlTool.toYaml(json)}' -m json=site/sample/json/swagger-spec.json ``` ## 6.16 Using Advanced FreeMarker Features diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java index fa2cd12..eda635e 100644 --- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java +++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/Main.java @@ -60,12 +60,12 @@ public class Main implements Callable<Integer> { @ArgGroup(multiplicity = "1") TemplateSourceOptions templateSourceOptions; - static final class TemplateSourceOptions { + public static final class TemplateSourceOptions { @Option(names = { "-t", "--template" }, description = "FreeMarker template to render") - private String template; + public String template; @Option(names = { "-i", "--interactive" }, description = "Interactive FreeMarker template") - private String interactiveTemplate; + public String interactiveTemplate; } @Option(names = { "-b", "--basedir" }, description = "Optional template base directory") diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java index 147a2d7..fedc66c 100644 --- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java +++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java @@ -108,7 +108,9 @@ public class ExamplesTest extends AbstractMainTest { assertValid(execute("-i ${XmlTool.parse(DataSources.first)[\"recipients/person[1]/name\"]} site/sample/xml/recipients.xml")); assertValid(execute("-i ${JsoupTool.parse(DataSources.first).select(\"a\")[0]} site/sample/html/dependencies.html")); assertValid(execute("-i ${GsonTool.toJson(YamlTool.parse(DataSources.get(0)))} site/sample/yaml/swagger-spec.yaml")); + assertValid(execute("-i ${GsonTool.toJson(yaml)} -m yaml=site/sample/yaml/swagger-spec.yaml")); assertValid(execute("-i ${YamlTool.toYaml(GsonTool.parse(DataSources.get(0)))} site/sample/json/swagger-spec.json")); + assertValid(execute("-i ${YamlTool.toYaml(json)} -m json=site/sample/json/swagger-spec.json")); } @Test diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java index d465fd0..57f2844 100644 --- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java +++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/PicocliTest.java @@ -24,42 +24,43 @@ import static org.junit.Assert.assertNull; public class PicocliTest { - private static final String TEMPLATE = "template.ftl"; + private static final String ANY_TEMPLATE = "any.ftl"; + private static final String OTHER_TEMPLATE = "other.ftl"; + private static final String INTERACTIVE_TEMPLATE = "interactive-template"; private static final String ANY_FILE = "users.csv"; - private static final String ANY_NAMED_FILE = "users=users.csv"; private static final String OTHER_FILE = "transctions.csv"; private static final String ANY_FILE_URI = "file:///users.csv"; private static final String OTHER_FILE_URI = "file:///transctions.csv"; @Test - public void testSinglePositionalParameter() { - assertEquals(ANY_FILE_URI, parse("-t", TEMPLATE, ANY_FILE_URI).sources.get(0)); - assertNull(ANY_FILE, parse("-t", TEMPLATE, ANY_FILE_URI).dataSources); + public void shouldParseSinglePositionalParameter() { + assertEquals(ANY_FILE_URI, parse("-t", ANY_TEMPLATE, ANY_FILE_URI).sources.get(0)); + assertNull(ANY_FILE, parse("-t", ANY_TEMPLATE, ANY_FILE_URI).dataSources); } @Test - public void testMultiplePositionalParameter() { - assertEquals(ANY_FILE, parse("-t", TEMPLATE, ANY_FILE, OTHER_FILE).sources.get(0)); - assertEquals(OTHER_FILE, parse("-t", TEMPLATE, ANY_FILE, OTHER_FILE).sources.get(1)); + public void shouldParseMultiplePositionalParameter() { + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, ANY_FILE, OTHER_FILE).sources.get(0)); + assertEquals(OTHER_FILE, parse("-t", ANY_TEMPLATE, ANY_FILE, OTHER_FILE).sources.get(1)); - assertEquals(ANY_FILE, parse("-t", TEMPLATE, ANY_FILE, OTHER_FILE_URI).sources.get(0)); - assertEquals(OTHER_FILE_URI, parse("-t", TEMPLATE, ANY_FILE, OTHER_FILE_URI).sources.get(1)); + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, ANY_FILE, OTHER_FILE_URI).sources.get(0)); + assertEquals(OTHER_FILE_URI, parse("-t", ANY_TEMPLATE, ANY_FILE, OTHER_FILE_URI).sources.get(1)); - assertEquals(ANY_FILE_URI, parse("-t", TEMPLATE, ANY_FILE_URI, OTHER_FILE_URI).sources.get(0)); - assertEquals(OTHER_FILE_URI, parse("-t", TEMPLATE, ANY_FILE_URI, OTHER_FILE_URI).sources.get(1)); + assertEquals(ANY_FILE_URI, parse("-t", ANY_TEMPLATE, ANY_FILE_URI, OTHER_FILE_URI).sources.get(0)); + assertEquals(OTHER_FILE_URI, parse("-t", ANY_TEMPLATE, ANY_FILE_URI, OTHER_FILE_URI).sources.get(1)); } @Test - public void testSingleNamedDataSource() { - assertEquals(ANY_FILE, parse("-t", TEMPLATE, ANY_FILE).sources.get(0)); - assertEquals(ANY_FILE, parse("-t", TEMPLATE, "-s", ANY_FILE).dataSources.get(0)); - assertEquals(ANY_FILE, parse("-t", TEMPLATE, "--data-source", ANY_FILE).dataSources.get(0)); - assertEquals(ANY_FILE_URI, parse("-t", TEMPLATE, "--data-source", ANY_FILE_URI).dataSources.get(0)); + public void shouldParseSingleNamedDataSource() { + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, ANY_FILE).sources.get(0)); + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, "-s", ANY_FILE).dataSources.get(0)); + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, "--data-source", ANY_FILE).dataSources.get(0)); + assertEquals(ANY_FILE_URI, parse("-t", ANY_TEMPLATE, "--data-source", ANY_FILE_URI).dataSources.get(0)); } @Test - public void testMultipleNamedDataSource() { - final Main main = parse("-t", TEMPLATE, "-s", ANY_FILE, "--data-source", OTHER_FILE_URI); + public void shouldParseMultipleNamedDataSource() { + final Main main = parse("-t", ANY_TEMPLATE, "-s", ANY_FILE, "--data-source", OTHER_FILE_URI); assertEquals(ANY_FILE, main.dataSources.get(0)); assertEquals(OTHER_FILE_URI, main.dataSources.get(1)); @@ -67,14 +68,14 @@ public class PicocliTest { } @Test - public void testSingleDataModel() { - assertEquals(ANY_FILE, parse("-t", TEMPLATE, "-m", ANY_FILE).dataModels.get(0)); - assertEquals(ANY_FILE, parse("-t", TEMPLATE, "--data-model", ANY_FILE).dataModels.get(0)); + public void shouldParseSingleDataModel() { + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, "-m", ANY_FILE).dataModels.get(0)); + assertEquals(ANY_FILE, parse("-t", ANY_TEMPLATE, "--data-model", ANY_FILE).dataModels.get(0)); } @Test - public void testMultipleDataModels() { - final Main main = parse("-t", TEMPLATE, "-m", ANY_FILE, "--data-model", OTHER_FILE_URI); + public void shouldParseMultipleDataModels() { + final Main main = parse("-t", ANY_TEMPLATE, "-m", ANY_FILE, "--data-model", OTHER_FILE_URI); assertEquals(ANY_FILE, main.dataModels.get(0)); assertEquals(OTHER_FILE_URI, main.dataModels.get(1)); @@ -82,20 +83,34 @@ public class PicocliTest { } @Test - public void testSingleParameter() { - final Main main = parse("-t", TEMPLATE, "-P", "name:group=value"); + public void shouldParseSingleParameter() { + final Main main = parse("-t", ANY_TEMPLATE, "-P", "name:group=value"); assertEquals("value", main.parameters.get("name:group")); } @Test - public void testMultipleParameters() { - final Main main = parse("-t", TEMPLATE, "-P", "name1:group=value1", "-P", "name2:group=value2"); + public void shouldParseMultipleParameters() { + final Main main = parse("-t", ANY_TEMPLATE, "-P", "name1:group=value1", "-P", "name2:group=value2"); assertEquals("value1", main.parameters.get("name1:group")); assertEquals("value2", main.parameters.get("name2:group")); } + @Test + public void shouldParseSingleTemplate() { + final Main main = parse("-t", ANY_TEMPLATE); + + assertEquals(ANY_TEMPLATE, main.templateSourceOptions.template); + } + + @Test + public void shouldParseInteractiveTemplate() { + final Main main = parse("-i", INTERACTIVE_TEMPLATE); + + assertEquals(INTERACTIVE_TEMPLATE, main.templateSourceOptions.interactiveTemplate); + } + private static Main parse(String... args) { final Main main = new Main(); new CommandLine(main).parseArgs(args);
