From ba2d484a4a9e74e9896b9a9ce72b077976af555a Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sat, 28 Oct 2023 18:02:56 +0200 Subject: [PATCH 1/2] Switch to JUnit5 --- plexus-component-metadata/pom.xml | 16 +++- .../DefaultComponentDescriptorWriterTest.java | 85 +++++++++---------- .../AnnotationComponentGleanerTest.java | 12 ++- .../gleaner/QDoxComponentGleanerTest.java | 36 +++++--- .../merge/ComponentsXmlMergerTest.java | 82 ++++++++++-------- 5 files changed, 128 insertions(+), 103 deletions(-) diff --git a/plexus-component-metadata/pom.xml b/plexus-component-metadata/pom.xml index a0ae9f89..9ef4a4fa 100644 --- a/plexus-component-metadata/pom.xml +++ b/plexus-component-metadata/pom.xml @@ -104,8 +104,20 @@ provided - junit - junit + org.codehaus.plexus + plexus-testing + 1.2.0 + test + + + org.junit.jupiter + junit-jupiter-api + test + + + org.slf4j + slf4j-simple + 1.7.36 test diff --git a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/DefaultComponentDescriptorWriterTest.java b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/DefaultComponentDescriptorWriterTest.java index c25dc7ec..d44bf627 100644 --- a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/DefaultComponentDescriptorWriterTest.java +++ b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/DefaultComponentDescriptorWriterTest.java @@ -16,6 +16,8 @@ package org.codehaus.plexus.metadata; +import javax.inject.Inject; + import java.io.File; import java.io.StringReader; import java.io.StringWriter; @@ -23,7 +25,6 @@ import java.util.LinkedList; import java.util.List; -import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.classworlds.ClassWorld; import org.codehaus.plexus.classworlds.realm.ClassRealm; import org.codehaus.plexus.component.repository.*; @@ -33,38 +34,36 @@ import org.codehaus.plexus.metadata.merge.ComponentsXmlMerger; import org.codehaus.plexus.metadata.merge.Merger; import org.codehaus.plexus.metadata.merge.PlexusXmlMerger; +import org.codehaus.plexus.testing.PlexusTest; import org.codehaus.plexus.util.xml.Xpp3DomBuilder; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Test for the {@link DefaultComponentDescriptorWriter} class. * * @version $Rev$ $Date$ */ -public class DefaultComponentDescriptorWriterTest extends PlexusTestCase { - private DefaultComponentDescriptorWriter descriptorWriter; - - // @Override - protected void setUp() throws Exception { - super.setUp(); - - descriptorWriter = (DefaultComponentDescriptorWriter) lookup(ComponentDescriptorWriter.class); - assertNotNull(descriptorWriter); - } +@PlexusTest +class DefaultComponentDescriptorWriterTest { - // @Override - protected void tearDown() throws Exception { - descriptorWriter = null; + @Inject + private DefaultComponentDescriptorWriter descriptorWriter; - super.tearDown(); - } + @Inject + private MetadataGenerator generator; - public void testBasic() throws Exception { + @Test + void testBasic() throws Exception { ComponentSetDescriptor set = new ComponentSetDescriptor(); - ComponentDescriptor component = new ComponentDescriptor(); + ComponentDescriptor component = new ComponentDescriptor<>(); component.setImplementation("java.lang.String"); component.setRole("foo"); component.setRoleHint("bar"); @@ -105,8 +104,8 @@ public void testBasic() throws Exception { // } - public void testComponentsOrder() throws Exception { - MetadataGenerator generator = lookup(MetadataGenerator.class); + @Test + void testComponentsOrder() throws Exception { assertNotNull(generator); MetadataGenerationRequest request = new MetadataGenerationRequest(); @@ -118,58 +117,52 @@ public void testComponentsOrder() throws Exception { generator.generateDescriptor(request); - assertTrue("Descriptor not generated", request.outputFile.exists()); + assertTrue(request.outputFile.exists(), "Descriptor not generated"); Document doc = new SAXBuilder().build(request.outputFile); // check if the components are sorted by role+impl List components = doc.getRootElement().getChild("components").getChildren(); - assertEquals("Number of components", 5, components.size()); + assertEquals(5, components.size(), "Number of components"); assertEquals( - "Component 1 role", ComponentDescriptorExtractor.class.getName(), - components.get(0).getChild("role").getText()); + components.get(0).getChild("role").getText(), + "Component 1 role"); assertEquals( - "Component 1 impl", ClassComponentDescriptorExtractor.class.getName(), - components.get(0).getChild("implementation").getText()); + components.get(0).getChild("implementation").getText(), + "Component 1 impl"); assertEquals( - "Component 2 role", ComponentDescriptorExtractor.class.getName(), - components.get(1).getChild("role").getText()); + components.get(1).getChild("role").getText(), + "Component 2 role"); assertEquals( - "Component 2 impl", SourceComponentDescriptorExtractor.class.getName(), - components.get(1).getChild("implementation").getText()); + components.get(1).getChild("implementation").getText(), + "Component 2 impl"); assertEquals( - "Component 3 role", MetadataGenerator.class.getName(), - components.get(2).getChild("role").getText()); + components.get(2).getChild("role").getText(), + "Component 3 role"); assertEquals( - "Component 3 impl", DefaultMetadataGenerator.class.getName(), - components.get(2).getChild("implementation").getText()); + components.get(2).getChild("implementation").getText(), + "Component 3 impl"); + assertEquals(Merger.class.getName(), components.get(3).getChild("role").getText(), "Component 4 role"); assertEquals( - "Component 4 role", - Merger.class.getName(), - components.get(3).getChild("role").getText()); - assertEquals( - "Component 4 impl", ComponentsXmlMerger.class.getName(), - components.get(3).getChild("implementation").getText()); + components.get(3).getChild("implementation").getText(), + "Component 4 impl"); + assertEquals(Merger.class.getName(), components.get(4).getChild("role").getText(), "Component 5 role"); assertEquals( - "Component 5 role", - Merger.class.getName(), - components.get(4).getChild("role").getText()); - assertEquals( - "Component 5 impl", PlexusXmlMerger.class.getName(), - components.get(4).getChild("implementation").getText()); + components.get(4).getChild("implementation").getText(), + "Component 5 impl"); } // TODO copied from PlexusTools.buildConfiguration() - find a better way to do this diff --git a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/AnnotationComponentGleanerTest.java b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/AnnotationComponentGleanerTest.java index ff542535..f2ab8c04 100644 --- a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/AnnotationComponentGleanerTest.java +++ b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/AnnotationComponentGleanerTest.java @@ -18,20 +18,24 @@ import java.util.List; -import junit.framework.TestCase; import org.codehaus.plexus.component.repository.ComponentDescriptor; import org.codehaus.plexus.component.repository.ComponentRequirement; import org.codehaus.plexus.component.repository.ComponentRequirementList; import org.codehaus.plexus.configuration.PlexusConfiguration; import org.codehaus.plexus.metadata.gleaner.ann.AnnotatedComponent; import org.codehaus.plexus.metadata.gleaner.ann.AnnotatedComponentRole; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * @author Eugene Kuleshov */ -public class AnnotationComponentGleanerTest extends TestCase { +class AnnotationComponentGleanerTest { - public void testGlean() throws Exception { + @Test + void testGlean() throws Exception { AnnotationComponentGleaner gleaner = new AnnotationComponentGleaner(); Class c = AnnotatedComponent.class; ComponentDescriptor descriptor = gleaner.glean(c.getName(), c.getClassLoader()); @@ -40,7 +44,7 @@ public void testGlean() throws Exception { assertEquals(AnnotatedComponentRole.class.getName(), descriptor.getRole()); List requirements = descriptor.getRequirements(); - assertEquals(requirements.toString(), 2, requirements.size()); + assertEquals(2, requirements.size(), requirements.toString()); ComponentRequirement requirement = requirements.get(0); assertEquals("dependency", requirement.getFieldName()); diff --git a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java index aaa71ffc..c2c46b8f 100644 --- a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java +++ b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java @@ -21,41 +21,45 @@ import com.thoughtworks.qdox.JavaProjectBuilder; import com.thoughtworks.qdox.model.JavaClass; import com.thoughtworks.qdox.model.JavaSource; -import org.codehaus.plexus.PlexusTestCase; import org.codehaus.plexus.component.repository.ComponentDescriptor; import org.codehaus.plexus.component.repository.ComponentRequirement; import org.codehaus.plexus.configuration.PlexusConfiguration; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * Tests for the {@link QDoxComponentGleaner} class. * * @version $Rev$ $Date$ */ -public class QDoxComponentGleanerTest extends PlexusTestCase { +class QDoxComponentGleanerTest { private QDoxComponentGleaner gleaner; private JavaProjectBuilder builder; // @Override - protected void setUp() throws Exception { - super.setUp(); - + @BeforeEach + public void setUp() { gleaner = new QDoxComponentGleaner(); builder = new JavaProjectBuilder(); } // @Override - protected void tearDown() throws Exception { + @AfterEach + protected void tearDown() { gleaner = null; builder = null; - - super.tearDown(); } private JavaSource addSource(final String name) throws IOException { File url = new File( - getBasedir(), - "src/test/java/" + getClass().getPackage().getName().replace('.', '/') + "/" + name); + ".", "src/test/java/" + this.getClass().getPackage().getName().replace('.', '/') + "/" + name); assertTrue(url.exists()); return builder.addSource(url); } @@ -87,12 +91,14 @@ private ComponentDescriptor glean(final String name) throws Exception { return glean(name, null); } - public void testNoAnnotationsClass() throws Exception { + @Test + void testNoAnnotationsClass() throws Exception { ComponentDescriptor component = glean("NoAnnotationsClass.java"); assertNull(component); } - public void testAbstractClass() throws Exception { + @Test + void testAbstractClass() throws Exception { ComponentDescriptor component = glean("AbstractClass.java"); assertNull(component); } @@ -104,12 +110,14 @@ public void testAbstractWithAnnoClass() throws Exception { } */ - public void testNoAnnotationsIntf() throws Exception { + @Test + void testNoAnnotationsIntf() throws Exception { ComponentDescriptor component = glean("NoAnnotationsIntf.java"); assertNull(component); } - public void testMyComponent() throws Exception { + @Test + void testMyComponent() throws Exception { addSource("ChildComponent.java"); ComponentDescriptor component = glean("MyComponent.java"); assertNotNull(component); diff --git a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/merge/ComponentsXmlMergerTest.java b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/merge/ComponentsXmlMergerTest.java index 97dcab21..b6fd5738 100644 --- a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/merge/ComponentsXmlMergerTest.java +++ b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/merge/ComponentsXmlMergerTest.java @@ -24,43 +24,60 @@ * SOFTWARE. */ +import javax.inject.Inject; + import java.io.File; import java.io.StringReader; import java.util.List; -import org.codehaus.plexus.PlexusTestCase; +import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.metadata.merge.support.AbstractMergeableElement; import org.codehaus.plexus.metadata.merge.support.AbstractMergeableElementList; import org.codehaus.plexus.metadata.merge.support.ComponentElement; import org.codehaus.plexus.metadata.merge.support.ComponentsElement; import org.codehaus.plexus.metadata.merge.support.RequirementsElement; +import org.codehaus.plexus.testing.PlexusTest; import org.codehaus.plexus.util.FileUtils; import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.fail; /** * Tests for {@link ComponentsXmlMerger}. * * @author Rahul Thakur */ -public class ComponentsXmlMergerTest extends PlexusTestCase { - public void testBasic() throws Exception { - ComponentsXmlMerger merger = (ComponentsXmlMerger) lookup(Merger.class, "componentsXml"); +@PlexusTest +class ComponentsXmlMergerTest { + + @Inject + PlexusContainer container; + + @Test + void testBasic() throws Exception { + ComponentsXmlMerger merger = (ComponentsXmlMerger) container.lookup(Merger.class, "componentsXml"); assertNotNull(merger); } - public void testComponentsXmlFileMerge() throws Exception { - File dominantXml = getTestFile("src/test/resources/org/codehaus/plexus/metadata/merge/dominant.xml"); - File recessiveXml = getTestFile("src/test/resources/org/codehaus/plexus/metadata/merge/recessive.xml"); + @Test + void testComponentsXmlFileMerge() throws Exception { + File dominantXml = new File("src/test/resources/org/codehaus/plexus/metadata/merge/dominant.xml"); + File recessiveXml = new File("src/test/resources/org/codehaus/plexus/metadata/merge/recessive.xml"); Document dDoc = new SAXBuilder().build(dominantXml); Document rDoc = new SAXBuilder().build(recessiveXml); // ComponentsXmlMerger merger = new ComponentsXmlMerger (dDoc); - Merger merger = lookup(Merger.class, "componentsXml"); + Merger merger = container.lookup(Merger.class, "componentsXml"); assertNotNull(merger); merger.merge(dDoc, rDoc); - File merged_xml = getTestFile("target/merged.xml"); + File merged_xml = new File("target/merged.xml"); if (merged_xml.exists()) { FileUtils.forceDelete(merged_xml); } @@ -69,26 +86,20 @@ public void testComponentsXmlFileMerge() throws Exception { // read merged xml and verify it was merged as expected Document mDoc = new SAXBuilder().build(merged_xml); Element mRootElt = mDoc.getRootElement(); - assertTrue(mRootElt.getName().equals("component-set")); + assertEquals("component-set", mRootElt.getName()); assertEquals(1, mRootElt.getChildren("components").size()); - List componentEltList = mRootElt.getChild("components").getChildren("component"); + List componentEltList = mRootElt.getChild("components").getChildren("component"); assertEquals(2, componentEltList.size()); - Element cElt = (Element) componentEltList.get(0); + Element cElt = componentEltList.get(0); assertEquals("org.codehaus.plexus.metadata.component.IComponent", cElt.getChildTextTrim("role")); assertEquals( "org.codehaus.plexus.metadata.component.DominantComponent", cElt.getChildTextTrim("implementation")); - assertEquals( - "Should only have 1 description element.", - 1, - cElt.getChildren("description").size()); + assertEquals(1, cElt.getChildren("description").size(), "Should only have 1 description element."); assertEquals("Description for Dominant component", cElt.getChildTextTrim("description")); - assertEquals( - "Should only have 1 configuration element.", - 1, - cElt.getChildren("configuration").size()); + assertEquals(1, cElt.getChildren("configuration").size(), "Should only have 1 configuration element."); // assert Merged configuration properties Element configurationElt = cElt.getChild("configuration"); assertNotNull(configurationElt); @@ -109,7 +120,8 @@ public void testComponentsXmlFileMerge() throws Exception { mRootElt.getChild("lifecycle-handler-manager").getAttributeValue("implementation")); } - public void testInvalidMergeableElements() throws Exception { + @Test + void testInvalidMergeableElements() throws Exception { // dominant Component Element AbstractMergeableElement dCE = new ComponentElement(new Element("component")); Element roleElt = new Element("role"); @@ -131,7 +143,8 @@ public void testInvalidMergeableElements() throws Exception { * * @throws Exception if there was an unexpected error. */ - public void testComponentsMerge() throws Exception { + @Test + void testComponentsMerge() throws Exception { // dominant Components Element AbstractMergeableElement dParent = new ComponentsElement(new Element("components")); Element dCE = new Element("component"); @@ -201,12 +214,9 @@ public void testComponentsMerge() throws Exception { * * @throws Exception in case of an error. */ - public void testDeepComponentsMerge() throws Exception { - // FIXME: Review this after MergeStrategies are in place. - if (true) { - return; - } - + @Test + @Disabled("FIXME: Review this after MergeStrategies are in place.") + void testDeepComponentsMerge() throws Exception { // dominant Component Element AbstractMergeableElement dCE = new ComponentElement(new Element("component")); Element roleElt = new Element("role"); @@ -256,23 +266,21 @@ public void testDeepComponentsMerge() throws Exception { dCE.merge(rCE); // verify the merge - assertTrue(null != dCE.getChild("role")); + assertNotNull(dCE.getChild("role")); assertEquals("org.codehaus.plexus.ISampleRole", dCE.getChildText("role")); - assertTrue(null != dCE.getChild("role-hint")); + assertNotNull(dCE.getChild("role-hint")); assertEquals("recessive-hint", dCE.getChildText("role-hint")); - assertTrue(null != dCE.getChild("lifecycle-handler")); + assertNotNull(dCE.getChild("lifecycle-handler")); assertEquals("plexus-configurable", dCE.getChildText("lifecycle-handler")); - assertTrue(null != dCE.getChild("requirements")); + assertNotNull(dCE.getChild("requirements")); assertEquals(1, dCE.getChild("requirements").getChildren("requirement").size()); assertEquals( "recessive-required-role-hint", - ((Element) dCE.getChild("requirements") - .getChildren("requirement") - .get(0)) - .getChildText("role-hint")); + dCE.getChild("requirements").getChildren("requirement").get(0).getChildText("role-hint")); } - public void testMergeRoleComponents() throws Exception { + @Test + void testMergeRoleComponents() throws Exception { SAXBuilder saxBuilder = new SAXBuilder(); String source1 = "\n" + " \n" From d8df67a33faf827c52634062e7b77b568eef43cf Mon Sep 17 00:00:00 2001 From: Sylwester Lachiewicz Date: Sun, 29 Oct 2023 23:26:17 +0100 Subject: [PATCH 2/2] Fix after review --- .../plexus/metadata/gleaner/QDoxComponentGleanerTest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java index c2c46b8f..3ac9b12e 100644 --- a/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java +++ b/plexus-component-metadata/src/test/java/org/codehaus/plexus/metadata/gleaner/QDoxComponentGleanerTest.java @@ -43,14 +43,12 @@ class QDoxComponentGleanerTest { private JavaProjectBuilder builder; - // @Override @BeforeEach public void setUp() { gleaner = new QDoxComponentGleaner(); builder = new JavaProjectBuilder(); } - // @Override @AfterEach protected void tearDown() { gleaner = null;