You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2021/09/26 21:18:14 UTC

[freemarker-generator] branch FREEMARKER-188 updated (c7c180f -> ed8f4b0)

This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a change to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git.


    from c7c180f  FREEMARKER-188 Cleanup code
     new 7827ab4  FREEMARKER-188 Add "toString" method for Picocli classes
     new 2959baa  FREEMARKER-188 Cleanup code
     new ed8f4b0  FREEMARKER-188 Add more tests

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../cli/config/OutputGeneratorsSupplier.java       |  2 +-
 .../freemarker/generator/cli/config/Settings.java  | 28 +++----
 .../freemarker/generator/cli/config/Suppliers.java |  4 +-
 .../cli/config/output/AbstractOutputGenerator.java |  4 +-
 .../output/DataSourceSeedingOutputMapper.java      | 26 ++++--
 .../generator/cli/picocli/DataModelDefinition.java |  7 ++
 .../cli/picocli/DataSourceDefinition.java          |  7 ++
 .../generator/cli/picocli/GitVersionProvider.java  |  9 ++
 .../cli/picocli/OutputGeneratorDefinition.java     | 13 +++
 .../cli/picocli/OutputMapperDefinition.java        |  7 ++
 .../cli/picocli/OutputSeedDefinition.java          |  7 ++
 .../cli/picocli/TemplateOutputDefinition.java      |  7 ++
 .../cli/picocli/TemplateSourceDefinition.java      |  8 ++
 .../picocli/TemplateSourceFilterDefinition.java    | 12 ++-
 .../generator/cli/task/FreeMarkerTask.java         |  2 +-
 .../cli/config/AbstractOutputGeneratorTest.java    | 62 ++++++++++++++
 .../cli/config/ConfigurationSupplierTest.java      |  2 -
 .../DataSourceSeedingOutputGeneratorTest.java      | 82 ++++++++++++++++++
 .../config/TemplateSeedingOutputGeneratorTest.java | 96 ++++++++++++++++++++++
 .../output/DataSourceSeedingOutputMapperTest.java  | 40 +++++----
 .../generator/tools/system/SystemTool.java         |  1 +
 21 files changed, 379 insertions(+), 47 deletions(-)
 create mode 100644 freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
 create mode 100644 freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
 create mode 100644 freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java

[freemarker-generator] 02/03: FREEMARKER-188 Cleanup code

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit 2959baad06ab6f8e9f15215d0a0cfccf82b1547a
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Sun Sep 26 18:49:59 2021 +0200

    FREEMARKER-188 Cleanup code
---
 .../freemarker/generator/cli/config/Settings.java  | 28 +++++++--------
 .../freemarker/generator/cli/config/Suppliers.java |  4 +--
 .../cli/config/output/AbstractOutputGenerator.java |  4 +--
 .../output/DataSourceSeedingOutputMapper.java      | 26 +++++++++-----
 .../generator/cli/task/FreeMarkerTask.java         |  2 +-
 .../output/DataSourceSeedingOutputMapperTest.java  | 40 +++++++++++++---------
 .../generator/tools/system/SystemTool.java         |  1 +
 7 files changed, 62 insertions(+), 43 deletions(-)

diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
index 93daa71..d699a8d 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Settings.java
@@ -64,11 +64,11 @@ public class Settings {
     /** List of additional shared data models */
     private final List<String> sharedDataModels;
 
-    /** Include pattern for sources */
-    private final String sourceIncludePattern;
+    /** Global include pattern for data sources */
+    private final String dataSourceIncludePattern;
 
-    /** Exclude pattern for sources */
-    private final String sourceExcludePattern;
+    /** Global exclude pattern for data sources */
+    private final String dataSourceExcludePattern;
 
     /** Encoding of input files */
     private final Charset inputEncoding;
@@ -102,8 +102,8 @@ public class Settings {
             List<OutputGeneratorDefinition> outputGeneratorDefinitions,
             List<String> sharedDataSources,
             List<String> sharedDataModels,
-            String sourceIncludePattern,
-            String sourceExcludePattern,
+            String dataSourceIncludePattern,
+            String dataSourceExcludePattern,
             Charset inputEncoding,
             Charset outputEncoding,
             boolean verbose,
@@ -119,8 +119,8 @@ public class Settings {
         this.outputGeneratorDefinitions = requireNonNull(outputGeneratorDefinitions);
         this.sharedDataSources = requireNonNull(sharedDataSources);
         this.sharedDataModels = requireNonNull(sharedDataModels);
-        this.sourceIncludePattern = sourceIncludePattern;
-        this.sourceExcludePattern = sourceExcludePattern;
+        this.dataSourceIncludePattern = dataSourceIncludePattern;
+        this.dataSourceExcludePattern = dataSourceExcludePattern;
         this.inputEncoding = inputEncoding;
         this.outputEncoding = outputEncoding;
         this.verbose = verbose;
@@ -160,12 +160,12 @@ public class Settings {
         return sharedDataModels;
     }
 
-    public String getSourceIncludePattern() {
-        return sourceIncludePattern;
+    public String getDataSourceIncludePattern() {
+        return dataSourceIncludePattern;
     }
 
-    public String getSourceExcludePattern() {
-        return sourceExcludePattern;
+    public String getDataSourceExcludePattern() {
+        return dataSourceExcludePattern;
     }
 
     public Charset getInputEncoding() {
@@ -230,8 +230,8 @@ public class Settings {
                 ", outputGeneratorDefinitions=" + outputGeneratorDefinitions +
                 ", sharedDataSources=" + sharedDataSources +
                 ", sharedDataModels=" + sharedDataModels +
-                ", sourceIncludePattern='" + sourceIncludePattern + '\'' +
-                ", sourceExcludePattern='" + sourceExcludePattern + '\'' +
+                ", dataSourceIncludePattern='" + dataSourceIncludePattern +
+                ", dataSourceExcludePattern='" + dataSourceExcludePattern +
                 ", inputEncoding=" + inputEncoding +
                 ", outputEncoding=" + outputEncoding +
                 ", verbose=" + verbose +
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
index ab3681e..310744a 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
@@ -48,8 +48,8 @@ public class Suppliers {
 
     public static DataSourcesSupplier sharedDataSourcesSupplier(Settings settings) {
         return new DataSourcesSupplier(settings.getSharedDataSources(),
-                settings.getSourceIncludePattern(),
-                settings.getSourceExcludePattern(),
+                settings.getDataSourceIncludePattern(),
+                settings.getDataSourceExcludePattern(),
                 settings.getInputEncoding());
     }
 
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java
index 967e3cf..81f9633 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/AbstractOutputGenerator.java
@@ -54,8 +54,8 @@ public abstract class AbstractOutputGenerator {
 
         final DataSourcesSupplier outputGeneratorDataSourcesSupplier = new DataSourcesSupplier(
                 outputGeneratorDefinition.getDataSources(),
-                settings.getSourceIncludePattern(),
-                settings.getSourceExcludePattern(),
+                settings.getDataSourceIncludePattern(),
+                settings.getDataSourceExcludePattern(),
                 settings.getInputEncoding()
         );
 
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java
index 6fb6c4b..43d56d5 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapper.java
@@ -17,10 +17,12 @@
 package org.apache.freemarker.generator.cli.config.output;
 
 import org.apache.freemarker.generator.base.datasource.DataSource;
-import org.apache.freemarker.generator.base.util.StringUtils;
 
 import java.io.File;
 
+import static org.apache.freemarker.generator.base.util.StringUtils.firstNonEmpty;
+import static org.apache.freemarker.generator.base.util.StringUtils.isEmpty;
+
 public class DataSourceSeedingOutputMapper {
 
     private final String template;
@@ -31,18 +33,26 @@ public class DataSourceSeedingOutputMapper {
 
     public File map(File outputDirectory, DataSource dataSource) {
         final String relativeFilePath = dataSource.getRelativeFilePath();
-        final String fileName = expand(template, dataSource);
+        final String fileName = isEmpty(template) ? fromDataSource(dataSource) : fromTemplate(template, dataSource);
 
-        return StringUtils.isEmpty(relativeFilePath) ?
+        return isEmpty(relativeFilePath) ?
                 new File(outputDirectory, fileName) :
                 new File(new File(outputDirectory, relativeFilePath), fileName);
     }
 
-    private static String expand(String value, DataSource dataSource) {
-        if (StringUtils.isEmpty(value)) {
-            return dataSource.getBaseName() + "." + dataSource.getExtension();
-        }
+    private static String fromTemplate(String value, DataSource dataSource) {
+        return value.replace("*", firstNonEmpty(dataSource.getBaseName(), dataSource.getName()));
+    }
 
-        return value.replace("*", dataSource.getBaseName());
+    private static String fromDataSource(DataSource dataSource) {
+        if (isEmpty(dataSource.getBaseName())) {
+            return dataSource.getName();
+        } else {
+            if (isEmpty(dataSource.getExtension())) {
+                return dataSource.getBaseName();
+            } else {
+                return dataSource.getBaseName() + "." + dataSource.getExtension();
+            }
+        }
     }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
index 543f8fa..914bd79 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/task/FreeMarkerTask.java
@@ -50,7 +50,7 @@ import static org.apache.freemarker.generator.base.FreeMarkerConstants.Model;
  */
 public class FreeMarkerTask implements Callable<Integer> {
 
-        private static final int SUCCESS_CODE = 0;
+    private static final int SUCCESS_CODE = 0;
 
     private final Supplier<Configuration> configurationSupplier;
     private final Supplier<List<OutputGenerator>> outputGeneratorsSupplier;
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java
index 494a2ad..a17ba4a 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/output/DataSourceSeedingOutputMapperTest.java
@@ -19,33 +19,41 @@ public class DataSourceSeedingOutputMapperTest {
     private final File PARENT_DIRECTORY = new File("..");
     private final File ANY_DIRECTORY = new File("target");
     private final File ANY_FILE = new File("pom.xml");
-    private final DataSource ANY_DATA_SOURCE = DataSourceFactory.fromFile(ANY_FILE, StandardCharsets.UTF_8);
+    private final DataSource FILE_DATA_SOURCE = DataSourceFactory.fromFile(ANY_FILE, StandardCharsets.UTF_8);
+    private final DataSource URL_DATA_SOURCE = DataSourceFactory.fromUrl("google.com", "group", DataSourceFactory.toUrl("https://www.google.com"));
 
     @Test
     public void shouldGenerateOutputFileForCurrentDirectory() {
-        assertEquals("pom.xml", path(outputMapper(null).map(CURRENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("pom.xml", path(outputMapper("").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("pom.html", path(outputMapper("*.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("pom.html", path(outputMapper("pom.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("html/pom.html", path(outputMapper("html/*.html").map(CURRENT_DIRECTORY, ANY_DATA_SOURCE)));
+        assertEquals("pom.xml", path(outputMapper(null).map(CURRENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("pom.xml", path(outputMapper("").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("pom.html", path(outputMapper("*.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("pom.html", path(outputMapper("pom.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("html/pom.html", path(outputMapper("html/*.html").map(CURRENT_DIRECTORY, FILE_DATA_SOURCE)));
     }
 
     @Test
     public void shouldGenerateOutputFileForParentDirectory() {
-        assertEquals("../pom.xml", path(outputMapper(null).map(PARENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("../pom.xml", path(outputMapper("").map(PARENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("../pom.html", path(outputMapper("*.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("../pom.html", path(outputMapper("pom.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("../html/pom.html", path(outputMapper("html/*.html").map(PARENT_DIRECTORY, ANY_DATA_SOURCE)));
+        assertEquals("../pom.xml", path(outputMapper(null).map(PARENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("../pom.xml", path(outputMapper("").map(PARENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("../pom.html", path(outputMapper("*.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("../pom.html", path(outputMapper("pom.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("../html/pom.html", path(outputMapper("html/*.html").map(PARENT_DIRECTORY, FILE_DATA_SOURCE)));
     }
 
     @Test
     public void shouldGenerateOutputFileForAnyDirectory() {
-        assertEquals("target/pom.xml", path(outputMapper(null).map(ANY_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("target/pom.xml", path(outputMapper("").map(ANY_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("target/pom.html", path(outputMapper("*.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("target/pom.html", path(outputMapper("pom.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE)));
-        assertEquals("target/html/pom.html", path(outputMapper("html/*.html").map(ANY_DIRECTORY, ANY_DATA_SOURCE)));
+        assertEquals("target/pom.xml", path(outputMapper(null).map(ANY_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("target/pom.xml", path(outputMapper("").map(ANY_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("target/pom.html", path(outputMapper("*.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("target/pom.html", path(outputMapper("pom.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE)));
+        assertEquals("target/html/pom.html", path(outputMapper("html/*.html").map(ANY_DIRECTORY, FILE_DATA_SOURCE)));
+    }
+
+    @Test
+    public void shouldHandleUrlDataSources() {
+        assertEquals("target/google.com", path(outputMapper(null).map(ANY_DIRECTORY, URL_DATA_SOURCE)));
+        assertEquals("target/google.com", path(outputMapper("").map(ANY_DIRECTORY, URL_DATA_SOURCE)));
+        assertEquals("target/google.com.html", path(outputMapper("*.html").map(ANY_DIRECTORY, URL_DATA_SOURCE)));
     }
 
     private static DataSourceSeedingOutputMapper outputMapper(String template) {
diff --git a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
index 1fac36a..be6ad05 100644
--- a/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
+++ b/freemarker-generator-tools/src/main/java/org/apache/freemarker/generator/tools/system/SystemTool.java
@@ -109,6 +109,7 @@ public class SystemTool {
      * Get the value of a user-supplied parameter.
      *
      * @param name name of the parameter
+     * @param def  default value
      * @return value or default value
      */
     public String getParameter(String name, String def) {

[freemarker-generator] 01/03: FREEMARKER-188 Add "toString" method for Picocli classes

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit 7827ab439c6512a0bee56cd7208761e0085b2caf
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Sun Sep 26 18:48:18 2021 +0200

    FREEMARKER-188 Add "toString" method for Picocli classes
---
 .../generator/cli/picocli/DataModelDefinition.java          |  7 +++++++
 .../generator/cli/picocli/DataSourceDefinition.java         |  7 +++++++
 .../generator/cli/picocli/GitVersionProvider.java           |  9 +++++++++
 .../generator/cli/picocli/OutputGeneratorDefinition.java    | 13 +++++++++++++
 .../generator/cli/picocli/OutputMapperDefinition.java       |  7 +++++++
 .../generator/cli/picocli/OutputSeedDefinition.java         |  7 +++++++
 .../generator/cli/picocli/TemplateOutputDefinition.java     |  7 +++++++
 .../generator/cli/picocli/TemplateSourceDefinition.java     |  8 ++++++++
 .../cli/picocli/TemplateSourceFilterDefinition.java         | 12 +++++++++++-
 9 files changed, 76 insertions(+), 1 deletion(-)

diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataModelDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataModelDefinition.java
index 0c4ffcf..f586feb 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataModelDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataModelDefinition.java
@@ -27,4 +27,11 @@ public class DataModelDefinition {
 
     @Option(names = { "-m", "--data-model" }, description = "data model used for rendering")
     public List<String> dataModels;
+
+    @Override
+    public String toString() {
+        return "DataModelDefinition{" +
+                "dataModels=" + dataModels +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataSourceDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataSourceDefinition.java
index 61e9924..0adc292 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataSourceDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/DataSourceDefinition.java
@@ -27,4 +27,11 @@ public class DataSourceDefinition {
 
     @Option(names = { "-s", "--data-source" }, description = "data source used for rendering")
     public List<String> dataSources;
+
+    @Override
+    public String toString() {
+        return "DataSourceDefinition{" +
+                "dataSources=" + dataSources +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java
index bfa3f3d..ce8555e 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/GitVersionProvider.java
@@ -53,4 +53,13 @@ public class GitVersionProvider implements IVersionProvider {
         }
         return properties;
     }
+
+    @Override
+    public String toString() {
+        return "GitVersionProvider{" +
+                "gitBuildVersion='" + gitBuildVersion + '\'' +
+                ", gitCommitId='" + gitCommitId + '\'' +
+                ", gitCommitTime='" + gitCommitTime + '\'' +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java
index d824524..728d6a7 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputGeneratorDefinition.java
@@ -121,6 +121,19 @@ public class OutputGeneratorDefinition {
         return (outputMapperDefinition != null) ? outputMapperDefinition.outputMapper : null;
     }
 
+    @Override
+    public String toString() {
+        return "OutputGeneratorDefinition{" +
+                "templateSourceDefinition=" + templateSourceDefinition +
+                ", templateSourceFilterDefinition=" + templateSourceFilterDefinition +
+                ", templateOutputDefinition=" + templateOutputDefinition +
+                ", dataSourceDefinition=" + dataSourceDefinition +
+                ", dataModelDefinition=" + dataModelDefinition +
+                ", outputSeedDefinition=" + outputSeedDefinition +
+                ", outputMapperDefinition=" + outputMapperDefinition +
+                '}';
+    }
+
     private static boolean isFileSource(String source) {
         if (source.contains("file://")) {
             return true;
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputMapperDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputMapperDefinition.java
index d23ec74..c4bed1a 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputMapperDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputMapperDefinition.java
@@ -22,4 +22,11 @@ public class OutputMapperDefinition {
 
     @Option(names = { "--output-mapper" }, description = "maps the name of the output file")
     public String outputMapper;
+
+    @Override
+    public String toString() {
+        return "OutputMapperDefinition{" +
+                "outputMapper='" + outputMapper + '\'' +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputSeedDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputSeedDefinition.java
index f897cbb..50cea95 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputSeedDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/OutputSeedDefinition.java
@@ -25,4 +25,11 @@ public class OutputSeedDefinition {
 
     @Option(names = { "--seed" }, defaultValue = "template", description = "seed mode: [template|datasource]")
     public String type;
+
+    @Override
+    public String toString() {
+        return "OutputSeedDefinition{" +
+                "type='" + type + '\'' +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateOutputDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateOutputDefinition.java
index 59627e3..3f3244f 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateOutputDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateOutputDefinition.java
@@ -28,4 +28,11 @@ public class TemplateOutputDefinition {
     public boolean hasOutput() {
         return outputs != null && !outputs.isEmpty();
     }
+
+    @Override
+    public String toString() {
+        return "TemplateOutputDefinition{" +
+                "outputs=" + outputs +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceDefinition.java
index 6193c7b..0d35752 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceDefinition.java
@@ -29,4 +29,12 @@ public class TemplateSourceDefinition {
     public boolean isInteractiveTemplate() {
         return interactiveTemplate != null && !interactiveTemplate.isEmpty();
     }
+
+    @Override
+    public String toString() {
+        return "TemplateSourceDefinition{" +
+                "template='" + template + '\'' +
+                ", interactiveTemplate='" + interactiveTemplate + '\'' +
+                '}';
+    }
 }
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceFilterDefinition.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceFilterDefinition.java
index 68cce4e..0a3bb4b 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceFilterDefinition.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/picocli/TemplateSourceFilterDefinition.java
@@ -20,7 +20,9 @@ import picocli.CommandLine.Option;
 
 import java.util.List;
 
-/** Include/exclude pattern when processing template directories */
+/**
+ * Include/exclude pattern when processing template directories
+ */
 public class TemplateSourceFilterDefinition {
 
     @Option(names = { "--template-include" }, description = "template include pattern")
@@ -28,4 +30,12 @@ public class TemplateSourceFilterDefinition {
 
     @Option(names = { "--template-exclude" }, description = "template exclude pattern")
     public List<String> templateExcludePatterns;
+
+    @Override
+    public String toString() {
+        return "TemplateSourceFilterDefinition{" +
+                "templateIncludePatterns=" + templateIncludePatterns +
+                ", templateExcludePatterns=" + templateExcludePatterns +
+                '}';
+    }
 }

[freemarker-generator] 03/03: FREEMARKER-188 Add more tests

Posted by sg...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-188
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git

commit ed8f4b0c17567e16e66ee63a415ef4d9303ee37c
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Sun Sep 26 23:18:04 2021 +0200

    FREEMARKER-188 Add more tests
---
 .../cli/config/OutputGeneratorsSupplier.java       |  2 +-
 .../cli/config/AbstractOutputGeneratorTest.java    | 62 ++++++++++++++
 .../cli/config/ConfigurationSupplierTest.java      |  2 -
 .../DataSourceSeedingOutputGeneratorTest.java      | 82 ++++++++++++++++++
 .../config/TemplateSeedingOutputGeneratorTest.java | 96 ++++++++++++++++++++++
 5 files changed, 241 insertions(+), 3 deletions(-)

diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
index 71046df..e1b11b1 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/OutputGeneratorsSupplier.java
@@ -30,7 +30,7 @@ import java.util.stream.Collectors;
 import static java.util.Objects.requireNonNull;
 
 /**
- * Supplies a list of list of <code>OutputGenerators</code> based on the user input.
+ * Supplies a list of <code>OutputGenerators</code> based on the user input.
  */
 public class OutputGeneratorsSupplier implements Supplier<List<OutputGenerator>> {
 
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
new file mode 100644
index 0000000..16ce464
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/AbstractOutputGeneratorTest.java
@@ -0,0 +1,62 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.cli.picocli.DataSourceDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputMapperDefinition;
+import org.apache.freemarker.generator.cli.picocli.OutputSeedDefinition;
+import org.apache.freemarker.generator.cli.picocli.TemplateOutputDefinition;
+import org.apache.freemarker.generator.cli.picocli.TemplateSourceDefinition;
+
+import java.util.Arrays;
+
+import static java.util.Collections.singletonList;
+
+public abstract class AbstractOutputGeneratorTest {
+
+    protected static final String ANY_TEMPLATE_NAME = "cat.ftl";
+    protected static final String ANY_TEMPLATE = "src/app/templates/freemarker-generator/" + ANY_TEMPLATE_NAME;
+    protected static final String ANY_DATASOURCE_DIRECTORY = "src/test/data/json";
+    protected static final String ANY_DATASOURCE_FILE_01 = ANY_DATASOURCE_DIRECTORY + "/environments.json";
+    protected static final String ANY_DATASOURCE_FILE_02 = ANY_DATASOURCE_DIRECTORY + "/list.json";
+    protected static final String ANY_OUTPUT_DIRECTORY_NAME = "target";
+
+    protected static OutputGeneratorDefinition outputGeneratorDefinition() {
+        return new OutputGeneratorDefinition();
+    }
+
+    protected static Settings settings(OutputGeneratorDefinition... outputGeneratorDefinitions) {
+        return Settings.builder()
+                .setOutputGeneratorDefinitions(Arrays.asList(outputGeneratorDefinitions))
+                .build();
+    }
+
+    protected static OutputSeedDefinition outputSeedDefinition(String type) {
+        final OutputSeedDefinition outputSeedDefinition = new OutputSeedDefinition();
+        outputSeedDefinition.type = type;
+        return outputSeedDefinition;
+    }
+
+    protected static TemplateSourceDefinition templateSourceDefinition(String template) {
+        final TemplateSourceDefinition templateSourceDefinition = new TemplateSourceDefinition();
+        templateSourceDefinition.template = template;
+        return templateSourceDefinition;
+    }
+
+    protected static DataSourceDefinition dataSourceDefinition(String... dataSources) {
+        final DataSourceDefinition dataSourceDefinition = new DataSourceDefinition();
+        dataSourceDefinition.dataSources = Arrays.asList(dataSources);
+        return dataSourceDefinition;
+    }
+
+    protected static TemplateOutputDefinition templateOutputDirectoryDefinition(String directoryName) {
+        final TemplateOutputDefinition templateOutputDefinition = new TemplateOutputDefinition();
+        templateOutputDefinition.outputs = singletonList(directoryName);
+        return templateOutputDefinition;
+    }
+
+    protected static OutputMapperDefinition outputMapperDefinition(String template) {
+        final OutputMapperDefinition outputMapperDefinition = new OutputMapperDefinition();
+        outputMapperDefinition.outputMapper = template;
+        return outputMapperDefinition;
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
index 3c8f6ef..ae9fa68 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/ConfigurationSupplierTest.java
@@ -29,8 +29,6 @@ import static org.junit.Assert.assertTrue;
 
 public class ConfigurationSupplierTest {
 
-    private static final String ANY_TEMPLATE_NAME = "templateName";
-
     @Test
     public void shouldProvideDefaultConfiguration() {
         final ConfigurationSupplier configurationSupplier = configurationSupplier(settingsBuilder().build());
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
new file mode 100644
index 0000000..b1876e6
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/DataSourceSeedingOutputGeneratorTest.java
@@ -0,0 +1,82 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.SeedType;
+import org.apache.freemarker.generator.base.output.OutputGenerator;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class DataSourceSeedingOutputGeneratorTest extends AbstractOutputGeneratorTest {
+
+    @Test
+    public void shouldCreateOutputGeneratorForAllDataSourcesInDirectory() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_DIRECTORY);
+        outputGeneratorDefinition.outputSeedDefinition = outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition.outputMapperDefinition = outputMapperDefinition("*.txt");
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "environments.txt"), outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "list.txt"), outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+
+    @Test
+    public void shouldCreateOutputGeneratorForEachDataSource() {
+        final OutputGeneratorDefinition outputGeneratorDefinition_01 = outputGeneratorDefinition();
+        outputGeneratorDefinition_01.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_01.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_01.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_FILE_01);
+        outputGeneratorDefinition_01.outputSeedDefinition = outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition_01.outputMapperDefinition = outputMapperDefinition("*.txt");
+
+        final OutputGeneratorDefinition outputGeneratorDefinition_02 = outputGeneratorDefinition();
+        outputGeneratorDefinition_02.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_02.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_02.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition_02.outputSeedDefinition = outputSeedDefinition(SeedType.DATASOURCE);
+        outputGeneratorDefinition_02.outputMapperDefinition = outputMapperDefinition("*.txt");
+
+        final Settings settings = settings(outputGeneratorDefinition_01, outputGeneratorDefinition_02);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "environments.txt"), outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.DATASOURCE, outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME, "list.txt"), outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+}
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java
new file mode 100644
index 0000000..3316c44
--- /dev/null
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateSeedingOutputGeneratorTest.java
@@ -0,0 +1,96 @@
+package org.apache.freemarker.generator.cli.config;
+
+import org.apache.freemarker.generator.base.FreeMarkerConstants.SeedType;
+import org.apache.freemarker.generator.base.output.OutputGenerator;
+import org.apache.freemarker.generator.cli.picocli.OutputGeneratorDefinition;
+import org.junit.Test;
+
+import java.io.File;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+
+public class TemplateSeedingOutputGeneratorTest extends AbstractOutputGeneratorTest {
+
+    @Test
+    public void shouldCreateSingleOutputGeneratorForMultipleDataSources() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_FILE_01, ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition.outputSeedDefinition = outputSeedDefinition(SeedType.TEMPLATE);
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator = outputGenerators.get(0);
+
+        assertEquals(1, outputGenerators.size());
+        assertEquals(2, outputGenerator.getDataSources().size());
+
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, outputGenerator.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), outputGenerator.getTemplateOutput().getFile());
+        assertEquals("environments.json", outputGenerator.getDataSources().get(0).getFileName());
+        assertEquals("list.json", outputGenerator.getDataSources().get(1).getFileName());
+    }
+
+    @Test
+    public void shouldCreateSingleOutputGeneratorForAllDataSourcesInDirectory() {
+        final OutputGeneratorDefinition outputGeneratorDefinition = outputGeneratorDefinition();
+        outputGeneratorDefinition.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_DIRECTORY);
+        outputGeneratorDefinition.outputSeedDefinition = outputSeedDefinition(SeedType.TEMPLATE);
+        final Settings settings = settings(outputGeneratorDefinition);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator = outputGenerators.get(0);
+
+        assertEquals(1, outputGenerators.size());
+        assertEquals(2, outputGenerator.getDataSources().size());
+
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, outputGenerator.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), outputGenerator.getTemplateOutput().getFile());
+        assertEquals("environments.json", outputGenerator.getDataSources().get(0).getFileName());
+        assertEquals("list.json", outputGenerator.getDataSources().get(1).getFileName());
+    }
+
+    @Test
+    public void shouldCreateMultipleOutputGenerators() {
+        final OutputGeneratorDefinition outputGeneratorDefinition_01 = outputGeneratorDefinition();
+        outputGeneratorDefinition_01.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_01.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_01.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_FILE_01);
+        outputGeneratorDefinition_01.outputSeedDefinition = outputSeedDefinition(SeedType.TEMPLATE);
+
+        final OutputGeneratorDefinition outputGeneratorDefinition_02 = outputGeneratorDefinition();
+        outputGeneratorDefinition_02.templateSourceDefinition = templateSourceDefinition(ANY_TEMPLATE);
+        outputGeneratorDefinition_02.templateOutputDefinition = templateOutputDirectoryDefinition(ANY_OUTPUT_DIRECTORY_NAME);
+        outputGeneratorDefinition_02.dataSourceDefinition = dataSourceDefinition(ANY_DATASOURCE_FILE_02);
+        outputGeneratorDefinition_02.outputSeedDefinition = outputSeedDefinition(SeedType.TEMPLATE);
+
+        final Settings settings = settings(outputGeneratorDefinition_01, outputGeneratorDefinition_02);
+        final OutputGeneratorsSupplier outputGeneratorsSupplier = new OutputGeneratorsSupplier(settings);
+
+        final List<OutputGenerator> outputGenerators = outputGeneratorsSupplier.get();
+        final OutputGenerator outputGenerator_01 = outputGenerators.get(0);
+        final OutputGenerator outputGenerator_02 = outputGenerators.get(1);
+
+        assertEquals(2, outputGenerators.size());
+
+        assertEquals(1, outputGenerator_01.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, outputGenerator_01.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_01.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), outputGenerator_01.getTemplateOutput().getFile());
+        assertEquals("environments.json", outputGenerator_01.getDataSources().get(0).getFileName());
+
+        assertEquals(1, outputGenerator_02.getDataSources().size());
+        assertEquals(OutputGenerator.SeedType.TEMPLATE, outputGenerator_02.getSeedType());
+        assertEquals(ANY_TEMPLATE_NAME, outputGenerator_02.getTemplateSource().getName());
+        assertEquals(new File(ANY_OUTPUT_DIRECTORY_NAME), outputGenerator_02.getTemplateOutput().getFile());
+        assertEquals("list.json", outputGenerator_02.getDataSources().get(0).getFileName());
+    }
+}