You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by pk...@apache.org on 2023/02/24 22:12:21 UTC

[logging-log4j-transform] branch main updated: Enable integration tests

This is an automated email from the ASF dual-hosted git repository.

pkarwasz pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/logging-log4j-transform.git


The following commit(s) were added to refs/heads/main by this push:
     new dd91cf0  Enable integration tests
dd91cf0 is described below

commit dd91cf04c99b19fa85495ff6f1cf1bf9fd424d1c
Author: Piotr P. Karwasz <pi...@karwasz.org>
AuthorDate: Fri Feb 24 23:11:02 2023 +0100

    Enable integration tests
---
 log4j-transform-maven-plugin/pom.xml               | 25 +++++++++++++
 .../src/it/location/pom.xml                        | 26 +++++++------
 .../it/location => transform/maven/it}/Main.java   |  2 +-
 .../log4j/transform/maven/it/MainTest.java}        | 21 +++++------
 .../log4j/{ => transform}/maven/LocationMojo.java  | 43 ++++++++++++++++++++--
 .../maven/scan/ClassFileInclusionScanner.java      |  2 +-
 .../maven/scan/SimpleInclusionScanner.java         |  2 +-
 log4j-transform-parent/pom.xml                     | 11 ++++++
 8 files changed, 103 insertions(+), 29 deletions(-)

diff --git a/log4j-transform-maven-plugin/pom.xml b/log4j-transform-maven-plugin/pom.xml
index a1e076c..0911d13 100644
--- a/log4j-transform-maven-plugin/pom.xml
+++ b/log4j-transform-maven-plugin/pom.xml
@@ -40,6 +40,11 @@
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.apache.maven</groupId>
+      <artifactId>maven-core</artifactId>
+      <scope>provided</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.maven.plugin-tools</groupId>
       <artifactId>maven-plugin-annotations</artifactId>
@@ -60,6 +65,26 @@
           <skip>true</skip>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-invoker-plugin</artifactId>
+        <configuration>
+          <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+          <localRepositoryPath>${project.build.directory}/it-repo</localRepositoryPath>
+          <goals>
+            <goal>clean verify</goal>
+          </goals>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>install</goal>
+              <goal>integration-test</goal>
+              <goal>verify</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jar-plugin</artifactId>
diff --git a/log4j-transform-maven-plugin/src/it/location/pom.xml b/log4j-transform-maven-plugin/src/it/location/pom.xml
index acbda6d..a294db1 100644
--- a/log4j-transform-maven-plugin/src/it/location/pom.xml
+++ b/log4j-transform-maven-plugin/src/it/location/pom.xml
@@ -15,41 +15,45 @@
   ~ See the license for the specific language governing permissions and
   ~ limitations under the license.
   -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <parent>
-    <groupId>org.apache.logging</groupId>
-    <artifactId>logging-parent</artifactId>
-    <version>7</version>
-    <relativePath/>
+    <groupId>org.apache.logging.log4j</groupId>
+    <artifactId>log4j-transform-parent</artifactId>
+    <version>${revision}</version>
+    <relativePath>../../../../log4j-transform-parent</relativePath>
   </parent>
   <groupId>org.apache.logging.log4j.maven.it</groupId>
   <artifactId>log4j-maven-it-location</artifactId>
-  <version>3.0.0-SNAPSHOT</version>
+  <packaging>jar</packaging>
   <name>Apache Log4j Maven plugin test</name>
   <description>The Apache Log4j Maven plugin test</description>
-  <packaging>jar</packaging>
   <properties>
-    <log4jParentDir>${basedir}/../../../..</log4jParentDir>
+    <log4j2.version>2.20.0</log4j2.version>
+    <revision>0.1.0-SNAPSHOT</revision>
   </properties>
   <dependencies>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
-      <version>${project.version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
-      <version>${project.version}</version>
       <scope>runtime</scope>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
     <plugins>
       <plugin>
         <groupId>org.apache.logging.log4j</groupId>
-        <artifactId>log4j-maven-plugin</artifactId>
+        <artifactId>log4j-transform-maven-plugin</artifactId>
         <version>${project.version}</version>
         <executions>
           <execution>
diff --git a/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java b/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
similarity index 95%
rename from log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java
rename to log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
index e535c67..3a91d3f 100644
--- a/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/maven/it/location/Main.java
+++ b/log4j-transform-maven-plugin/src/it/location/src/main/java/org/apache/logging/log4j/transform/maven/it/Main.java
@@ -14,7 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.logging.log4j.maven.it.location;
+package org.apache.logging.log4j.transform.maven.it;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java b/log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
similarity index 63%
copy from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
copy to log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
index fbefbc5..0f3fc95 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/it/location/src/test/java/org/apache/logging/log4j/transform/maven/it/MainTest.java
@@ -14,19 +14,16 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.it;
 
-import java.nio.file.Path;
-import java.util.Set;
+import org.junit.jupiter.api.Test;
 
-public interface ClassFileInclusionScanner {
+public class MainTest {
 
-    /**
-     * Finds class files matching a specific condition.
-     *
-     * @param sourceDir path to the folder where to search files
-     * @param targetDir an auxiliary folder
-     * @return a set of relative paths to file in {@code sourceDir}
-     */
-    Set<Path> getIncludedClassFiles(Path sourceDir, Path targetDir);
+    private static final String[] ARGS = {"Hello", "Log4j2"};
+
+    @Test
+    public void testDoesNotThrow() {
+        Main.main(ARGS);
+    }
 }
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
similarity index 72%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
index b7acb51..e4358e4 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/LocationMojo.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/LocationMojo.java
@@ -14,7 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.logging.log4j.maven;
+package org.apache.logging.log4j.transform.maven;
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
@@ -26,11 +26,15 @@ import java.util.List;
 import java.util.Set;
 import java.util.stream.Collectors;
 
-import org.apache.logging.log4j.maven.scan.ClassFileInclusionScanner;
-import org.apache.logging.log4j.maven.scan.SimpleInclusionScanner;
+import org.apache.logging.log4j.transform.maven.scan.ClassFileInclusionScanner;
+import org.apache.logging.log4j.transform.maven.scan.SimpleInclusionScanner;
 import org.apache.logging.log4j.weaver.LocationCacheGenerator;
 import org.apache.logging.log4j.weaver.LocationClassConverter;
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.versioning.ArtifactVersion;
+import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
+import org.apache.maven.artifact.versioning.OverConstrainedVersionException;
 import org.apache.maven.plugin.AbstractMojo;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -38,6 +42,7 @@ import org.apache.maven.plugins.annotations.LifecyclePhase;
 import org.apache.maven.plugins.annotations.Mojo;
 import org.apache.maven.plugins.annotations.Parameter;
 import org.apache.maven.plugins.annotations.ResolutionScope;
+import org.apache.maven.project.MavenProject;
 
 /**
  * Generates location information for use with Log4j2.
@@ -46,6 +51,16 @@ import org.apache.maven.plugins.annotations.ResolutionScope;
         requiresDependencyResolution = ResolutionScope.COMPILE)
 public class LocationMojo extends AbstractMojo {
 
+    private static final String LOG4J_GROUP_ID = "org.apache.logging.log4j";
+    private static final String LOG4J_API_ARTIFACT_ID = "log4j-api";
+    private static final ArtifactVersion MIN_SUPPORTED_VERSION = new DefaultArtifactVersion("2.20.0");
+
+    /**
+     * The Maven project.
+     */
+    @Parameter( defaultValue = "${project}", readonly = true, required = true )
+    private MavenProject project;
+
     /**
      * The directory containing class files to process.
      */
@@ -67,6 +82,8 @@ public class LocationMojo extends AbstractMojo {
 
     @Override
     public void execute() throws MojoExecutionException, MojoFailureException {
+        validateLog4jVersion();
+
         final Path sourceDirectory = this.sourceDirectory.toPath();
         final Path outputDirectory = this.outputDirectory.toPath();
         final LocationCacheGenerator locationCache = new LocationCacheGenerator();
@@ -136,4 +153,24 @@ public class LocationMojo extends AbstractMojo {
         }
 
     }
+
+    private void validateLog4jVersion() throws MojoExecutionException {
+        Artifact log4jApi = project.getArtifacts()
+                .stream()
+                .filter(a -> LOG4J_GROUP_ID.equals(a.getGroupId()) && LOG4J_API_ARTIFACT_ID.equals(a.getArtifactId()))
+                .findAny()
+                .orElseThrow(() -> new MojoExecutionException("Missing `log4j-api` dependency."));
+        try {
+            if (MIN_SUPPORTED_VERSION.compareTo(log4jApi.getSelectedVersion()) > 0) {
+                throw new MojoExecutionException("Log4j2 API version " + MIN_SUPPORTED_VERSION
+                        + " required. Selected version: " + log4jApi.getSelectedVersion());
+            }
+            // Transitive dependency
+            if (!project.getDependencyArtifacts().contains(log4jApi)) {
+                getLog().warn("Log4j2 API should not be a transitive dependency.");
+            }
+        } catch (OverConstrainedVersionException e) {
+            throw new MojoExecutionException("Can not determine `log4j-api` version.", e);
+        }
+    }
 }
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
similarity index 95%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
index fbefbc5..b86e24e 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/ClassFileInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/ClassFileInclusionScanner.java
@@ -14,7 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.scan;
 
 import java.nio.file.Path;
 import java.util.Set;
diff --git a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
similarity index 98%
rename from log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java
rename to log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
index 48ea78e..9ab831a 100644
--- a/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/maven/scan/SimpleInclusionScanner.java
+++ b/log4j-transform-maven-plugin/src/main/java/org/apache/logging/log4j/transform/maven/scan/SimpleInclusionScanner.java
@@ -14,7 +14,7 @@
  * See the license for the specific language governing permissions and
  * limitations under the license.
  */
-package org.apache.logging.log4j.maven.scan;
+package org.apache.logging.log4j.transform.maven.scan;
 
 import java.io.IOException;
 import java.nio.file.Files;
diff --git a/log4j-transform-parent/pom.xml b/log4j-transform-parent/pom.xml
index f5cdfd6..51296de 100644
--- a/log4j-transform-parent/pom.xml
+++ b/log4j-transform-parent/pom.xml
@@ -53,6 +53,7 @@
     <error-prone.version>2.16</error-prone.version>
     <jacoco-maven-plugin.version>0.8.8</jacoco-maven-plugin.version>
     <findsecbugs-plugin.version>1.12.0</findsecbugs-plugin.version>
+    <maven-invoker-plugin.version>3.5.0</maven-invoker-plugin.version>
     <spotbugs-maven-plugin.version>4.7.3.1</spotbugs-maven-plugin.version>
     <surefire.version>3.0.0-M7</surefire.version>
   </properties>
@@ -104,6 +105,11 @@
         <artifactId>freemarker</artifactId>
         <version>${freemarker.version}</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.maven</groupId>
+        <artifactId>maven-core</artifactId>
+        <version>${maven.version}</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.maven</groupId>
         <artifactId>maven-plugin-api</artifactId>
@@ -139,6 +145,11 @@
           <artifactId>maven-bundle-plugin</artifactId>
           <version>${bundle-plugin.version}</version>
         </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-invoker-plugin</artifactId>
+          <version>${maven-invoker-plugin.version}</version>
+        </plugin>
         <plugin>
           <groupId>com.github.spotbugs</groupId>
           <artifactId>spotbugs-maven-plugin</artifactId>