Author: hboutemy Date: Sun Feb 25 16:24:05 2018 New Revision: 1825308 URL: http://svn.apache.org/viewvc?rev=1825308&view=rev Log: [MARCHETYPES-51] added plugin testing harness Submitted by: Nick Lombard
Added: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/MyMojoTest.java maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/pom.xml Modified: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources-filtered/archetype-resources/pom.xml maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/META-INF/maven/archetype-metadata.xml maven/archetypes/trunk/maven-archetype-plugin/src/site/apt/index.apt.vm maven/archetypes/trunk/maven-archetype-plugin/src/test/resources/projects/it-basic/verify.groovy Modified: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources-filtered/archetype-resources/pom.xml URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/main/resources-filtered/archetype-resources/pom.xml?rev=1825308&r1=1825307&r2=1825308&view=diff ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/main/resources-filtered/archetype-resources/pom.xml (original) +++ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources-filtered/archetype-resources/pom.xml Sun Feb 25 16:24:05 2018 @@ -34,20 +34,52 @@ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.compiler.source>1.7</project.compiler.source> <project.compiler.target>1.7</project.compiler.target> + <maven.version>3.5.2</maven.version> </properties> <dependencies> <dependency> <groupId>org.apache.maven</groupId> <artifactId>maven-plugin-api</artifactId> - <version>2.0</version> + <version>${maven.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-core</artifactId> + <version>${maven.version}</version> + <scope>provided</scope> + </dependency> + <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-artifact</artifactId> + <version>${maven.version}</version> + <scope>provided</scope> </dependency> <dependency> + <groupId>org.apache.maven</groupId> + <artifactId>maven-compat</artifactId> + <version>${maven.version}</version> + <scope>provided</scope> + </dependency> + <dependency> <groupId>org.apache.maven.plugin-tools</groupId> <artifactId>maven-plugin-annotations</artifactId> <version>${plugin}</version> <scope>provided</scope> </dependency> + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.12</version> + <scope>test</scope> + </dependency> + <dependency> + <groupId>org.apache.maven.plugin-testing</groupId> + <artifactId>maven-plugin-testing-harness</artifactId> + <version>3.3.0</version> + <scope>test</scope> + </dependency> </dependencies> <build> @@ -96,8 +128,9 @@ <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-plugin-plugin</artifactId> - <version>3.2</version> + <version>3.5</version> <configuration> + <!-- <goalPrefix>${artifactId}</goalPrefix> --> <skipErrorNoDescriptorsFound>true</skipErrorNoDescriptorsFound> </configuration> <executions> @@ -154,7 +187,6 @@ </executions> </plugin> </plugins> - </build> </profile> </profiles> Modified: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/META-INF/maven/archetype-metadata.xml URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/META-INF/maven/archetype-metadata.xml?rev=1825308&r1=1825307&r2=1825308&view=diff ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/META-INF/maven/archetype-metadata.xml (original) +++ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/META-INF/maven/archetype-metadata.xml Sun Feb 25 16:24:05 2018 @@ -25,6 +25,12 @@ under the License. <fileSet filtered="true" packaged="true"> <directory>src/main/java</directory> </fileSet> + <fileSet filtered="true" packaged="true"> + <directory>src/test/java</directory> + </fileSet> + <fileSet filtered="true" packaged="false"> + <directory>src/test/resources</directory> + </fileSet> <fileSet filtered="true" packaged="false"> <directory>src/it</directory> </fileSet> Added: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/MyMojoTest.java URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/MyMojoTest.java?rev=1825308&view=auto ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/MyMojoTest.java (added) +++ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/java/MyMojoTest.java Sun Feb 25 16:24:05 2018 @@ -0,0 +1,76 @@ +package $package; + +## +## Copyright 2001-2005 The Apache Software Foundation. +## +## Licensed 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. +## + +import org.apache.maven.plugin.testing.MojoRule; +import org.apache.maven.plugin.testing.WithoutMojo; + +import org.junit.Rule; +import static org.junit.Assert.*; +import org.junit.Test; +import java.io.File; + +public class MyMojoTest +{ + @Rule + public MojoRule rule = new MojoRule() + { + @Override + protected void before() throws Throwable + { + } + + @Override + protected void after() + { + } + }; + + /** + * @throws Exception if any + */ + @Test + public void testSomething() + throws Exception + { + File pom = new File( "target/test-classes/project-to-test/" ); + assertNotNull( pom ); + assertTrue( pom.exists() ); + + MyMojo myMojo = ( MyMojo ) rule.lookupConfiguredMojo( pom, "touch" ); + assertNotNull( myMojo ); + myMojo.execute(); + + File outputDirectory = ( File ) rule.getVariableValueFromObject( myMojo, "outputDirectory" ); + assertNotNull( outputDirectory ); + assertTrue( outputDirectory.exists() ); + + File touch = new File( outputDirectory, "touch.txt" ); + assertTrue( touch.exists() ); + + } + + /** Do not need the MojoRule. */ + @WithoutMojo + @Test + public void testSomethingWhichDoesNotNeedTheMojoAndProbablyShouldBeExtractedIntoANewClassOfItsOwn() + { + assertTrue( true ); + } + +} + Added: maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/pom.xml URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/pom.xml?rev=1825308&view=auto ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/pom.xml (added) +++ maven/archetypes/trunk/maven-archetype-plugin/src/main/resources/archetype-resources/src/test/resources/project-to-test/pom.xml Sun Feb 25 16:24:05 2018 @@ -0,0 +1,39 @@ +## +## Copyright 2001-2005 The Apache Software Foundation. +## +## Licensed 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. +## +<?xml version="1.0" encoding="UTF-8"?> +<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>${groupId}</groupId> + <artifactId>${artifactId}</artifactId> + <version>${version}</version> + <packaging>jar</packaging> + <name>Test MyMojo</name> + + <build> + <plugins> + <plugin> + <artifactId>maven-my-plugin</artifactId> + <configuration> + <!-- Specify the MyMojo parameter --> + <outputDirectory>target/test-harness/project-to-test</outputDirectory> + </configuration> + </plugin> + </plugins> + </build> +</project> Modified: maven/archetypes/trunk/maven-archetype-plugin/src/site/apt/index.apt.vm URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/site/apt/index.apt.vm?rev=1825308&r1=1825307&r2=1825308&view=diff ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/site/apt/index.apt.vm (original) +++ maven/archetypes/trunk/maven-archetype-plugin/src/site/apt/index.apt.vm Sun Feb 25 16:24:05 2018 @@ -39,6 +39,13 @@ project | `-- java | `-- $package | `-- MyMojo.java + |-- test + | |-- java + | | `-- $package + | â `-- MyMojoTest.java + | `-- resources + | `-- project-to-test + | `-- pom.xml `-- it |-- simple-it | |-- pom.xml Modified: maven/archetypes/trunk/maven-archetype-plugin/src/test/resources/projects/it-basic/verify.groovy URL: http://svn.apache.org/viewvc/maven/archetypes/trunk/maven-archetype-plugin/src/test/resources/projects/it-basic/verify.groovy?rev=1825308&r1=1825307&r2=1825308&view=diff ============================================================================== --- maven/archetypes/trunk/maven-archetype-plugin/src/test/resources/projects/it-basic/verify.groovy (original) +++ maven/archetypes/trunk/maven-archetype-plugin/src/test/resources/projects/it-basic/verify.groovy Sun Feb 25 16:24:05 2018 @@ -22,7 +22,21 @@ assert parameter.type.text() == 'java.io assert parameter.required.text() == 'true' assert parameter.description.text() == 'Location of the file.' +File testFile = new File( basedir, "project/basic-plugin/src/main/java/it/pkg/plugin/MyMojo.java" ); +assert testFile.exists() +testFile = new File( basedir, "project/basic-plugin/src/test/java/it/pkg/plugin/MyMojoTest.java" ); +assert testFile.exists() +testFile = new File( basedir, "project/basic-plugin/src/test/resources/project-to-test/pom.xml" ); +assert testFile.exists() +testFile = new File( basedir, "project/basic-plugin/src/it/simple-it/verify.groovy" ); +assert testFile.exists() + +testFile = new File( basedir, "project/basic-plugin/src/it/simple-it/pom.xml" ); +assert testFile.exists() + +testFile = new File( basedir, "project/basic-plugin/src/it/settings.xml" ); +assert testFile.exists()