This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/sling-htl-maven-plugin.git
commit 3ecb920206d788a12a212842489ec4efa967b5f5 Author: Radu Cotescu <[email protected]> AuthorDate: Tue Aug 1 14:07:48 2017 +0000 SLING-7025 - htl-maven-plugin: Correctly state default values for include parameter * applied slightly modified patch from Konrad Windszus git-svn-id: https://svn.apache.org/repos/asf/sling/trunk@1803644 13f79535-47bb-0310-9956-ffa450edef68 --- pom.xml | 40 ++++++++++++- .../org/apache/sling/maven/htl/ValidateMojo.java | 5 +- .../apache/sling/maven/htl/ValidateMojoTest.java | 69 +++++++++++++++++----- .../test-project/default-includes.pom.xml | 49 +++++++++++++++ 4 files changed, 145 insertions(+), 18 deletions(-) diff --git a/pom.xml b/pom.xml index c4dc3d7..d28a679 100644 --- a/pom.xml +++ b/pom.xml @@ -37,6 +37,10 @@ <url>http://svn.apache.org/viewvc/sling/trunk/tooling/maven/htl-maven-plugin</url> </scm> + <prerequisites> + <maven>3.3.9</maven><!-- due to https://issues.apache.org/jira/browse/MNG-5440 --> + </prerequisites> + <!-- Support for publishing the mvn site. --> <distributionManagement> <site> @@ -47,15 +51,47 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <maven.version>3.3.3</maven.version> + <maven.version>3.3.9</maven.version> <maven.site.path>${project.artifactId}-archives/${project.artifactId}-LATEST</maven.site.path> </properties> + <!-- force maven-plugin-testing-harness to use newer plexus container (https://issues.apache.org/jira/browse/MPLUGINTESTING-53) --> + <dependencyManagement> + <dependencies> + <!-- maven --> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-compat</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-model</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-plugin-api</artifactId> + <version>${maven.version}</version> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-aether-provider</artifactId> + <version>${maven.version}</version> + </dependency> + </dependencies> + </dependencyManagement> + <dependencies> <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.scripting.sightly.compiler</artifactId> - <version>1.0.7-SNAPSHOT</version> + <version>1.0.9-SNAPSHOT</version> </dependency> <dependency> <groupId>commons-io</groupId> diff --git a/src/main/java/org/apache/sling/maven/htl/ValidateMojo.java b/src/main/java/org/apache/sling/maven/htl/ValidateMojo.java index 4155473..151f823 100644 --- a/src/main/java/org/apache/sling/maven/htl/ValidateMojo.java +++ b/src/main/java/org/apache/sling/maven/htl/ValidateMojo.java @@ -72,7 +72,7 @@ public class ValidateMojo extends AbstractMojo { * List of files to include. Specified as fileset patterns which are relative to the input directory whose contents will be scanned * (see the sourceDirectory configuration option). */ - @Parameter + @Parameter(defaultValue = DEFAULT_INCLUDES) private String[] includes; /** @@ -215,8 +215,9 @@ public class ValidateMojo extends AbstractMojo { } private String processIncludes() { + // since default = "" leads to null deal with that as well here if (includes == null) { - return DEFAULT_INCLUDES; + return ""; } return join(includes, ','); } diff --git a/src/test/java/org/apache/sling/maven/htl/ValidateMojoTest.java b/src/test/java/org/apache/sling/maven/htl/ValidateMojoTest.java index 86d14eb..24833e4 100644 --- a/src/test/java/org/apache/sling/maven/htl/ValidateMojoTest.java +++ b/src/test/java/org/apache/sling/maven/htl/ValidateMojoTest.java @@ -19,10 +19,18 @@ package org.apache.sling.maven.htl; import java.io.File; import java.util.List; +import org.apache.maven.execution.DefaultMavenExecutionRequest; +import org.apache.maven.execution.MavenExecutionRequest; +import org.apache.maven.execution.MavenSession; +import org.apache.maven.plugin.MojoExecution; import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.testing.MojoRule; import org.apache.maven.plugin.testing.SilentLog; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.ProjectBuilder; +import org.apache.maven.project.ProjectBuildingRequest; +import org.eclipse.aether.DefaultRepositorySystemSession; +import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.sonatype.plexus.build.incremental.DefaultBuildContext; @@ -33,20 +41,22 @@ import static org.junit.Assert.assertTrue; public class ValidateMojoTest { - public static final String ERROR_SLY = "src/main/resources/apps/projects/error.sly"; - public static final String WARNING_SLY = "src/main/resources/apps/projects/warning.sly"; - public static final String SCRIPT_HTML = "src/main/resources/apps/projects/script.html"; - public static final String TEST_PROJECT = "test-project"; - public static final String EXPLICIT_INCLUDES_POM = "explicit-includes.pom.xml"; - public static final String EXPLICIT_EXCLUDES_POM = "explicit-excludes.pom.xml"; - public static final String FAIL_ON_WARNINGS_POM = "fail-on-warnings.pom.xml"; + private static final String ERROR_SLY = "src/main/resources/apps/projects/error.sly"; + private static final String WARNING_SLY = "src/main/resources/apps/projects/warning.sly"; + private static final String SCRIPT_HTML = "src/main/resources/apps/projects/script.html"; + private static final String EXCLUDE_HTML = "src/main/resources/apps/projects/exclude.html"; + private static final String TEST_PROJECT = "test-project"; + private static final String EXPLICIT_INCLUDES_POM = "explicit-includes.pom.xml"; + private static final String EXPLICIT_EXCLUDES_POM = "explicit-excludes.pom.xml"; + private static final String FAIL_ON_WARNINGS_POM = "fail-on-warnings.pom.xml"; + private static final String DEFAULT_INCLUDES_POM = "default-includes.pom.xml"; @Rule public MojoRule mojoRule = new MojoRule() { @Override protected void before() throws Throwable { super.before(); - /** + /* * Make sure the base directory is initialised properly for this test */ System.setProperty("basedir", new File("src" + File.separator + "test" + File.separator + "resources" + File @@ -99,20 +109,51 @@ public class ValidateMojoTest { assertEquals("Expected compilation warnings.", true, validateMojo.hasWarnings()); } + @Test + public void testDefaultIncludes() throws Exception { + File baseDir = new File(System.getProperty("basedir")); + ValidateMojo validateMojo = getMojo(baseDir, DEFAULT_INCLUDES_POM); + Exception exception = null; + try { + validateMojo.execute(); + } catch (MojoFailureException e) { + exception = e; + } + List<File> processedFiles = validateMojo.getProcessedFiles(); + assertNotNull("Expected a MojoFailureException.", exception); + assertEquals("Expected 2 files to process.", 2, processedFiles.size()); + assertTrue("Expected exclude.html to be one of the processed files.", processedFiles.contains(new File(baseDir, EXCLUDE_HTML))); + assertTrue("Expected script.html to be one of the processed files.", processedFiles.contains(new File(baseDir, SCRIPT_HTML))); + assertEquals("Did not expect compilation warnings.", false, validateMojo.hasWarnings()); + } + private ValidateMojo getMojo(File baseDir, String pomFile) throws Exception { SilentLog log = new SilentLog(); DefaultBuildContext buildContext = new DefaultBuildContext(); - File pom = new File(baseDir, pomFile); - ValidateMojo validateMojo = new ValidateMojo(); - mojoRule.configureMojo(validateMojo, mojoRule.extractPluginConfiguration("htl-maven-plugin", pom)); - MavenProject mavenProject = new ProjectStub(pom); - mojoRule.setVariableValueToObject(validateMojo, "project", mavenProject); + // use lookupConfiguredMojo to also consider default values (https://issues.apache.org/jira/browse/MPLUGINTESTING-23) + // similar to MojoRule#lookupConfiguredMojo(File, String) but with custom pom file name + MavenProject project = readMavenProject(baseDir, pomFile); + MavenSession session = mojoRule.newMavenSession(project); + MojoExecution execution = mojoRule.newMojoExecution("validate"); + ValidateMojo validateMojo = (ValidateMojo) mojoRule.lookupConfiguredMojo(session, execution); validateMojo.setLog(log); buildContext.enableLogging(log); validateMojo.setBuildContext(buildContext); return validateMojo; } - + /** + * Copied from {@code org.apache.maven.plugin.testing.readMavenProject(...)} but customized to allow custom pom names + */ + private MavenProject readMavenProject(File basedir, String pomFileName) throws Exception { + File pom = new File(basedir, pomFileName); + MavenExecutionRequest request = new DefaultMavenExecutionRequest(); + request.setBaseDirectory(basedir); + ProjectBuildingRequest configuration = request.getProjectBuildingRequest(); + configuration.setRepositorySession(new DefaultRepositorySystemSession()); + MavenProject project = mojoRule.lookup(ProjectBuilder.class).build(pom, configuration).getProject(); + Assert.assertNotNull(project); + return project; + } } diff --git a/src/test/resources/test-project/default-includes.pom.xml b/src/test/resources/test-project/default-includes.pom.xml new file mode 100644 index 0000000..c06629d --- /dev/null +++ b/src/test/resources/test-project/default-includes.pom.xml @@ -0,0 +1,49 @@ +<!--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + ~ 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. + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>org.apache.sling</groupId> + <artifactId>htl-maven-plugin-it-default-includes</artifactId> + <version>0.0.1-SNAPSHOT</version> + <packaging>pom</packaging> + + <name>HTL Maven Plugin IT - Default includes</name> + + <build> + <plugins> + <plugin> + <groupId>org.apache.sling</groupId> + <artifactId>htl-maven-plugin</artifactId> + <configuration> + <sourceDirectory>src/main/resources</sourceDirectory> + <!-- only exclude.html will be compiled --> + </configuration> + <executions> + <execution> + <id>validate-scripts</id> + <goals> + <goal>validate</goal> + </goals> + <phase>compile</phase> + </execution> + </executions> + </plugin> + </plugins> + </build> +</project> -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
