openrewrite / rewrite-testing-frameworks

OpenRewrite recipes that perform common Java testing migration tasks.
Apache License 2.0
74 stars 67 forks source link

Issue discovered on `log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraAppenderIT.java` with `Change type` #447

Open knutwannheden opened 9 months ago

knutwannheden commented 9 months ago

Problem

Error:

@Category(Appenders.Cassandra.class)
public class CassandraAppenderIT {
  @BeforeAll
  public static void disbaleOnAarch64() {
      Assumptions.assumeFalse(SystemUtils.OS_ARCH.equalsIgnoreCase("aarch64"));
  }
  private static final String DDL = "CREATE TABLE logs (" + "id timeuuid PRIMARY KEY,"
@ -100,4 +100,4 @@
      }
      assertEquals(20, i);
  }
}

Message:

class org.openrewrite.java.tree.J$FieldAccess cannot be cast to class org.openrewrite.java.tree.J$Identifier (org.openrewrite.java.tree.J$FieldAccess and org.openrewrite.java.tree.J$Identifier are in unnamed module of loader 'app')

Detail:

java.lang.ClassCastException: class org.openrewrite.java.tree.J$FieldAccess cannot be cast to class org.openrewrite.java.tree.J$Identifier (org.openrewrite.java.tree.J$FieldAccess and org.openrewrite.java.tree.J$Identifier are in unnamed module of loader 'app')
org.openrewrite.java.testing.junit5.CategoryToTag$CategoryToTagVisitor.lambda$categoryAnnotationToTagAnnotations$0(CategoryToTag.java:106)
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
java.base/java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:411)
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
...

Expected behavior

Describe what you expected to see.

Example diff

From: log4j-cassandra/src/test/java/org/apache/logging/log4j/cassandra/CassandraAppenderIT.java

   */
package org.apache.logging.log4j.cassandra;

-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;

import com.datastax.driver.core.Row;
import com.datastax.driver.core.Session;
  import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.core.test.categories.Appenders;
import org.apache.logging.log4j.core.test.junit.LoggerContextRule;
-import org.junit.Assume;
-import org.junit.BeforeClass;
import org.junit.ClassRule;
-import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Assumptions;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
import org.junit.rules.RuleChain;

/**
* Integration test for CassandraAppender.
*/
-@Category(Appenders.Cassandra.class)
+{{80000000-0003-7833-0000-000000000000}}@Category(Appenders.Cassandra.class)
public class CassandraAppenderIT {

-    @BeforeClass
+    @BeforeAll
public static void disbaleOnAarch64() {
-        Assume.assumeFalse(SystemUtils.OS_ARCH.equalsIgnoreCase("aarch64"));
+        Assumptions.assumeFalse(SystemUtils.OS_ARCH.equalsIgnoreCase("aarch64"));
}

private static final String DDL = "CREATE TABLE logs (" + "id timeuuid PRIMARY KEY,"
      }
assertEquals(20, i);
}
-}
+}{{80000000-0003-7833-0000-000000000000}}

Recipes in example diff:

References:

knutwannheden commented 9 months ago

Looks like CategoryToTag has issues with qualified names as in @Category(Appenders.Cassandra.class).