From 2a87b81596b692b8191a5be6ecc88a7a889bd88c Mon Sep 17 00:00:00 2001 From: Jerome Garec Date: Sat, 28 Jul 2018 09:56:48 +0200 Subject: [PATCH] Implements #4 : * Directory or includes are now optional (when the other one is set) * Add new tests * Fix a bug where files paths where relative to the plugin and not the tested project * Fix previous tests --- .../org/utplsql/maven/plugin/UtPLSQLMojo.java | 12 +-- .../maven/plugin/helper/PluginDefault.java | 22 +++-- .../maven/plugin/helper/SQLScannerHelper.java | 21 +++-- .../maven/plugin/test/UtPLSQLMojoTest.java | 53 ++++++++++++ .../missingDirectory/pom.xml | 80 +++++++++++++++++++ .../missingDirectory/src/main/plsql/f1.sql | 0 .../src/main/plsql/foo/f2.sql | 0 .../missingDirectory/src/test/plsql/f2.pkg | 0 .../src/test/plsql/foo/f1.pkg | 0 .../src/test/plsql/foo/f1.sql | 0 .../missingIncludes/pom.xml | 70 ++++++++++++++++ .../missingIncludes/src/main/foo/f1.sql | 0 .../missingIncludes/src/main/foo/foo/f2.sql | 0 .../missingIncludes/src/test/bar/f2.pkg | 0 .../missingIncludes/src/test/bar/foo/f1.pkg | 0 .../missingIncludes/src/test/bar/foo/f1.sql | 0 .../resources/testSourcesTestsParams/pom.xml | 4 +- 17 files changed, 242 insertions(+), 20 deletions(-) create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/pom.xml create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/f1.sql create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/foo/f2.sql create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/f2.pkg create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.pkg create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.sql create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/pom.xml create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/f1.sql create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/foo/f2.sql create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/f2.pkg create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.pkg create mode 100644 utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.sql diff --git a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/UtPLSQLMojo.java b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/UtPLSQLMojo.java index 8673638..d25793c 100644 --- a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/UtPLSQLMojo.java +++ b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/UtPLSQLMojo.java @@ -208,13 +208,13 @@ private FileMapperOptions buildSourcesOptions() throws MojoExecutionException { if (sources.isEmpty()) { File defaultSourceDirectory = new File(project.getBasedir(),PluginDefault.SOURCE_DIRECTORY); if (defaultSourceDirectory.exists()) { - sources.add(PluginDefault.buildDefaultSource(project.getBasedir())); + sources.add(PluginDefault.buildDefaultSource()); } else { return new FileMapperOptions(new ArrayList()); } } - List scripts = SQLScannerHelper.findSQLs(project.getBasedir(),sources); + List scripts = SQLScannerHelper.findSQLs(project.getBasedir(),sources,PluginDefault.SOURCE_DIRECTORY, PluginDefault.SOURCE_FILE_PATTERN); FileMapperOptions fileMapperOptions = new FileMapperOptions(scripts); if (StringUtils.isNotEmpty(sourcesOwner)) { @@ -263,15 +263,15 @@ private FileMapperOptions buildTestsOptions() throws MojoExecutionException { try { // Check if this element is empty if (tests.isEmpty()) { - File defaultTestDirecyory = new File(project.getBasedir(),PluginDefault.TEST_DIRECTORY); - if (defaultTestDirecyory.exists()) { - tests.add(PluginDefault.buildDefaultTest(project.getBasedir())); + File defaultTestDirectory = new File(project.getBasedir(),PluginDefault.TEST_DIRECTORY); + if (defaultTestDirectory.exists()) { + tests.add(PluginDefault.buildDefaultTest()); } else { return new FileMapperOptions(new ArrayList()); } } - List scripts = SQLScannerHelper.findSQLs(project.getBasedir(),tests); + List scripts = SQLScannerHelper.findSQLs(project.getBasedir(),tests,PluginDefault.TEST_DIRECTORY, PluginDefault.TEST_FILE_PATTERN); FileMapperOptions fileMapperOptions = new FileMapperOptions(scripts); if (StringUtils.isNotEmpty(testsOwner)) { diff --git a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/PluginDefault.java b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/PluginDefault.java index eb615fe..f645fcb 100644 --- a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/PluginDefault.java +++ b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/PluginDefault.java @@ -26,6 +26,16 @@ public class PluginDefault // Test Directory public static final String TEST_DIRECTORY = "src/test/plsql"; + + /** + * Default source file pattern. + */ + public static final String SOURCE_FILE_PATTERN = "**/*.*"; + + /** + * Default test file pattern. + */ + public static final String TEST_FILE_PATTERN = "**/*.pkg"; private PluginDefault() { @@ -37,9 +47,9 @@ private PluginDefault() * * @return a {@link Resource} */ - public static Resource buildDefaultSource(File baseDir) + public static Resource buildDefaultSource() { - return buildDirectory(baseDir,SOURCE_DIRECTORY, "**/*.*"); + return buildDirectory(SOURCE_DIRECTORY, SOURCE_FILE_PATTERN); } /** @@ -47,15 +57,15 @@ public static Resource buildDefaultSource(File baseDir) * * @return a {@link Resource} */ - public static Resource buildDefaultTest(File baseDir) + public static Resource buildDefaultTest() { - return buildDirectory(baseDir, TEST_DIRECTORY, "**/*.pkg"); + return buildDirectory(TEST_DIRECTORY, TEST_FILE_PATTERN); } - private static Resource buildDirectory(File baseDir, String directory, String includes) + private static Resource buildDirectory(String directory, String includes) { Resource resource = new Resource(); - resource.setDirectory(baseDir.getAbsolutePath()+"/"+directory); + resource.setDirectory(directory); resource.setIncludes(Arrays.asList(includes)); return resource; } diff --git a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/SQLScannerHelper.java b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/SQLScannerHelper.java index 4a177f8..b73facf 100644 --- a/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/SQLScannerHelper.java +++ b/utplsql-maven-plugin/src/main/java/org/utplsql/maven/plugin/helper/SQLScannerHelper.java @@ -27,12 +27,21 @@ private SQLScannerHelper() { * @param resouces * @return */ - public static List findSQLs(File baseDir,List resources) { + public static List findSQLs(File baseDir,List resources, String defaultDirectory, String defaultFilePattern) { List founds = new ArrayList(); for (Resource resource : resources) { + if (resource.getDirectory() == null) { + // use default directory if not set. + resource.setDirectory(defaultDirectory); + } + + if (resource.getIncludes().isEmpty()) { + // use default file pattern if not set. + resource.getIncludes().add(defaultFilePattern); + } // Build Scanner - DirectoryScanner scanner = buildScanner(resource); + DirectoryScanner scanner = buildScanner(baseDir.getPath(),resource); scanner.scan(); for (String basename : scanner.getIncludedFiles()) { founds.add(baseDir.toURI().relativize(new File(scanner.getBasedir(), basename).toURI()).getPath()); @@ -51,16 +60,16 @@ public static List findSQLs(File baseDir,List resources) { * @param resource * @return */ - private static DirectoryScanner buildScanner(Resource resource) { + private static DirectoryScanner buildScanner(String baseDir,Resource resource) { if (resource != null) { - File baseDir = new File(resource.getDirectory()); - if (!baseDir.exists() || !baseDir.isDirectory() || !baseDir.canRead()) { + File fileBaseDir = new File(baseDir,resource.getDirectory()); + if (!fileBaseDir.exists() || !fileBaseDir.isDirectory() || !fileBaseDir.canRead()) { throw new IllegalArgumentException( format("Invalid %s in resource. Check your pom.xml", resource.getDirectory())); } DirectoryScanner scanner = new DirectoryScanner(); - scanner.setBasedir(resource.getDirectory()); + scanner.setBasedir(fileBaseDir.getPath()); scanner.setIncludes(resource.getIncludes().toArray(new String[0])); scanner.setExcludes(resource.getExcludes().toArray(new String[0])); return scanner; diff --git a/utplsql-maven-plugin/src/test/java/org/utplsql/maven/plugin/test/UtPLSQLMojoTest.java b/utplsql-maven-plugin/src/test/java/org/utplsql/maven/plugin/test/UtPLSQLMojoTest.java index bb69e06..b51bb7d 100644 --- a/utplsql-maven-plugin/src/test/java/org/utplsql/maven/plugin/test/UtPLSQLMojoTest.java +++ b/utplsql-maven-plugin/src/test/java/org/utplsql/maven/plugin/test/UtPLSQLMojoTest.java @@ -158,4 +158,57 @@ public void testSourcesAndTestsParameterDoesNotExistButDefaultDirectoryExists() assertTrue(tests.getFilePaths().contains("src/test/plsql/f2.pkg")); } + + /** + * testSourcesAndTestsParameterHaveNotDirectoryTag. + * + * Given : a pom.xml with source and test tag not containing a directory tag. + * When : pom is read and buildSourcesOptions / buildTestsOptions are run + * Then : it should find all sources/tests files in default directories + */ + @Test + public void testSourcesAndTestsParameterHaveNotDirectoryTag() throws Exception { + UtPLSQLMojo utplsqlMojo = (UtPLSQLMojo) rule.lookupConfiguredMojo(new File("src/test/resources/partialSourceAndTestTag/missingDirectory/"), "test"); + Assert.assertNotNull(utplsqlMojo); + + // check sources + FileMapperOptions sources = Whitebox.invokeMethod(utplsqlMojo, "buildSourcesOptions"); + assertEquals(2, sources.getFilePaths().size()); + assertTrue(sources.getFilePaths().contains("src/main/plsql/f1.sql")); + assertTrue(sources.getFilePaths().contains("src/main/plsql/foo/f2.sql")); + + // check tests + FileMapperOptions tests = Whitebox.invokeMethod(utplsqlMojo, "buildTestsOptions"); + assertEquals(3, tests.getFilePaths().size()); + assertTrue(tests.getFilePaths().contains("src/test/plsql/foo/f1.pkg")); + assertTrue(tests.getFilePaths().contains("src/test/plsql/f2.pkg")); + assertTrue(tests.getFilePaths().contains("src/test/plsql/foo/f1.sql")); + } + + /** + * testSourcesAndTestsParameterHaveNotDirectoryTag. + * + * Given : a pom.xml with source and test tag not containing a directory tag. + * When : pom is read and buildSourcesOptions / buildTestsOptions are run + * Then : it should find all sources/tests files in default directories + */ + @Test + public void testSourcesAndTestsParameterHaveNotIncludesTag() throws Exception { + UtPLSQLMojo utplsqlMojo = (UtPLSQLMojo) rule.lookupConfiguredMojo(new File("src/test/resources/partialSourceAndTestTag/missingIncludes/"), "test"); + Assert.assertNotNull(utplsqlMojo); + + // check sources + FileMapperOptions sources = Whitebox.invokeMethod(utplsqlMojo, "buildSourcesOptions"); + assertEquals(2, sources.getFilePaths().size()); + assertTrue(sources.getFilePaths().contains("src/main/foo/f1.sql")); + assertTrue(sources.getFilePaths().contains("src/main/foo/foo/f2.sql")); + + // check tests + FileMapperOptions tests = Whitebox.invokeMethod(utplsqlMojo, "buildTestsOptions"); + assertEquals(2, tests.getFilePaths().size()); + assertTrue(tests.getFilePaths().contains("src/test/bar/foo/f1.pkg")); + assertTrue(tests.getFilePaths().contains("src/test/bar/f2.pkg")); + } + + } diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/pom.xml b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/pom.xml new file mode 100644 index 0000000..796dda3 --- /dev/null +++ b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/pom.xml @@ -0,0 +1,80 @@ + + 4.0.0 + + + org.utplsql + utplsql-maven-plugin-test + 3.1.0-SNAPSHOT + + pom + + utplsql-maven-plugin Maven Plugin Test + + http://utplsql.org + + + jdbc:oracle:thin:@180.129.3.101:1521:xe + ut3 + XNtxj8eEgA6X6b6f + / + + + + + + + org.utplsql + utplsql-maven-plugin + {project.version} + + test + + + + + false + + + :plsql + + + + + UT_COVERAGE_SONAR_REPORTER + utplsql/coverage-sonar-reporter.xml + true + + + UT_SONAR_TEST_REPORTER + utplsql/sonar-test-reporter.xml + true + + + + + + + **/*sql + + + + + + + **/*sql + + + + + + **/*.pkg + + + + + + + + \ No newline at end of file diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/f1.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/f1.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/foo/f2.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/main/plsql/foo/f2.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/f2.pkg b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/f2.pkg new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.pkg b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.pkg new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingDirectory/src/test/plsql/foo/f1.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/pom.xml b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/pom.xml new file mode 100644 index 0000000..e6459bf --- /dev/null +++ b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/pom.xml @@ -0,0 +1,70 @@ + + 4.0.0 + + + org.utplsql + utplsql-maven-plugin-test + 3.1.0-SNAPSHOT + + pom + + utplsql-maven-plugin Maven Plugin Test + + http://utplsql.org + + + jdbc:oracle:thin:@180.129.3.101:1521:xe + ut3 + XNtxj8eEgA6X6b6f + / + + + + + + + org.utplsql + utplsql-maven-plugin + {project.version} + + test + + + + + false + + + :plsql + + + + + UT_COVERAGE_SONAR_REPORTER + utplsql/coverage-sonar-reporter.xml + true + + + UT_SONAR_TEST_REPORTER + utplsql/sonar-test-reporter.xml + true + + + + + + src/main/foo + + + + + src/test/bar + + + + + + + \ No newline at end of file diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/f1.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/f1.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/foo/f2.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/main/foo/foo/f2.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/f2.pkg b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/f2.pkg new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.pkg b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.pkg new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.sql b/utplsql-maven-plugin/src/test/resources/partialSourceAndTestTag/missingIncludes/src/test/bar/foo/f1.sql new file mode 100644 index 0000000..e69de29 diff --git a/utplsql-maven-plugin/src/test/resources/testSourcesTestsParams/pom.xml b/utplsql-maven-plugin/src/test/resources/testSourcesTestsParams/pom.xml index 69ba53e..21139f8 100644 --- a/utplsql-maven-plugin/src/test/resources/testSourcesTestsParams/pom.xml +++ b/utplsql-maven-plugin/src/test/resources/testSourcesTestsParams/pom.xml @@ -55,7 +55,7 @@ - src/test/resources/testSourcesTestsParams/srcs + srcs **/*sql @@ -75,7 +75,7 @@ - src/test/resources/testSourcesTestsParams/te/st + te/st **/*.spc **/*.bdy