| package org.apache.maven.plugin.doap; |
| |
| /* |
| * 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. |
| */ |
| |
| import java.io.File; |
| import java.io.FileReader; |
| import java.io.IOException; |
| |
| import org.apache.maven.plugin.doap.options.DoapArtifact; |
| import org.apache.maven.plugin.doap.options.DoapOptions; |
| import org.apache.maven.plugin.testing.AbstractMojoTestCase; |
| import org.apache.maven.project.MavenProject; |
| import org.codehaus.plexus.util.IOUtil; |
| import org.codehaus.plexus.util.StringUtils; |
| |
| /** |
| * Test {@link DoapMojo} class. |
| * |
| * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a> |
| * @version $Id$ |
| */ |
| public class DoapMojoTest |
| extends AbstractMojoTestCase |
| { |
| @Override |
| protected void setUp() |
| throws Exception |
| { |
| super.setUp(); |
| } |
| |
| @Override |
| protected void tearDown() |
| throws Exception |
| { |
| super.tearDown(); |
| } |
| |
| /** |
| * Verify the generation of a pure DOAP file. |
| * |
| * @throws Exception if any |
| */ |
| public void testGeneratedDoap() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), "src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // Set some Mojo parameters |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", mavenProject.getUrl() ); |
| |
| mojo.execute(); |
| |
| File doapFile = new File( getBasedir(), "target/test/unit/doap-configuration/doap-configuration.rdf" ); |
| assertTrue( "Doap File was not generated!", doapFile.exists() ); |
| |
| String readed = readFile( doapFile ); |
| |
| // Validate |
| |
| // Pure DOAP |
| assertTrue( readed.contains( "<rdf:RDF xml:lang=\"en\" xmlns=\"http://usefulinc.com/ns/doap#\" " |
| + "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " |
| + "xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">" ) ); |
| assertTrue( readed.contains( "<Project rdf:about=\"" + mavenProject.getUrl() + "\">" ) ); |
| assertTrue( readed.contains( "<description xml:lang=\"en\">Test the DOAP plugin</description>" ) ); |
| assertTrue( readed.contains( "<shortdesc xml:lang=\"en\">Test the DOAP plugin</shortdesc>" ) ); |
| assertTrue( readed.contains( "<homepage rdf:resource=\"" + mavenProject.getUrl() + "\"/>" ) ); |
| assertTrue( readed.contains( "<category>library</category>" ) ); |
| assertTrue( readed.contains( "<created>2008-01-01</created>" ) ); |
| assertTrue( readed.contains( "<name>" + mavenProject.getName() + "</name>" ) ); |
| assertTrue( readed.contains( "<download-page rdf:resource=\"http://foo.org/download.html\"/>" ) ); |
| assertTrue( readed.contains( "<programming-language>Java</programming-language>" ) ); |
| assertTrue( readed.contains( "<bug-database rdf:resource=\"http://jira.codehaus.org/browse/MDOAPTEST\"/>" ) ); |
| assertTrue( readed.contains( "<license rdf:resource=\"http://www.apache.org/licenses/LICENSE-2.0.txt\"/>" ) ); |
| assertTrue( readed.contains( "<SVNRepository>" ) ); |
| assertTrue( readed.contains( "<location rdf:resource=\"http://svn.foo.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration\"/>" ) ); |
| assertTrue( readed.contains( "<browse rdf:resource=\"http://svn.foo.org/viewvc/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration\"/>" ) ); |
| assertTrue( readed.contains( "<location rdf:resource=\"https://svn.foo.org/repos/asf/maven/plugins/trunk/maven-doap-plugin/src/test/resources/unit/doap-configuration\"/>" ) ); |
| |
| // conf |
| assertTrue( readed.contains( "<audience>developers</audience>" ) ); |
| assertTrue( readed.contains( "<blog rdf:resource=\"http://myblog.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<implements>JSR-foo</implements>" ) ); |
| assertTrue( readed.contains( "<language>en</language>" ) ); |
| assertTrue( readed.contains( "<language>fr</language>" ) ); |
| assertTrue( readed.contains( "<old-homepage rdf:resource=\"http://old.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<os>windows</os>" ) ); |
| assertTrue( readed.contains( "<os>linux</os>" ) ); |
| assertTrue( readed.contains( "<os>mac</os>" ) ); |
| assertTrue( readed.contains( "<platform>java</platform>" ) ); |
| assertTrue( readed.contains( "<platform>firefox</platform>" ) ); |
| assertTrue( readed.contains( "<screenshots rdf:resource=\"" + mavenProject.getUrl() +"/screenshots.html\"/>" ) ); |
| assertTrue( readed.contains( "<service-endpoint rdf:resource=\"http://webservice.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<wiki rdf:resource=\"http://wiki.foo.org\"/>" ) ); |
| |
| // ASF ext |
| assertFalse( readed.contains( "<asfext:pmc rdf:resource=\"" + mavenProject.getUrl() + "\"/>" ) ); |
| assertFalse( readed.contains( "<asfext:name>" + mavenProject.getName() + "</name>" ) ); |
| |
| // Developers and Organizations |
| assertTrue( readed.contains( "<maintainer>" ) ); |
| assertTrue( readed.contains( "<foaf:Person rdf:nodeID=\"b" ) ); |
| assertTrue( readed.contains( "<foaf:name>Jane Doe</foaf:name>" ) ); |
| assertTrue( readed.contains( "<foaf:Organization>" ) ); |
| assertTrue( readed.contains( "<foaf:homepage rdf:resource=\"http://www.example.org\"/>" ) ); |
| assertTrue( readed.contains( "<foaf:member rdf:nodeID=\"b" ) ); |
| } |
| |
| /** |
| * @throws Exception if any |
| */ |
| public void testLangParameter() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), "src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // check invalid lang |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "lang", "foo" ); |
| try |
| { |
| mojo.execute(); |
| assertTrue( "No lang checked", false ); |
| } |
| catch ( Exception e ) |
| { |
| assertTrue( true ); |
| } |
| } |
| |
| /** |
| * @throws Exception if any |
| */ |
| public void testAboutParameter() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), "src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // check invalid lang |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", "foo" ); |
| try |
| { |
| mojo.execute(); |
| } |
| catch ( Exception e ) |
| { |
| assertTrue( true ); |
| } |
| } |
| |
| /** |
| * Verify the generation of a DOAP file from an artifact. |
| * |
| * @throws Exception if any |
| */ |
| public void testGeneratedDoapArtifact() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), "src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // Set some Mojo parameters |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", mavenProject.getUrl() ); |
| DoapOptions doapOptions = (DoapOptions)getVariableValueFromObject( mojo, "doapOptions" ); |
| doapOptions.setDescription( "Common Utilities" ); |
| doapOptions.setShortdesc( "Common Utilities" ); |
| doapOptions.setDownloadPage( "http://plexus.codehaus.org/download-binaries.html" ); |
| setVariableValueToObject( mojo, "doapOptions", doapOptions ); |
| |
| DoapArtifact artifact = new DoapArtifact(); |
| artifact.setGroupId( "org.codehaus.plexus" ); |
| artifact.setArtifactId( "plexus-utils" ); |
| artifact.setVersion( "1.5.5" ); |
| setVariableValueToObject( mojo, "artifact", artifact ); |
| setVariableValueToObject( mojo, "outputDirectory", "target/test/unit/doap-configuration/" ); |
| |
| mojo.execute(); |
| |
| File doapFile = new File( getBasedir(), "target/test/unit/doap-configuration/doap_plexus-utils.rdf" ); |
| assertTrue( "Doap File was not generated!", doapFile.exists() ); |
| |
| String readed = readFile( doapFile ); |
| |
| // Validate |
| |
| // Pure DOAP |
| assertTrue( readed.contains( "<rdf:RDF xml:lang=\"en\" xmlns=\"http://usefulinc.com/ns/doap#\" " |
| + "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " |
| + "xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">" ) ); |
| assertTrue( readed.contains( "<Project rdf:about=\"http://plexus.codehaus.org/plexus-utils\">" ) ); |
| assertTrue( readed.contains( "<name>Plexus Common Utilities</name>" ) ); |
| assertTrue( readed.contains( "<description xml:lang=\"en\">Common Utilities</description>" ) ); |
| assertTrue( readed.contains( "<shortdesc xml:lang=\"en\">Common Utilities</shortdesc>" ) ); |
| assertTrue( readed.contains( "<created>2001-01-01</created>" ) ); |
| assertTrue( readed.contains( "<download-page rdf:resource=\"http://plexus.codehaus.org/download-binaries.html\"/>" ) ); |
| assertTrue( readed.contains( "<programming-language>Java</programming-language>" ) ); |
| assertTrue( readed.contains( "<bug-database rdf:resource=\"http://jira.codehaus.org/browse/PLXUTILS\"/>" ) ); |
| assertTrue( readed.contains( "<license rdf:resource=\"http://www.apache.org/licenses/LICENSE-2.0.txt\"/>" ) ); |
| assertTrue( readed.contains( "<SVNRepository>" ) ); |
| assertTrue( readed.contains( "<location rdf:resource=\"http://svn.codehaus.org/plexus/plexus-utils/tags/plexus-utils-1.5.5\"/>" ) ); |
| assertTrue( readed.contains( "<browse rdf:resource=\"http://fisheye.codehaus.org/browse/plexus/plexus-utils/tags/plexus-utils-1.5.5\"/>" ) ); |
| |
| // conf |
| assertTrue( readed.contains( "<audience>developers</audience>" ) ); |
| assertTrue( readed.contains( "<blog rdf:resource=\"http://myblog.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<implements>JSR-foo</implements>" ) ); |
| assertTrue( readed.contains( "<language>en</language>" ) ); |
| assertTrue( readed.contains( "<language>fr</language>" ) ); |
| assertTrue( readed.contains( "<old-homepage rdf:resource=\"http://old.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<os>windows</os>" ) ); |
| assertTrue( readed.contains( "<os>linux</os>" ) ); |
| assertTrue( readed.contains( "<os>mac</os>" ) ); |
| assertTrue( readed.contains( "<platform>java</platform>" ) ); |
| assertTrue( readed.contains( "<screenshots rdf:resource=\"http://plexus.codehaus.org/plexus-utils/screenshots.html\"/>" ) ); |
| assertTrue( readed.contains( "<service-endpoint rdf:resource=\"http://webservice.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<wiki rdf:resource=\"http://wiki.foo.org\"/>" ) ); |
| } |
| |
| /** |
| * Verify the generation of a DOAP file from a minimalist artifact. |
| * |
| * @throws Exception if any |
| */ |
| public void testGeneratedDoapArtifactMinimalist() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), "src/test/resources/unit/doap-configuration/doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // Set some Mojo parameters |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", "foo" ); |
| DoapOptions doapOptions = new DoapOptions(); |
| doapOptions.setName( "XStream" ); |
| doapOptions.setDescription( "XStream is a simple library to serialize objects to XML and back again." ); |
| doapOptions.setShortdesc( "XML Serializer" ); |
| doapOptions.setHomepage( "http://xstream.codehaus.org/" ); |
| doapOptions.setDownloadPage( "http://xstream.codehaus.org/download.html" ); |
| doapOptions.setBugDatabase( "http://jira.codehaus.org/browse/XSTR" ); |
| doapOptions.setLicense( "http://xstream.codehaus.org/license.html" ); |
| doapOptions.setScmDeveloper( "http://svn.codehaus.org/xstream/trunk/xstream" ); |
| doapOptions.setMailingList( "http://xstream.codehaus.org/list-user.html" ); |
| doapOptions.setCreated( "2000-01-01"); |
| setVariableValueToObject( mojo, "doapOptions", doapOptions ); |
| |
| DoapArtifact artifact = new DoapArtifact(); |
| artifact.setGroupId( "xstream" ); |
| artifact.setArtifactId( "xstream" ); |
| artifact.setVersion( "1.1" ); |
| setVariableValueToObject( mojo, "artifact", artifact ); |
| setVariableValueToObject( mojo, "outputDirectory", "target/test/unit/doap-configuration/" ); |
| |
| mojo.execute(); |
| |
| File doapFile = new File( getBasedir(), "target/test/unit/doap-configuration/doap_xstream.rdf" ); |
| assertTrue( "Doap File was not generated!", doapFile.exists() ); |
| |
| String readed = readFile( doapFile ); |
| |
| // Validate |
| |
| // Pure DOAP |
| assertTrue( readed.contains( "<rdf:RDF xml:lang=\"en\" xmlns=\"http://usefulinc.com/ns/doap#\" " |
| + "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " |
| + "xmlns:foaf=\"http://xmlns.com/foaf/0.1/\">" ) ); |
| assertTrue( readed.contains( "<Project>" ) ); |
| assertTrue( readed.contains( "<name>XStream</name>" ) ); |
| assertTrue( readed.contains( "<description xml:lang=\"en\">XStream is a simple library to serialize objects to XML and back again.</description>" ) ); |
| assertTrue( readed.contains( "<shortdesc xml:lang=\"en\">XML Serializer</shortdesc>" ) ); |
| assertTrue( readed.contains( "<created>2000-01-01</created>" ) ); |
| assertTrue( readed.contains( "<download-page rdf:resource=\"http://xstream.codehaus.org/download.html\"/>" ) ); |
| assertTrue( readed.contains( "<programming-language>Java</programming-language>" ) ); |
| assertTrue( readed.contains( "<bug-database rdf:resource=\"http://jira.codehaus.org/browse/XSTR\"/>" ) ); |
| assertTrue( readed.contains( "<license rdf:resource=\"http://xstream.codehaus.org/license.html\"/>" ) ); |
| assertTrue( readed.contains( "<Repository>" ) ); |
| assertTrue( readed.contains( "<location rdf:resource=\"http://svn.codehaus.org/xstream/trunk/xstream\"/>" ) ); |
| assertTrue( readed.contains( "<mailing-list rdf:resource=\"http://xstream.codehaus.org/list-user.html\"/>" ) ); |
| |
| // conf |
| assertFalse( readed.contains( "<audience>" ) ); |
| assertFalse( readed.contains( "<blog rdf:resource=" ) ); |
| assertFalse( readed.contains( "<implements>" ) ); |
| assertFalse( readed.contains( "<language>" ) ); |
| assertFalse( readed.contains( "<old-homepage rdf:resource=" ) ); |
| assertFalse( readed.contains( "<os>" ) ); |
| assertFalse( readed.contains( "<platform>" ) ); |
| assertFalse( readed.contains( "<screenshots rdf:resource=" ) ); |
| assertFalse( readed.contains( "<service-endpoint rdf:resource=" ) ); |
| assertFalse( readed.contains( "<wiki rdf:resource=" ) ); |
| } |
| |
| /** |
| * Verify the generation of a DOAP file with ASF extension. |
| * |
| * @throws Exception if any |
| */ |
| public void testGeneratedDoapForASF() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), |
| "src/test/resources/unit/asf-doap-configuration/asf-doap-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // Set some Mojo parameters |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", mavenProject.getUrl() ); |
| |
| mojo.execute(); |
| |
| File doapFile = new File( getBasedir(), "target/test/unit/asf-doap-configuration/asf-doap-configuration.rdf" ); |
| assertTrue( "Doap File was not generated!", doapFile.exists() ); |
| |
| String readed = readFile( doapFile ); |
| |
| // Validate |
| |
| // ASF DOAP |
| assertTrue( readed.contains( "<rdf:RDF xml:lang=\"en\" xmlns=\"http://usefulinc.com/ns/doap#\" " |
| + "xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\" " |
| + "xmlns:foaf=\"http://xmlns.com/foaf/0.1/\" " + "xmlns:asfext=\"http://projects.apache.org/ns/asfext#\">" ) ); |
| if ( StringUtils.isNotEmpty( mavenProject.getUrl() ) ) |
| { |
| assertTrue( readed.contains( "<Project rdf:about=\"" + mavenProject.getUrl() + "\">" ) ); |
| assertTrue( readed.contains( "<homepage rdf:resource=\"" + mavenProject.getUrl() + "\"/>" ) ); |
| } |
| assertTrue( readed.contains( "<name>Apache " + mavenProject.getName() + "</name>" ) ); |
| assertTrue( readed.contains( "<programming-language>Java</programming-language>" ) ); |
| assertTrue( readed.contains( "<category rdf:resource=\"http://projects.apache.org/category/library\"/>" ) ); |
| |
| // ASF ext |
| assertTrue( readed.contains( "<asfext:pmc rdf:resource=\"" + mavenProject.getUrl() + "\"/>" ) ); |
| assertTrue( readed.contains( "<asfext:name>Apache " + mavenProject.getName() + "</asfext:name>" ) ); |
| assertTrue( readed.contains( "<asfext:charter>" ) ); |
| assertTrue( readed.contains( "<asfext:chair>" ) ); |
| } |
| |
| /** |
| * Verify the generation of a DOAP file with extra extension. |
| * |
| * @throws Exception if any |
| */ |
| public void testGeneratedExtraDoap() |
| throws Exception |
| { |
| File pluginXmlFile = |
| new File( getBasedir(), |
| "src/test/resources/unit/doap-configuration/doap-extra-configuration-plugin-config.xml" ); |
| DoapMojo mojo = (DoapMojo) lookupMojo( "generate", pluginXmlFile ); |
| assertNotNull( "Mojo found.", mojo ); |
| |
| MavenProject mavenProject = (MavenProject) getVariableValueFromObject( mojo, "project" ); |
| assertNotNull( mavenProject ); |
| |
| // Set some Mojo parameters |
| setVariableValueToObject( mojo, "remoteRepositories", mavenProject.getRemoteArtifactRepositories() ); |
| setVariableValueToObject( mojo, "about", mavenProject.getUrl() ); |
| |
| mojo.execute(); |
| |
| File doapFile = new File( getBasedir(), "target/test/unit/doap-configuration/doap-extra-configuration.rdf" ); |
| assertTrue( "Doap File was not generated!", doapFile.exists() ); |
| |
| String readed = readFile( doapFile ); |
| |
| assertTrue( readed.contains( "<ciManagement rdf:resource=\"http://ci.foo.org\"/>" ) ); |
| assertTrue( readed.contains( "<asfext:status>active</asfext:status>" ) ); |
| assertTrue( readed.contains( "<labs:status>active</labs:status>" ) ); |
| } |
| |
| /** |
| * @param file |
| * @return |
| * @throws IOException if any |
| */ |
| private String readFile( File file ) |
| throws IOException |
| { |
| String result = null; |
| |
| FileReader reader = null; |
| try |
| { |
| // platform encoding |
| reader = new FileReader( file ); |
| |
| result = IOUtil.toString( reader ); |
| |
| reader.close(); |
| reader = null; |
| } |
| finally |
| { |
| IOUtil.close( reader ); |
| } |
| |
| return result; |
| } |
| } |