| /* |
| * 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. |
| */ |
| package org.apache.maven.plugin.doap; |
| |
| import java.io.File; |
| import java.io.StringWriter; |
| import java.util.ArrayList; |
| import java.util.Collections; |
| import java.util.List; |
| |
| import org.apache.maven.model.Contributor; |
| import org.apache.maven.model.Developer; |
| import org.apache.maven.model.License; |
| import org.apache.maven.project.MavenProject; |
| import org.codehaus.plexus.PlexusTestCase; |
| import org.codehaus.plexus.i18n.I18N; |
| import org.codehaus.plexus.util.xml.PrettyPrintXMLWriter; |
| import org.codehaus.plexus.util.xml.XMLWriter; |
| |
| /** |
| * Test {@link DoapUtil} class. |
| * |
| * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a> |
| */ |
| public class DoapUtilTest extends PlexusTestCase { |
| /** {@inheritDoc} */ |
| protected void setUp() throws Exception { |
| super.setUp(); |
| } |
| |
| /** {@inheritDoc} */ |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| } |
| |
| /** |
| * Test method for {@link DoapUtil#writeElement(XMLWriter, String, String, String)}. |
| * |
| * @throws Exception if any |
| */ |
| public void testWriteElement() throws Exception { |
| StringWriter w = new StringWriter(); |
| XMLWriter writer = new PrettyPrintXMLWriter(w); |
| DoapUtil.writeElement(writer, null, "name", "value"); |
| w.close(); |
| assertEquals(w.toString(), "<name>value</name>"); |
| |
| w = new StringWriter(); |
| writer = new PrettyPrintXMLWriter(w); |
| try { |
| DoapUtil.writeElement(writer, null, null, null); |
| assertTrue("Null not catched", false); |
| } catch (IllegalArgumentException e) { |
| assertTrue("IllegalArgumentException catched", true); |
| } finally { |
| w.close(); |
| } |
| } |
| |
| /** |
| * Test method for {@link DoapUtil#writeRdfResourceElement(XMLWriter, String, String, String)}. |
| * |
| * @throws Exception if any |
| */ |
| public void testWriteRdfResourceElement() throws Exception { |
| StringWriter w = new StringWriter(); |
| XMLWriter writer = new PrettyPrintXMLWriter(w); |
| DoapUtil.writeRdfResourceElement(writer, null, "name", "value"); |
| w.close(); |
| assertEquals(w.toString(), "<name " + DoapUtil.RDF_RESOURCE + "=\"value\"/>"); |
| |
| w = new StringWriter(); |
| writer = new PrettyPrintXMLWriter(w); |
| try { |
| DoapUtil.writeRdfResourceElement(writer, null, null, null); |
| assertTrue("Null not catched", false); |
| } catch (IllegalArgumentException e) { |
| assertTrue("IllegalArgumentException catched", true); |
| } finally { |
| w.close(); |
| } |
| } |
| |
| /** |
| * Test method for: |
| * {@link DoapUtil#getContributorsWithDeveloperRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithDocumenterRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithHelperRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithMaintainerRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithTesterRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithTranslatorRole(I18N, List)} |
| * {@link DoapUtil#getContributorsWithUnknownRole(I18N, List)} |
| * |
| * @throws Exception if any |
| */ |
| public void testDevelopersOrContributorsByDoapRoles() throws Exception { |
| I18N i18n = (I18N) getContainer().lookup(I18N.ROLE); |
| assertNotNull(i18n); |
| assertNotNull(i18n.getBundle()); |
| |
| List<Contributor> developersOrContributors = new ArrayList<>(); |
| |
| // One role |
| Developer dev = new Developer(); |
| dev.setId("dev1"); |
| dev.addRole("maintainer"); |
| |
| developersOrContributors.add(dev); |
| |
| assertTrue(DoapUtil.getContributorsWithDeveloperRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithDocumenterRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithHelperRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertFalse(DoapUtil.getContributorsWithMaintainerRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithTesterRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithTranslatorRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithUnknownRole(i18n, developersOrContributors) |
| .isEmpty()); |
| |
| // Several roles |
| developersOrContributors.clear(); |
| |
| dev = new Developer(); |
| dev.setId("dev1"); |
| dev.addRole(" MAINTAINER"); |
| dev.addRole("tesTER "); |
| dev.addRole("blabla"); |
| dev.addRole("translato r"); |
| |
| developersOrContributors.add(dev); |
| |
| assertTrue(DoapUtil.getContributorsWithDeveloperRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithDocumenterRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithHelperRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertFalse(DoapUtil.getContributorsWithMaintainerRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertFalse(DoapUtil.getContributorsWithTesterRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertTrue(DoapUtil.getContributorsWithTranslatorRole(i18n, developersOrContributors) |
| .isEmpty()); |
| assertFalse(DoapUtil.getContributorsWithUnknownRole(i18n, developersOrContributors) |
| .isEmpty()); |
| |
| // Skip emeritus role |
| developersOrContributors.clear(); |
| |
| dev = new Developer(); |
| dev.setId("dev1"); |
| dev.addRole("maintainer"); |
| dev.addRole("unknown"); |
| |
| developersOrContributors.add(dev); |
| |
| int sizeBeforeEmeritus = DoapUtil.getContributorsWithUnknownRole(i18n, developersOrContributors) |
| .size(); |
| dev.addRole(" Emeritus"); |
| |
| assertTrue(DoapUtil.getContributorsWithUnknownRole(i18n, developersOrContributors) |
| .size() |
| == sizeBeforeEmeritus); |
| } |
| |
| /** |
| * Test method for: |
| * {@link DoapUtil#validate(java.io.File)} |
| * |
| * @throws Exception if any |
| */ |
| public void testValidate() throws Exception { |
| File doapFile = new File(getBasedir(), "src/test/resources/generated-doap-1.0.rdf"); |
| assertFalse(DoapUtil.validate(doapFile).isEmpty()); |
| } |
| |
| /** |
| * Test method for: |
| * {@link DoapUtil#interpolate(String, MavenProject, org.apache.maven.settings.Settings)} |
| * |
| * @throws Exception if any |
| */ |
| public void testInterpolate() throws Exception { |
| License license = new License(); |
| license.setName("licenseName"); |
| license.setUrl("licenseUrl"); |
| |
| List<Developer> developers = new ArrayList<>(); |
| Developer developer1 = new Developer(); |
| developer1.setId("id1"); |
| developer1.setName("developerName1"); |
| developers.add(developer1); |
| Developer developer2 = new Developer(); |
| developer2.setId("id1"); |
| developer2.setName("developerName2"); |
| developers.add(developer2); |
| |
| MavenProject project = new MavenProject(); |
| project.setName("projectName"); |
| project.setDescription("projectDescription"); |
| project.setLicenses(Collections.singletonList(license)); |
| project.setDevelopers(developers); |
| project.getProperties().put("myKey", "myValue"); |
| |
| assertEquals(DoapUtil.interpolate("${project.name}", project, null), "projectName"); |
| assertEquals(DoapUtil.interpolate("my name is ${project.name}", project, null), "my name is projectName"); |
| assertEquals( |
| DoapUtil.interpolate("my name is ${project.invalid}", project, null), "my name is ${project.invalid}"); |
| assertEquals(DoapUtil.interpolate("${pom.description}", project, null), "projectDescription"); |
| assertNull(DoapUtil.interpolate("${project.licenses.name}", project, null)); |
| assertEquals(DoapUtil.interpolate("${project.licenses[0].name}", project, null), "licenseName"); |
| assertNull(DoapUtil.interpolate("${project.licenses[1].name}", project, null)); |
| assertNotNull(DoapUtil.interpolate("${project.developers}", project, null)); |
| assertEquals(DoapUtil.interpolate("${project.developers[0].name}", project, null), "developerName1"); |
| assertEquals(DoapUtil.interpolate("${project.developers[1].name}", project, null), "developerName2"); |
| assertEquals(DoapUtil.interpolate("${myKey}", project, null), "myValue"); |
| } |
| } |