From b069b57c9e106c883629618e77c1a82f8457d6db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Boutemy?= Date: Mon, 13 Feb 2023 12:44:14 -0500 Subject: [PATCH] simplify ITs code MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hervé Boutemy --- pom.xml | 2 +- .../cyclonedx/maven/BaseCycloneDxMojo.java | 1 - .../cyclonedx/maven/BaseMavenVerifier.java | 51 +++++++++++++ .../cyclonedx/maven/BomDependenciesTest.java | 53 +++++-------- .../org/cyclonedx/maven/Issue116Test.java | 71 ++++------------- .../org/cyclonedx/maven/Issue117Test.java | 50 ++++-------- .../java/org/cyclonedx/maven/Issue64Test.java | 76 +++++-------------- src/test/resources/bom-dependencies/pom.xml | 8 +- src/test/resources/issue-116/pom.xml | 3 +- src/test/resources/issue-117/pom.xml | 9 ++- src/test/resources/issue-64/pom.xml | 5 +- 11 files changed, 133 insertions(+), 196 deletions(-) create mode 100644 src/test/java/org/cyclonedx/maven/BaseMavenVerifier.java diff --git a/pom.xml b/pom.xml index 1324fe20..2660f9ab 100644 --- a/pom.xml +++ b/pom.xml @@ -220,7 +220,7 @@ - + io.takari.maven.plugins takari-lifecycle-plugin 2.0.8 diff --git a/src/main/java/org/cyclonedx/maven/BaseCycloneDxMojo.java b/src/main/java/org/cyclonedx/maven/BaseCycloneDxMojo.java index e3212bc1..636cf3f3 100644 --- a/src/main/java/org/cyclonedx/maven/BaseCycloneDxMojo.java +++ b/src/main/java/org/cyclonedx/maven/BaseCycloneDxMojo.java @@ -55,7 +55,6 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; -import java.util.Collections; import java.util.Deque; import java.util.HashMap; import java.util.HashSet; diff --git a/src/test/java/org/cyclonedx/maven/BaseMavenVerifier.java b/src/test/java/org/cyclonedx/maven/BaseMavenVerifier.java new file mode 100644 index 00000000..14250cb5 --- /dev/null +++ b/src/test/java/org/cyclonedx/maven/BaseMavenVerifier.java @@ -0,0 +1,51 @@ +package org.cyclonedx.maven; + +import io.takari.maven.testing.TestResources; +import io.takari.maven.testing.executor.MavenRuntime; +import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; + +import java.io.BufferedReader; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.Properties; +import org.junit.Rule; + +public class BaseMavenVerifier { + + @Rule + public final TestResources resources = new TestResources("target/test-classes", "target/test-classes/transformed-projects"); + + public final MavenRuntime verifier; + + public BaseMavenVerifier(MavenRuntimeBuilder runtimeBuilder) throws Exception { + this.verifier = runtimeBuilder/*.withCliOptions(opts)*/.build(); + } + + public String getCurrentVersion() throws IOException { + // extract current cyclonedx-maven-plugin version from test.properties https://github.com/takari/takari-plugin-testing-project/blob/master/testproperties.md + Properties props = new Properties(); + props.load(this.getClass().getClassLoader().getResourceAsStream("test.properties")); + return (String) props.get("project.version"); + } + + // source: https://github.com/takari/takari-plugin-testing-project/blob/master/takari-plugin-testing/src/main/java/io/takari/maven/testing/AbstractTestResources.java#L103 + protected static String fileRead(File file, boolean normalizeEOL) throws IOException { + StringBuilder sb = new StringBuilder(); + try (BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { + if (normalizeEOL) { + String str; + while ((str = r.readLine()) != null) { + sb.append(str).append('\n'); + } + } else { + int ch; + while ((ch = r.read()) != -1) { + sb.append((char) ch); + } + } + } + return sb.toString(); + } +} diff --git a/src/test/java/org/cyclonedx/maven/BomDependenciesTest.java b/src/test/java/org/cyclonedx/maven/BomDependenciesTest.java index 73c5dcef..b39f1b04 100644 --- a/src/test/java/org/cyclonedx/maven/BomDependenciesTest.java +++ b/src/test/java/org/cyclonedx/maven/BomDependenciesTest.java @@ -1,24 +1,19 @@ package org.cyclonedx.maven; -import io.takari.maven.testing.TestResources; -import io.takari.maven.testing.executor.MavenExecution; -import io.takari.maven.testing.executor.MavenRuntime; -import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; -import io.takari.maven.testing.executor.MavenVersions; -import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; import java.io.File; import java.io.IOException; import java.util.HashSet; -import java.util.Properties; import java.util.Set; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; -import org.apache.commons.io.FileUtils; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.w3c.dom.Document; @@ -26,11 +21,18 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; -import static org.junit.Assert.*; +import io.takari.maven.testing.executor.MavenExecution; +import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; +import io.takari.maven.testing.executor.MavenVersions; +import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; +/** + * test for https://github.com/CycloneDX/cyclonedx-maven-plugin/issues/256 + * + */ @RunWith(MavenJUnitTestRunner.class) @MavenVersions({"3.6.3"}) -public class BomDependenciesTest { +public class BomDependenciesTest extends BaseMavenVerifier { private static final String SHARED_DEPENDENCY1 = "pkg:maven/com.example/shared_dependency1@1.0.0?type=jar"; private static final String SHARED_DEPENDENCY2 = "pkg:maven/com.example/shared_dependency2@1.0.0?type=jar"; @@ -49,17 +51,8 @@ public class BomDependenciesTest { private static final String PROVIDED_DEPENDENCY = "pkg:maven/com.example/provided_dependency@1.0.0?type=jar"; private static final String DEPENDENCY1 = "pkg:maven/com.example/dependency1@1.0.0?type=jar"; - @Rule - public final TestResources resources = new TestResources( - "target/test-classes", - "target/test-classes/transformed-projects" - ); - - public final MavenRuntime verifier; - - public BomDependenciesTest(MavenRuntimeBuilder runtimeBuilder) - throws Exception { - this.verifier = runtimeBuilder.build(); //.withCliOptions(opts) // // + public BomDependenciesTest(MavenRuntimeBuilder runtimeBuilder) throws Exception { + super(runtimeBuilder); } @Test @@ -332,23 +325,11 @@ private void testHiddenVersionedTransitiveDependencies(final File projDir) throw } private File cleanAndBuild(final String[] excludeTypes) throws Exception { - File projectDirTransformed = new File( - "target/test-classes/transformed-projects/bom-dependencies" - ); - if (projectDirTransformed.exists()) { - FileUtils.cleanDirectory(projectDirTransformed); - projectDirTransformed.delete(); - } - File projDir = resources.getBasedir("bom-dependencies"); - Properties props = new Properties(); - - props.load(BomDependenciesTest.class.getClassLoader().getResourceAsStream("test.properties")); - String projectVersion = (String) props.get("project.version"); final MavenExecution initExecution = verifier - .forProject(projDir) // - .withCliOption("-Dtest.input.version=" + projectVersion) // debug + .forProject(projDir) + .withCliOption("-Dcurrent.version=" + getCurrentVersion()) // inject cyclonedx-maven-plugin version .withCliOption("-X") // debug .withCliOption("-B"); final MavenExecution execution; diff --git a/src/test/java/org/cyclonedx/maven/Issue116Test.java b/src/test/java/org/cyclonedx/maven/Issue116Test.java index 466adc8d..f71cf894 100644 --- a/src/test/java/org/cyclonedx/maven/Issue116Test.java +++ b/src/test/java/org/cyclonedx/maven/Issue116Test.java @@ -1,56 +1,36 @@ package org.cyclonedx.maven; -import io.takari.maven.testing.TestResources; -import io.takari.maven.testing.executor.MavenRuntime; -import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; -import io.takari.maven.testing.executor.MavenVersions; -import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; -import java.io.*; -import java.util.Properties; -import org.apache.commons.io.FileUtils; +import static org.junit.Assert.assertEquals; + +import java.io.File; + import org.apache.commons.lang3.StringUtils; -import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import static org.junit.Assert.*; +import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; +import io.takari.maven.testing.executor.MavenVersions; +import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; +/** + * test for https://github.com/CycloneDX/cyclonedx-maven-plugin/issues/116 + * dependencies in BOM file are missing a reference + */ @RunWith(MavenJUnitTestRunner.class) @MavenVersions({"3.6.3"}) -public class Issue116Test { - - @Rule - public final TestResources resources = new TestResources( - "target/test-classes", - "target/test-classes/transformed-projects" - ); +public class Issue116Test extends BaseMavenVerifier { - public final MavenRuntime verifier; - - public Issue116Test(MavenRuntimeBuilder runtimeBuilder) - throws Exception { - this.verifier = runtimeBuilder.build(); //.withCliOptions(opts) // // + public Issue116Test(MavenRuntimeBuilder runtimeBuilder) throws Exception { + super(runtimeBuilder); } @Test public void testPluginWithActiviti() throws Exception { - File projectDirTransformed = new File( - "target/test-classes/transformed-projects/issue-116" - ); - if (projectDirTransformed.exists()) { - FileUtils.cleanDirectory(projectDirTransformed); - projectDirTransformed.delete(); - } - File projDir = resources.getBasedir("issue-116"); - Properties props = new Properties(); - - props.load(Issue116Test.class.getClassLoader().getResourceAsStream("test.properties")); - String projectVersion = (String) props.get("project.version"); verifier - .forProject(projDir) // - .withCliOption("-Dtest.input.version=" + projectVersion) // debug + .forProject(projDir) + .withCliOption("-Dcurrent.version=" + getCurrentVersion()) // inject cyclonedx-maven-plugin version .withCliOption("-X") // debug .withCliOption("-B") .execute("clean", "package") @@ -61,23 +41,4 @@ public void testPluginWithActiviti() throws Exception { int matches = StringUtils.countMatches(bomContents, ""); assertEquals(4, matches); // 1 for the definition, 3 for each of its usages } - - // source: https://github.com/takari/takari-plugin-testing-project/blob/master/takari-plugin-testing/src/main/java/io/takari/maven/testing/AbstractTestResources.java#L103 - private static String fileRead(File file, boolean normalizeEOL) throws IOException { - StringBuilder sb = new StringBuilder(); - try (BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { - if (normalizeEOL) { - String str; - while ((str = r.readLine()) != null) { - sb.append(str).append('\n'); - } - } else { - int ch; - while ((ch = r.read()) != -1) { - sb.append((char) ch); - } - } - } - return sb.toString(); - } } diff --git a/src/test/java/org/cyclonedx/maven/Issue117Test.java b/src/test/java/org/cyclonedx/maven/Issue117Test.java index 66135611..be389a72 100644 --- a/src/test/java/org/cyclonedx/maven/Issue117Test.java +++ b/src/test/java/org/cyclonedx/maven/Issue117Test.java @@ -1,53 +1,33 @@ package org.cyclonedx.maven; -import io.takari.maven.testing.TestResources; -import io.takari.maven.testing.executor.MavenRuntime; -import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; -import io.takari.maven.testing.executor.MavenVersions; -import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; import java.io.File; -import java.util.Properties; -import org.apache.commons.io.FileUtils; -import org.junit.Rule; + import org.junit.Test; import org.junit.runner.RunWith; +import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; +import io.takari.maven.testing.executor.MavenVersions; +import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; + +/** + * test for https://github.com/CycloneDX/cyclonedx-maven-plugin/issues/117 + * issue with pom.xml UTF-8 encoding with Byte Order Mark + */ @RunWith(MavenJUnitTestRunner.class) @MavenVersions({"3.6.3"}) -public class Issue117Test { - - @Rule - public final TestResources resources = new TestResources( - "target/test-classes", - "target/test-classes/transformed-projects" - ); +public class Issue117Test extends BaseMavenVerifier { - public final MavenRuntime verifier; - - public Issue117Test(MavenRuntimeBuilder runtimeBuilder) - throws Exception { - this.verifier = runtimeBuilder.build(); //.withCliOptions(opts) // // + public Issue117Test(MavenRuntimeBuilder runtimeBuilder) throws Exception { + super(runtimeBuilder); } @Test - public void testPluginWithActiviti() throws Exception { - File projectDirTransformed = new File( - "target/test-classes/transformed-projects/issue-117" - ); - if (projectDirTransformed.exists()) { - FileUtils.cleanDirectory(projectDirTransformed); - projectDirTransformed.delete(); - } - + public void testByteOrderMarkFromActiviti() throws Exception { File projDir = resources.getBasedir("issue-117"); - Properties props = new Properties(); - - props.load(Issue117Test.class.getClassLoader().getResourceAsStream("test.properties")); - String projectVersion = (String) props.get("project.version"); verifier - .forProject(projDir) // - .withCliOption("-Dtest.input.version=" + projectVersion) // debug + .forProject(projDir) + .withCliOption("-Dcurrent.version=" + getCurrentVersion()) // inject cyclonedx-maven-plugin version .withCliOption("-X") // debug .withCliOption("-B") .execute("clean", "package") diff --git a/src/test/java/org/cyclonedx/maven/Issue64Test.java b/src/test/java/org/cyclonedx/maven/Issue64Test.java index 9d179bd6..a47d3c52 100644 --- a/src/test/java/org/cyclonedx/maven/Issue64Test.java +++ b/src/test/java/org/cyclonedx/maven/Issue64Test.java @@ -1,57 +1,37 @@ package org.cyclonedx.maven; -import io.takari.maven.testing.TestResources; -import io.takari.maven.testing.executor.MavenRuntime; -import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; -import io.takari.maven.testing.executor.MavenVersions; -import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; -import org.apache.commons.io.FileUtils; -import org.junit.Rule; +import static io.takari.maven.testing.TestResources.assertFilesPresent; +import static org.junit.Assert.assertTrue; + +import java.io.File; +import java.io.IOException; + import org.junit.Test; import org.junit.runner.RunWith; -import java.io.*; -import java.util.Properties; - -import static io.takari.maven.testing.TestResources.assertFilesPresent; -import static org.junit.Assert.assertTrue; +import io.takari.maven.testing.executor.MavenRuntime.MavenRuntimeBuilder; +import io.takari.maven.testing.executor.MavenVersions; +import io.takari.maven.testing.executor.junit.MavenJUnitTestRunner; +/** + * test for https://github.com/CycloneDX/cyclonedx-maven-plugin/issues/64 + * include test scoped dependencies + */ @RunWith(MavenJUnitTestRunner.class) @MavenVersions({"3.6.3"}) -public class Issue64Test { - - @Rule - public final TestResources resources = new TestResources( - "target/test-classes", - "target/test-classes/transformed-projects" - ); - - public final MavenRuntime verifier; +public class Issue64Test extends BaseMavenVerifier { - public Issue64Test(MavenRuntimeBuilder runtimeBuilder) - throws Exception { - this.verifier = runtimeBuilder.build(); + public Issue64Test(MavenRuntimeBuilder runtimeBuilder) throws Exception { + super(runtimeBuilder); } @Test public void testPluginWithActiviti() throws Exception { - File projectDirTransformed = new File( - "target/test-classes/transformed-projects/issue-64" - ); - if (projectDirTransformed.exists()) { - FileUtils.cleanDirectory(projectDirTransformed); - projectDirTransformed.delete(); - } - File projDir = resources.getBasedir("issue-64"); - Properties props = new Properties(); - - props.load(Issue117Test.class.getClassLoader().getResourceAsStream("test.properties")); - String projectVersion = String.class.cast(props.get("project.version")); verifier - .forProject(projDir) // - .withCliOption("-Dtest.input.version=" + projectVersion) // debug + .forProject(projDir) + .withCliOption("-Dcurrent.version=" + getCurrentVersion()) // inject cyclonedx-maven-plugin version .withCliOption("-X") // debug .withCliOption("-B") .execute("clean", "verify") @@ -65,24 +45,4 @@ private static void assertFileContains(File basedir, String expectedFile, String String bomContents = fileRead(new File(basedir, expectedFile), true); assertTrue(String.format("%s contains %s", expectedFile, expectedContent), bomContents.contains(expectedContent)); } - - // source: https://github.com/takari/takari-plugin-testing-project/blob/master/takari-plugin-testing/src/main/java/io/takari/maven/testing/AbstractTestResources.java#L103 - private static String fileRead(File file, boolean normalizeEOL) throws IOException { - StringBuilder sb = new StringBuilder(); - try (BufferedReader r = new BufferedReader(new InputStreamReader(new FileInputStream(file)))) { - if (normalizeEOL) { - String str; - while ((str = r.readLine()) != null) { - sb.append(str).append('\n'); - } - } else { - int ch; - while ((ch = r.read()) != -1) { - sb.append((char) ch); - } - } - } - return sb.toString(); - } - } diff --git a/src/test/resources/bom-dependencies/pom.xml b/src/test/resources/bom-dependencies/pom.xml index 90180f8d..d7b3e167 100644 --- a/src/test/resources/bom-dependencies/pom.xml +++ b/src/test/resources/bom-dependencies/pom.xml @@ -42,12 +42,13 @@ shared_type_dependency3 shared_type_dependency4 + org.cyclonedx cyclonedx-maven-plugin - ${test.input.version} + ${current.version} package @@ -65,12 +66,13 @@ false false false - true - all + false + xml + UTF-8 diff --git a/src/test/resources/issue-116/pom.xml b/src/test/resources/issue-116/pom.xml index f30cce72..f6a29a1d 100644 --- a/src/test/resources/issue-116/pom.xml +++ b/src/test/resources/issue-116/pom.xml @@ -33,12 +33,13 @@ 5.14 + org.cyclonedx cyclonedx-maven-plugin - ${test.input.version} + ${current.version} package diff --git a/src/test/resources/issue-117/pom.xml b/src/test/resources/issue-117/pom.xml index 990f054b..b4888002 100644 --- a/src/test/resources/issue-117/pom.xml +++ b/src/test/resources/issue-117/pom.xml @@ -33,12 +33,13 @@ 5.14 + org.cyclonedx cyclonedx-maven-plugin - ${test.input.version} + ${current.version} package @@ -55,9 +56,9 @@ true true true - true - true - all + false + false + json diff --git a/src/test/resources/issue-64/pom.xml b/src/test/resources/issue-64/pom.xml index 11c9eef8..4bb087f6 100644 --- a/src/test/resources/issue-64/pom.xml +++ b/src/test/resources/issue-64/pom.xml @@ -40,12 +40,13 @@ provided + org.cyclonedx cyclonedx-maven-plugin - ${test.input.version} + ${current.version} verify @@ -63,7 +64,7 @@ true true true - true + false xml