check generated plugin.xml against reference plugin-expected.xml

git-svn-id: https://svn.apache.org/repos/asf/maven/plugin-tools/trunk@1210039 13f79535-47bb-0310-9956-ffa450edef68
master
Herve Boutemy 2011-12-04 01:05:04 +00:00
parent c32d7e7b5c
commit 154592cb9a
6 changed files with 273 additions and 1 deletions

View File

@ -68,6 +68,13 @@
<artifactId>qdox</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>xmlunit</groupId>
<artifactId>xmlunit</artifactId>
<version>1.3</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

View File

@ -33,6 +33,9 @@ import org.apache.maven.tools.plugin.generator.Generator;
import org.apache.maven.tools.plugin.generator.PluginDescriptorGenerator;
import org.codehaus.plexus.component.repository.ComponentDependency;
import org.codehaus.plexus.util.FileUtils;
import org.custommonkey.xmlunit.Diff;
import org.custommonkey.xmlunit.XMLUnit;
import org.w3c.dom.Document;
import java.io.File;
import java.net.URL;
@ -84,6 +87,9 @@ public class JavaMojoDescriptorExtractorTest
return new DefaultPluginToolsRequest( project, pluginDescriptor ).setEncoding( "UTF-8" );
}
/**
* generate plugin.xml for a test resources directory content.
*/
protected PluginDescriptor generate( String directory )
throws Exception
{
@ -104,11 +110,42 @@ public class JavaMojoDescriptorExtractorTest
return request.getPluginDescriptor();
}
/**
* compare mojos from generated plugin.xml against plugin-expected.xml
*/
protected void checkExpected( String directory )
throws Exception
{
File testDirectory = new File( root, directory );
XMLUnit.setIgnoreWhitespace( true );
XMLUnit.setIgnoreComments( true );
Document expected =
XMLUnit.buildControlDocument( FileUtils.fileRead( new File( testDirectory, "plugin-expected.xml" ), "UTF-8" ) );
Document actual =
XMLUnit.buildTestDocument( FileUtils.fileRead( new File( testDirectory, "plugin.xml" ), "UTF-8" ) );
Diff diff = XMLUnit.compareXML( expected, actual );
if ( !diff.identical() )
{
fail( "generated plugin.xml is not identital as plugin-expected.xml for " + directory + ": " + diff );
}
}
/**
* extract plugin descriptor for test resources directory and check against plugin-expected.xml
*/
@SuppressWarnings( "unchecked" )
protected List<MojoDescriptor> extract( String directory )
throws Exception
{
return generate( directory ).getMojos();
PluginDescriptor descriptor = generate( directory );
checkExpected( directory );
return descriptor.getMojos();
}
public void testShouldFindTwoMojoDescriptorsInTestSourceDirectory()

View File

@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>test</goal>
<description>Test for gleaning of source files with Java 1.5 features</description>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<implementation>MyMojo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters/>
</mojo>
</mojos>
<dependencies/>
</plugin>

View File

@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>ideaTwo</goal>
<description>Create an IDEA project file from a Maven project.</description>
<requiresDependencyResolution>compile</requiresDependencyResolution>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<implementation>source.JavaExtractorTestTwo</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>project</name>
<type>java.lang.String[]</type>
<required>true</required>
<editable>true</editable>
<description>Maven project used to generate IDEA project files.</description>
</parameter>
</parameters>
</mojo>
<mojo>
<goal>ideaOne</goal>
<description>Create an IDEA project file from a Maven project.</description>
<requiresDependencyResolution>runtime</requiresDependencyResolution>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<implementation>source.JavaExtractorTestOne</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<threadSafe>false</threadSafe>
<parameters>
<parameter>
<name>project</name>
<type>java.lang.String[]</type>
<required>true</required>
<editable>true</editable>
<description>Maven project used to generate IDEA project files.</description>
</parameter>
</parameters>
</mojo>
</mojos>
<dependencies/>
</plugin>

View File

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos>
<mojo>
<goal>ideaThree</goal>
<description>Tests the implementation argument of the parameter annotation.</description>
<requiresDependencyResolution>compile</requiresDependencyResolution>
<requiresDirectInvocation>false</requiresDirectInvocation>
<requiresProject>true</requiresProject>
<requiresReports>false</requiresReports>
<aggregator>false</aggregator>
<requiresOnline>false</requiresOnline>
<inheritedByDefault>true</inheritedByDefault>
<implementation>source2.JavaExtractorTestThree</implementation>
<language>java</language>
<instantiationStrategy>per-lookup</instantiationStrategy>
<executionStrategy>once-per-session</executionStrategy>
<requiresDependencyCollection>test</requiresDependencyCollection>
<threadSafe>true</threadSafe>
<parameters>
<parameter>
<name>bla</name>
<type>source2.Bla</type>
<implementation>source2.sub.MyBla</implementation>
<required>true</required>
<editable>true</editable>
<description></description>
</parameter>
</parameters>
</mojo>
</mojos>
<dependencies/>
</plugin>

View File

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8"?>
<!--
~ 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.
-->
<plugin>
<name></name>
<description></description>
<groupId></groupId>
<artifactId></artifactId>
<version></version>
<goalPrefix>test</goalPrefix>
<isolatedRealm>false</isolatedRealm>
<inheritedByDefault>true</inheritedByDefault>
<mojos/>
<dependencies/>
</plugin>