This is an automated email from the ASF dual-hosted git repository. sgoeschl pushed a commit to branch FREEMARKER-156 in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git
commit f5ad17b19c1f97244d0e408ecb16be50523968d8 Author: Siegfried Goeschl <[email protected]> AuthorDate: Fri Jan 22 23:33:31 2021 +0100 FREEMARKER-156 [freemarker-generator] Cleanup the code and pump dependencies --- freemarker-generator-maven-plugin/pom.xml | 18 ++- .../freemarker/generator/maven/FreeMarkerMojo.java | 3 +- .../generator/maven/GeneratingFileVisitor.java | 6 +- .../generator/maven/FreeMarkerMojoTest.java | 98 ++++++------ .../generator/maven/GeneratingFileVisitorTest.java | 62 ++++---- .../maven/JsonPropertiesProviderTest.java | 56 ++++--- .../generator/maven/OperatingSystem.java | 40 ----- .../generator/maven/OutputGeneratorTest.java | 176 ++++++++++----------- 8 files changed, 208 insertions(+), 251 deletions(-) diff --git a/freemarker-generator-maven-plugin/pom.xml b/freemarker-generator-maven-plugin/pom.xml index 0d7635c..c6bcb3b 100644 --- a/freemarker-generator-maven-plugin/pom.xml +++ b/freemarker-generator-maven-plugin/pom.xml @@ -32,14 +32,13 @@ <description>Maven plugin for Apache FreeMarker</description> <properties> - <maven-core.version>3.5.2</maven-core.version> - <maven-plugin-api.version>3.5.2</maven-plugin-api.version> - <maven-plugin-annotations.version>3.5</maven-plugin-annotations.version> - <fastutil.version>8.1.0</fastutil.version> + <maven-core.version>3.6.3</maven-core.version> + <maven-plugin-api.version>3.6.3</maven-plugin-api.version> + <maven-plugin-annotations.version>3.6.0</maven-plugin-annotations.version> <gson.version>2.8.6</gson.version> - <jmockit.version>1.32</jmockit.version> - <org.testng.version>6.8</org.testng.version> - <assertj-core.version>3.8.0</assertj-core.version> + <jmockit.version>1.40</jmockit.version> + <org.testng.version>7.3.0</org.testng.version> + <assertj-core.version>3.18.1</assertj-core.version> </properties> <dependencies> @@ -104,6 +103,11 @@ <artifactId>freemarker</artifactId> </dependency> <dependency> + <groupId>org.apache.freemarker.generator</groupId> + <artifactId>freemarker-generator-base</artifactId> + <version>${project.version}</version> + </dependency> + <dependency> <groupId>org.testng</groupId> <artifactId>testng</artifactId> <version>${org.testng.version}</version> diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java index 4add19b..5ea8bc1 100644 --- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java +++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/FreeMarkerMojo.java @@ -25,7 +25,6 @@ import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.MojoExecutionException; -import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; @@ -63,7 +62,7 @@ public class FreeMarkerMojo extends AbstractMojo { private MojoExecution mojo; @Override - public void execute() throws MojoExecutionException, MojoFailureException { + public void execute() throws MojoExecutionException { if (freeMarkerVersion == null || freeMarkerVersion.isEmpty()) { throw new MojoExecutionException("freeMarkerVersion is required"); diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java index 7f1fc51..d4ef85a 100644 --- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java +++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java @@ -30,7 +30,7 @@ import java.util.Map; /** * FileVisitor designed to process json data files. The json file parsed into - * a map and given to FreeMarker to + * a map and given to FreeMarker to. */ public class GeneratingFileVisitor extends SimpleFileVisitor<Path> { @@ -68,8 +68,8 @@ public class GeneratingFileVisitor extends SimpleFileVisitor<Path> { .addGeneratorLocation(path) .addPomLastModifiedTimestamp(pomLastModifiedTimestamp); final String fileName = path.getFileName().toString(); - final String extenstion = fileName.substring(fileName.lastIndexOf('.')); - final OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extenstion); + final String extension = fileName.substring(fileName.lastIndexOf('.')); + final OutputGeneratorPropertiesProvider pathProcessor = extensionToBuilder.get(extension); if (pathProcessor == null) { throw new RuntimeException("Unknown file extension: " + path); } diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java index 9ac1734..4f69d5f 100644 --- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java +++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/FreeMarkerMojoTest.java @@ -27,6 +27,7 @@ import mockit.Expectations; import mockit.Mocked; import mockit.Verifications; import org.apache.commons.io.FilenameUtils; +import org.apache.freemarker.generator.base.util.OperatingSystem; import org.apache.maven.execution.MavenSession; import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.MojoExecutionException; @@ -50,7 +51,7 @@ import static org.assertj.core.api.Assertions.*; public class FreeMarkerMojoTest extends Assert { private static final File TEST_OUTPUT_DIR = new File("target/test-output/freemarker-mojo"); - private static final String FREEMARKER_VERSION = "2.3.29"; + private static final String FREEMARKER_VERSION = "2.3.30"; @BeforeClass public static void beforeClass() throws IOException { @@ -80,17 +81,17 @@ public class FreeMarkerMojoTest extends Assert { result = project; }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); // Validate freeMarkerVersion is required. - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }).withMessage("freeMarkerVersion is required"); + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) + .withMessage("freeMarkerVersion is required"); Deencapsulation.setField(mojo, "freeMarkerVersion", ""); - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }).withMessage("freeMarkerVersion is required"); + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) + .withMessage("freeMarkerVersion is required"); final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); @@ -102,15 +103,13 @@ public class FreeMarkerMojoTest extends Assert { Deencapsulation.setField(mojo, "session", session); // Validate source directory. - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }) + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) .withMessageStartingWith("Required directory does not exist"); new File(testCaseOutputDir, "data").mkdirs(); - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }) + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) .withMessageStartingWith("Required directory does not exist"); new File(testCaseOutputDir, "template").mkdirs(); @@ -121,9 +120,9 @@ public class FreeMarkerMojoTest extends Assert { project.addCompileSourceRoot(fixSeparators("target/test-output/freemarker-mojo/executeTest/generated-files")); times = 1; - Configuration config; - MavenSession capturedSession; - Map<String, OutputGeneratorPropertiesProvider> builders; + final Configuration config; + final MavenSession capturedSession; + final Map<String, OutputGeneratorPropertiesProvider> builders; GeneratingFileVisitor.create( config = withCapture(), @@ -133,11 +132,11 @@ public class FreeMarkerMojoTest extends Assert { assertEquals("UTF-8", config.getDefaultEncoding()); assertEquals(session, capturedSession); - TemplateLoader loader = config.getTemplateLoader(); + final TemplateLoader loader = config.getTemplateLoader(); assertTrue(loader instanceof FileTemplateLoader); - Path path; - FileVisitor<Path> fileVisitor; + final Path path; + final FileVisitor<Path> fileVisitor; Files.walkFileTree(path = withCapture(), fileVisitor = withCapture()); times = 1; @@ -154,7 +153,7 @@ public class FreeMarkerMojoTest extends Assert { @Mocked MojoExecution mojoExecution, @Mocked GeneratingFileVisitor generatingFileVisitor, @Mocked Files files - ) throws MojoExecutionException, MojoFailureException, IOException { + ) throws MojoExecutionException, MojoFailureException { new Expectations(mojoExecution, generatingFileVisitor) {{ mojoExecution.getLifecyclePhase(); @@ -163,9 +162,9 @@ public class FreeMarkerMojoTest extends Assert { result = project; }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir); Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template")); @@ -193,7 +192,7 @@ public class FreeMarkerMojoTest extends Assert { @Mocked MojoExecution mojoExecution, @Mocked GeneratingFileVisitor generatingFileVisitor, @Mocked Files files - ) throws MojoExecutionException, MojoFailureException, IOException { + ) throws IOException { new Expectations(mojoExecution, generatingFileVisitor) {{ mojoExecution.getLifecyclePhase(); @@ -204,9 +203,9 @@ public class FreeMarkerMojoTest extends Assert { result = new RuntimeException("test exception"); }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir); Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template")); @@ -218,9 +217,8 @@ public class FreeMarkerMojoTest extends Assert { new File(testCaseOutputDir, "data").mkdirs(); new File(testCaseOutputDir, "template").mkdirs(); - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }) + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) .withMessageStartingWith("Failed to process files in generator dir"); } @@ -239,9 +237,9 @@ public class FreeMarkerMojoTest extends Assert { result = new RuntimeException("test exception"); }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "setTemplateLoaderException"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "setTemplateLoaderException"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir); @@ -254,9 +252,8 @@ public class FreeMarkerMojoTest extends Assert { new File(testCaseOutputDir, "data").mkdirs(); new File(testCaseOutputDir, "template").mkdirs(); - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }) + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) .withMessageStartingWith("Could not establish file template loader for directory"); } @@ -267,10 +264,9 @@ public class FreeMarkerMojoTest extends Assert { @Mocked MojoExecution mojoExecution, @Mocked Configuration config) throws Exception { - FreeMarkerMojo mojo = new FreeMarkerMojo(); - - File sourceDirectory = new File("src/test/data/freemarker-mojo"); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties"); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); + final File sourceDirectory = new File("src/test/data/freemarker-mojo"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory); @@ -283,7 +279,7 @@ public class FreeMarkerMojoTest extends Assert { mojo.execute(); new Verifications() {{ - Properties properties; + final Properties properties; config.setSettings(properties = withCapture()); times = 1; @@ -305,10 +301,10 @@ public class FreeMarkerMojoTest extends Assert { result = new RuntimeException("test exception"); }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); - File sourceDirectory = new File("src/test/data/freemarker-mojo"); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerPropertiesExceptionTest"); + final File sourceDirectory = new File("src/test/data/freemarker-mojo"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerPropertiesExceptionTest"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory); @@ -320,9 +316,9 @@ public class FreeMarkerMojoTest extends Assert { System.out.println("==== before mojo execute"); try { - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }).withMessage(fixSeparators("Failed to load src/test/data/freemarker-mojo/freemarker.properties")); + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) + .withMessage(fixSeparators("Failed to load src/test/data/freemarker-mojo/freemarker.properties")); } catch (Throwable t) { t.printStackTrace(); } @@ -340,10 +336,10 @@ public class FreeMarkerMojoTest extends Assert { result = new RuntimeException("test exception"); }}; - FreeMarkerMojo mojo = new FreeMarkerMojo(); + final FreeMarkerMojo mojo = new FreeMarkerMojo(); - File sourceDirectory = new File("src/test/data/freemarker-mojo"); - File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties"); + final File sourceDirectory = new File("src/test/data/freemarker-mojo"); + final File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties"); Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION); Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory); @@ -353,9 +349,9 @@ public class FreeMarkerMojoTest extends Assert { Deencapsulation.setField(mojo, "mojo", mojoExecution); Deencapsulation.setField(mojo, "session", session); - assertThatExceptionOfType(MojoExecutionException.class).isThrownBy(() -> { - mojo.execute(); - }).withMessage(fixSeparators("Invalid setting(s) in src/test/data/freemarker-mojo/freemarker.properties")); + assertThatExceptionOfType(MojoExecutionException.class) + .isThrownBy(mojo::execute) + .withMessage(fixSeparators("Invalid setting(s) in src/test/data/freemarker-mojo/freemarker.properties")); } private static String fixSeparators(String str) { diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java index d2c9803..a3fffcc 100644 --- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java +++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/GeneratingFileVisitorTest.java @@ -48,19 +48,19 @@ import static org.assertj.core.api.Assertions.*; public class GeneratingFileVisitorTest extends Assert { - private static File testDir = new File("src/test/data/generating-file-visitor"); - private static File dataDir = new File(testDir, "data"); - private static File templateDir = new File(testDir, "template"); - private static File outputDir = new File("target/test-output/generating-file-visitor"); - private static Map<String, OutputGeneratorPropertiesProvider> builders = new HashMap<>(); + private static final File TEST_DIR = new File("src/test/data/generating-file-visitor"); + private static final File DATA_DIR = new File(TEST_DIR, "data"); + private static final File TEMPLATE_DIR = new File(TEST_DIR, "template"); + private static final File OUTPUT_DIR = new File("target/test-output/generating-file-visitor"); + private static final Map<String, OutputGeneratorPropertiesProvider> BUILDERS = new HashMap<>(); private Configuration config; - private Properties pomProperties = new Properties(); + private final Properties pomProperties = new Properties(); @BeforeClass public static void beforeClass() throws IOException { - builders.put(".json", JsonPropertiesProvider.create(dataDir, templateDir, outputDir)); + BUILDERS.put(".json", JsonPropertiesProvider.create(DATA_DIR, TEMPLATE_DIR, OUTPUT_DIR)); // Clean output dir before each run. - File outputDir = new File("target/test-output/generating-file-visitor"); + final File outputDir = new File("target/test-output/generating-file-visitor"); if (outputDir.exists()) { // Recursively delete output from previous run. Files.walk(outputDir.toPath()) @@ -72,15 +72,15 @@ public class GeneratingFileVisitorTest extends Assert { @BeforeMethod public void before() throws IOException { - if (!testDir.isDirectory()) { + if (!TEST_DIR.isDirectory()) { throw new RuntimeException("Can't find required test data directory. " + "If running test outside of maven, make sure working directory is the project directory. " - + "Looking for: " + testDir); + + "Looking for: " + TEST_DIR); } config = new Configuration(Configuration.VERSION_2_3_23); config.setDefaultEncoding("UTF-8"); - config.setTemplateLoader(new FileTemplateLoader(templateDir)); + config.setTemplateLoader(new FileTemplateLoader(TEMPLATE_DIR)); pomProperties.put("pomVar", "pom value"); } @@ -90,7 +90,7 @@ public class GeneratingFileVisitorTest extends Assert { @Mocked MavenProject project, @Mocked File mockFile, @Mocked BasicFileAttributes attrs) throws IOException { - List<MavenProject> projects = new ArrayList<>(); + final List<MavenProject> projects = new ArrayList<>(); projects.add(project); new Expectations(session, project, mockFile) {{ session.getCurrentProject(); @@ -107,13 +107,13 @@ public class GeneratingFileVisitorTest extends Assert { result = 10; }}; - File file = new File(dataDir, "mydir/success-test-2.txt.json"); - GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders); + final File file = new File(DATA_DIR, "mydir/success-test-2.txt.json"); + final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, BUILDERS); assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs)); - File outputFile = new File(outputDir, "mydir/success-test-2.txt"); + final File outputFile = new File(OUTPUT_DIR, "mydir/success-test-2.txt"); assertTrue(outputFile.isFile()); - List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); + final List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); assertEquals(17, lines.size()); assertEquals("This is a test freemarker template. Test pom data: 'pom value'.", lines.get(16)); } @@ -124,7 +124,7 @@ public class GeneratingFileVisitorTest extends Assert { @Mocked MavenProject project, @Mocked File mockFile, @Mocked BasicFileAttributes attrs) throws IOException { - List<MavenProject> projects = new ArrayList<>(); + final List<MavenProject> projects = new ArrayList<>(); projects.add(project); new Expectations(session, project, mockFile) {{ session.getCurrentProject(); @@ -141,13 +141,13 @@ public class GeneratingFileVisitorTest extends Assert { result = 10; }}; - File file = new File(dataDir, "mydir/success-test.txt.json"); - GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders); + final File file = new File(DATA_DIR, "mydir/success-test.txt.json"); + final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, BUILDERS); assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(file.toPath(), attrs)); - File outputFile = new File(outputDir, "mydir/success-test.txt"); + final File outputFile = new File(OUTPUT_DIR, "mydir/success-test.txt"); assertTrue(outputFile.isFile()); - List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); + final List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); assertEquals(17, lines.size()); assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines .get(16)); @@ -158,8 +158,8 @@ public class GeneratingFileVisitorTest extends Assert { @Mocked MavenSession session, @Mocked MavenProject project, @Mocked File mockFile, - @Mocked BasicFileAttributes attrs) throws IOException { - List<MavenProject> projects = new ArrayList<>(); + @Mocked BasicFileAttributes attrs) { + final List<MavenProject> projects = new ArrayList<>(); projects.add(project); new Expectations(session, project, mockFile) {{ attrs.isRegularFile(); @@ -172,11 +172,11 @@ public class GeneratingFileVisitorTest extends Assert { result = 10; }}; // Test file without .json suffix. - File file = new File(dataDir, "mydir/bad-extension-test.txt"); - GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders); - assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - gfv.visitFile(file.toPath(), attrs); - }).withMessage("Unknown file extension: " + file.toPath()); + final File file = new File(DATA_DIR, "mydir/bad-extension-test.txt"); + final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, BUILDERS); + assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> gfv.visitFile(file.toPath(), attrs)) + .withMessage("Unknown file extension: " + file.toPath()); } @Test @@ -185,7 +185,7 @@ public class GeneratingFileVisitorTest extends Assert { @Mocked BasicFileAttributes attrs, @Mocked File mockFile ) { - List<MavenProject> projects = new ArrayList<>(); + final List<MavenProject> projects = new ArrayList<>(); projects.add(project); new Expectations(session, project, mockFile) {{ attrs.isRegularFile(); @@ -199,8 +199,8 @@ public class GeneratingFileVisitorTest extends Assert { }}; // FYI: if you change above result to true, test will fail trying to read the 'mydir' directory // as a json file. - File dir = new File(dataDir, "mydir"); - GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, builders); + final File dir = new File(DATA_DIR, "mydir"); + final GeneratingFileVisitor gfv = GeneratingFileVisitor.create(config, session, BUILDERS); assertEquals(FileVisitResult.CONTINUE, gfv.visitFile(dir.toPath(), attrs)); } } diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java index bef999e..3b0e577 100644 --- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java +++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/JsonPropertiesProviderTest.java @@ -37,19 +37,19 @@ import static org.testng.AssertJUnit.assertEquals; import static org.testng.internal.junit.ArrayAsserts.assertArrayEquals; public class JsonPropertiesProviderTest { - private File testDir = new File("src/test/data/generating-file-visitor"); - private File dataDir = new File(testDir, "data"); - private File templateDir = new File(testDir, "template"); - private File outputDir = new File("target/test-output/generating-file-visitor"); + private final File testDir = new File("src/test/data/generating-file-visitor"); + private final File dataDir = new File(testDir, "data"); + private final File templateDir = new File(testDir, "template"); + private final File outputDir = new File("target/test-output/generating-file-visitor"); @Test public void testSuccess(@Mocked OutputGenerator.OutputGeneratorBuilder builder) { - Path path = dataDir.toPath().resolve("mydir/success-test.txt.json"); - Path expectedTemplateLocation = templateDir.toPath().resolve("test.ftl"); - Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test.txt"); - Map<String, Object> expectedMap = new HashMap<>(4); + final Path path = dataDir.toPath().resolve("mydir/success-test.txt.json"); + final Path expectedTemplateLocation = templateDir.toPath().resolve("test.ftl"); + final Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test.txt"); + final Map<String, Object> expectedMap = new HashMap<>(4); expectedMap.put("testVar", "test value"); - JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); + final JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); toTest.providePropertiesFromFile(path, builder); new Verifications() {{ Path templateLocation; @@ -67,11 +67,11 @@ public class JsonPropertiesProviderTest { @Test public void testSuccessNoDataModel(@Mocked OutputGenerator.OutputGeneratorBuilder builder) { - Path path = dataDir.toPath().resolve("mydir/success-test-2.txt.json"); - Path expectedTemplateLocation = templateDir.toPath().resolve("test-pom-only.ftl"); - Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test-2.txt"); - Map<String, Object> expectedMap = new HashMap<>(4); - JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); + final Path path = dataDir.toPath().resolve("mydir/success-test-2.txt.json"); + final Path expectedTemplateLocation = templateDir.toPath().resolve("test-pom-only.ftl"); + final Path expectedOutputLocation = outputDir.toPath().resolve("mydir/success-test-2.txt"); + final Map<String, Object> expectedMap = new HashMap<>(4); + final JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); toTest.providePropertiesFromFile(path, builder); new Verifications() {{ Path templateLocation; @@ -89,36 +89,34 @@ public class JsonPropertiesProviderTest { @Test public void testParsingException(@Mocked OutputGenerator.OutputGeneratorBuilder builder, @Mocked Gson gson) { - Path path = dataDir.toPath().resolve("mydir/success-test.txt.json"); + final Path path = dataDir.toPath().resolve("mydir/success-test.txt.json"); new Expectations() {{ gson.fromJson((JsonReader) any, (Type) any); result = new RuntimeException("test exception"); }}; - JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); + final JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); - assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - toTest.providePropertiesFromFile(path, builder); - }) + assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> toTest.providePropertiesFromFile(path, builder)) .withMessageStartingWith("Could not parse json data file"); } @Test public void testMissingTemplateName(@Mocked OutputGenerator.OutputGeneratorBuilder builder) { - Path path = dataDir.toPath().resolve("mydir/missing-template-name.txt.json"); - JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); + final Path path = dataDir.toPath().resolve("mydir/missing-template-name.txt.json"); + final JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); - assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - toTest.providePropertiesFromFile(path, builder); - }).withMessage("Require json data property not found: templateName"); + assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> toTest.providePropertiesFromFile(path, builder)) + .withMessage("Require json data property not found: templateName"); } @Test public void testBadPath(@Mocked OutputGenerator.OutputGeneratorBuilder builder) { - Path path = testDir.toPath().resolve("badPath/success-test.txt.json"); - JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - toTest.providePropertiesFromFile(path, builder); - }) + final Path path = testDir.toPath().resolve("badPath/success-test.txt.json"); + final JsonPropertiesProvider toTest = JsonPropertiesProvider.create(dataDir, templateDir, outputDir); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(() -> toTest.providePropertiesFromFile(path, builder)) .withMessageStartingWith("visitFile() given file not in sourceDirectory"); } } diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OperatingSystem.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OperatingSystem.java deleted file mode 100644 index 4575238..0000000 --- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OperatingSystem.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed with - * this work for additional information regarding copyright ownership. - * The ASF licenses this file to You under the Apache License, Version 2.0 - * (the "License"); you may not use this file except in compliance with - * the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.freemarker.generator.maven; - -import java.util.Locale; - -/** - * Helper class to detect the operting system (mostly Windows). - * - * TODO should be moved to "freemarker-generator-base" - */ -public class OperatingSystem { - private static final String OS = System.getProperty("os.name", "unknown").toLowerCase(Locale.ROOT); - - public static boolean isWindows() { - return OS.contains("win"); - } - - public static boolean isMac() { - return OS.contains("mac"); - } - - public static boolean isUnix() { - return OS.contains("nux"); - } -} diff --git a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java index 11308bb..023bbf8 100644 --- a/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java +++ b/freemarker-generator-maven-plugin/src/test/java/org/apache/freemarker/generator/maven/OutputGeneratorTest.java @@ -23,7 +23,6 @@ import freemarker.cache.FileTemplateLoader; import freemarker.template.Configuration; import mockit.Expectations; import mockit.Mocked; -import org.apache.commons.io.FilenameUtils; import org.assertj.core.api.*; import org.testng.annotations.BeforeClass; import org.testng.annotations.BeforeMethod; @@ -39,20 +38,22 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import static junit.framework.Assert.assertEquals; import static org.assertj.core.api.AssertionsForClassTypes.*; import static org.junit.Assert.assertArrayEquals; +import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; public class OutputGeneratorTest { - private File testDir = new File("src/test/data/generating-file-visitor"); - private File dataDir = new File(testDir, "data"); - private File templateDir = new File(testDir, "template"); - private File outputDir = new File("target/test-output/generating-file-visitor"); + private final File testDir = new File("src/test/data/generating-file-visitor"); + private final File dataDir = new File(testDir, "data"); + private final File templateDir = new File(testDir, "template"); + private final File outputDir = new File("target/test-output/generating-file-visitor"); + private final Map<String, Object> dataModel = new HashMap<>(); + private Configuration config; - private Map<String, Object> dataModel = new HashMap<String, Object>(); + @SuppressWarnings("unchecked") @BeforeMethod public void setupDataModel() { dataModel.clear(); @@ -64,7 +65,7 @@ public class OutputGeneratorTest { @BeforeClass public static void cleanFields() throws IOException { // Clean output dir before each run. - File outputDir = new File("target/test-output/generating-file-visitor"); + final File outputDir = new File("target/test-output/generating-file-visitor"); if (outputDir.exists()) { // Recursively delete output from previous run. Files.walk(outputDir.toPath()) @@ -89,37 +90,37 @@ public class OutputGeneratorTest { @Test public void createTest() { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set the pomModifiedTimestamp"); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set the pomModifiedTimestamp"); builder.addPomLastModifiedTimestamp(0); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null generatorLocation"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null generatorLocation"); - File file = new File(dataDir, "mydir/success-test.txt.json"); - builder.addGeneratorLocation(file.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null templateLocation"); + final File file = new File(dataDir, "mydir/success-test.txt.json"); + builder.addGeneratorLocation(new File(dataDir, "mydir/success-test.txt.json").toPath()); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null templateLocation"); - File templateFile = new File(templateDir, "test.ftl"); + final File templateFile = new File(templateDir, "test.ftl"); builder.addTemplateLocation(templateFile.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null outputLocation"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null outputLocation"); - File outputFile = new File(outputDir, "mydir/success-test.txt"); + final File outputFile = new File(outputDir, "mydir/success-test.txt"); builder.addOutputLocation(outputFile.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null dataModel"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null dataModel"); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); + final OutputGenerator generator = builder.create(); assertEquals(0, generator.pomModifiedTimestamp); assertEquals(file.toPath(), generator.generatorLocation); @@ -131,34 +132,34 @@ public class OutputGeneratorTest { @Test public void addToDataModelTest() { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set the pomModifiedTimestamp"); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set the pomModifiedTimestamp"); builder.addPomLastModifiedTimestamp(0); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null generatorLocation"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null generatorLocation"); - File file = new File(dataDir, "mydir/success-test.txt.json"); + final File file = new File(dataDir, "mydir/success-test.txt.json"); builder.addGeneratorLocation(file.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null templateLocation"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null templateLocation"); - File templateFile = new File(templateDir, "test.ftl"); + final File templateFile = new File(templateDir, "test.ftl"); builder.addTemplateLocation(templateFile.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null outputLocation"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null outputLocation"); - File outputFile = new File(outputDir, "mydir/success-test.txt"); + final File outputFile = new File(outputDir, "mydir/success-test.txt"); builder.addOutputLocation(outputFile.toPath()); - assertThatExceptionOfType(IllegalStateException.class).isThrownBy(() -> { - builder.create(); - }).withMessage("Must set a non-null dataModel"); + assertThatExceptionOfType(IllegalStateException.class) + .isThrownBy(builder::create) + .withMessage("Must set a non-null dataModel"); builder.addToDataModel("testVar", "testVal"); OutputGenerator generator = builder.create(); @@ -179,20 +180,20 @@ public class OutputGeneratorTest { @Test public void generate_SuccessTest() throws IOException { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); builder.addPomLastModifiedTimestamp(0); - File file = new File(dataDir, "mydir/success-test.txt.json"); + final File file = new File(dataDir, "mydir/success-test.txt.json"); builder.addGeneratorLocation(file.toPath()); - File outputFile = new File(outputDir, "mydir/success-test.txt"); + final File outputFile = new File(outputDir, "mydir/success-test.txt"); builder.addOutputLocation(outputFile.toPath()); - File templateFile = new File(templateDir, "test.ftl"); + final File templateFile = new File(templateDir, "test.ftl"); builder.addTemplateLocation(templateFile.toPath()); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); + final OutputGenerator generator = builder.create(); generator.generate(config); assertTrue(outputFile.isFile()); - List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); + final List<String> lines = Files.readAllLines(outputFile.toPath(), StandardCharsets.UTF_8); assertEquals(17, lines.size()); assertEquals("This is a test freemarker template. Test json data: 'test value'. Test pom data: 'pom value'.", lines .get(16)); @@ -217,67 +218,66 @@ public class OutputGeneratorTest { @Test public void generate_badTemplateNameTest() { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); builder.addPomLastModifiedTimestamp(0); - File file = new File(dataDir, "mydir/bad-template-name.txt.json"); + final File file = new File(dataDir, "mydir/bad-template-name.txt.json"); builder.addGeneratorLocation(file.toPath()); - File outputFile = new File(outputDir, "mydir/bad-template-name.txt"); + final File outputFile = new File(outputDir, "mydir/bad-template-name.txt"); builder.addOutputLocation(outputFile.toPath()); - File templateFile = new File(templateDir, "missing.ftl"); //this doesn't exist + final File templateFile = new File(templateDir, "missing.ftl"); //this doesn't exist builder.addTemplateLocation(templateFile.toPath()); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); - Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - generator.generate(config); - }).withMessage("Could not read template: missing.ftl"); + final OutputGenerator generator = builder.create(); + Assertions.assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> generator.generate(config)) + .withMessage("Could not read template: missing.ftl"); } @Test public void generate_missingVarTest() { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); builder.addPomLastModifiedTimestamp(0); - File file = new File(dataDir, "mydir/missing-var-test.txt.json"); + final File file = new File(dataDir, "mydir/missing-var-test.txt.json"); builder.addGeneratorLocation(file.toPath()); - File outputFile = new File(outputDir, "mydir/missing-var-test.txt"); + final File outputFile = new File(outputDir, "mydir/missing-var-test.txt"); builder.addOutputLocation(outputFile.toPath()); - File templateFile = new File(templateDir, "test.ftl"); //this is missing a + final File templateFile = new File(templateDir, "test.ftl"); //this is missing a builder.addTemplateLocation(templateFile.toPath()); dataModel.remove("testVar"); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); + final OutputGenerator generator = builder.create(); Assertions.assertThatExceptionOfType(RuntimeException.class) - .isThrownBy(() -> { - generator.generate(config); - }) + .isThrownBy(() -> generator.generate(config)) .withMessageStartingWith("Could not process template associated with data file"); } @Test public void generate_badParentTest() throws IOException { - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); builder.addPomLastModifiedTimestamp(0); - File file = new File(dataDir, "badParent/bad-parent-test.txt.json"); + final File file = new File(dataDir, "badParent/bad-parent-test.txt.json"); builder.addGeneratorLocation(file.toPath()); - File outputFile = new File(outputDir, "badParent/bad-parent-test.txt"); + final File outputFile = new File(outputDir, "badParent/bad-parent-test.txt"); builder.addOutputLocation(outputFile.toPath()); - File templateFile = new File(templateDir, "test.ftl"); //this is missing a + final File templateFile = new File(templateDir, "test.ftl"); //this is missing a builder.addTemplateLocation(templateFile.toPath()); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); + final OutputGenerator generator = builder.create(); outputDir.mkdirs(); outputFile.getParentFile().createNewFile(); - Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - generator.generate(config); - }).withMessage("Parent directory of output file is a file: " + outputFile.getParentFile().getAbsolutePath()); + Assertions.assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> generator.generate(config)) + .withMessage("Parent directory of output file is a file: " + outputFile.getParentFile() + .getAbsolutePath()); } @Test public void generate_cantCreateOutputFileParentDirTest( @Mocked FactoryUtil factoryUtil, - @Mocked File mockOutputFile) throws IOException { + @Mocked File mockOutputFile) { - File parentDir = new File("target/test-output/generating-file-visitor/mydir"); + final File parentDir = new File("target/test-output/generating-file-visitor/mydir"); new Expectations(mockOutputFile, parentDir) {{ FactoryUtil.createFile(anyString); result = mockOutputFile; @@ -289,18 +289,18 @@ public class OutputGeneratorTest { result = false; }}; - OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); + final OutputGenerator.OutputGeneratorBuilder builder = OutputGenerator.builder(); builder.addPomLastModifiedTimestamp(0); - File file = new File(dataDir, "mydir/missing-var-test.txt.json"); + final File file = new File(dataDir, "mydir/missing-var-test.txt.json"); builder.addGeneratorLocation(file.toPath()); - File outputFile = new File(outputDir, "mydir/missing-var-test.txt"); + final File outputFile = new File(outputDir, "mydir/missing-var-test.txt"); builder.addOutputLocation(outputFile.toPath()); - File templateFile = new File(templateDir, "test.ftl"); //this is missing a + final File templateFile = new File(templateDir, "test.ftl"); //this is missing a builder.addTemplateLocation(templateFile.toPath()); builder.addDataModel(dataModel); - OutputGenerator generator = builder.create(); - Assertions.assertThatExceptionOfType(RuntimeException.class).isThrownBy(() -> { - generator.generate(config); - }).withMessage("Could not create directory: " + parentDir.getAbsoluteFile().toString()); + final OutputGenerator generator = builder.create(); + Assertions.assertThatExceptionOfType(RuntimeException.class) + .isThrownBy(() -> generator.generate(config)) + .withMessage("Could not create directory: " + parentDir.getAbsoluteFile().toString()); } }
