openrewrite / rewrite-testing-frameworks

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

`junit5.CategoryToTag` does not support qualified class names #495

Closed knutwannheden closed 6 months ago

knutwannheden commented 6 months ago

Problem

Recipe fails on fully qualified class names in @Category annotation.

Expected behavior

Fully qualified class names should be allowed.

Example diff

From: cli-scanner/src/test/java/org/eclipse/steady/cli/VulasCliTest.java

   import org.eclipse.steady.shared.json.model.Application;
import org.glassfish.grizzly.http.Method;
import org.glassfish.grizzly.http.util.HttpStatus;
-import org.junit.Test;
import org.junit.experimental.categories.Category;
+import org.junit.jupiter.api.Test;

public class VulasCliTest extends AbstractGoalTest {
             uri("/backend" + PathBuilder.goalExcecutions(null, null, this.testApp)));
}

-  @Test
+  {{80000000-0000-03a2-0000-000000000000}}@Test
@Category(org.eclipse.steady.shared.categories.Slow.class)
public void testPyAppGoal() throws GoalConfigurationException, GoalExecutionException {
System.setProperty(CoreConfiguration.APP_DIRS, "./src/test/resources/cf-helloworld");
             2,
       method(Method.POST),
       uri("/backend" + PathBuilder.goalExcecutions(null, null, this.testApp)));
-  }
+  }{{80000000-0000-03a2-0000-000000000000}}

@Test
public void testJavaAppGoal() throws GoalConfigurationException, GoalExecutionException {

Recipes in example diff:

Error messages:


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)
java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)
java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1625)
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.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
...```

### References:
- [View original result](https://app.moderne.io/results/JejfZ6Dpo/details/eyJfX3R5cGVuYW1lIjoiR2l0SHViUmVwb3NpdG9yeSIsIm9yaWdpbiI6ImdpdGh1Yi5jb20iLCJwYXRoIjoiZWNsaXBzZS9zdGVhZHkiLCJicmFuY2giOiJtYXN0ZXIifQ==?onlyShowErrors=true&referrer=https%3A%2F%2Fapp.moderne.io%2Fresults%2FJejfZ6Dpo%23state%3DeyJjb2x1bW5zIjp7ImNvbHVtblZpc2liaWxpdHlNb2RlbCI6eyJpZCI6ZmFsc2UsIndvcmtlciI6dHJ1ZSwiYXN0TG9hZGluZyI6ZmFsc2UsImluZm9NYXJrZXJzIjpmYWxzZSwid2FybmluZ01hcmtlcnMiOnRydWUsImVycm9yTWFya2VycyI6dHJ1ZSwiZGVidWdNYXJrZXJzIjpmYWxzZSwiZGV0YWlscyI6ZmFsc2UsInJlY2lwZVJ1biI6dHJ1ZSwiZGVwZW5kZW5jeVJlc29sdXRpb24iOmZhbHNlLCJsYXN0VXBkYXRlZCI6ZmFsc2UsInF1ZXVlUG9zaXRpb24iOmZhbHNlfSwib3JkZXJlZEZpZWxkcyI6WyJfX2NoZWNrX18iLCJhY3Rpb25zIiwic3RhdHVzIiwiZGV0YWlscyIsIm9yZ2FuaXphdGlvbiIsInJlcG9zaXRvcnkiLCJicmFuY2giLCJ0b3RhbFJlc3VsdHMiLCJ0b3RhbFNlYXJjaGVkIiwiaW5mb01hcmtlcnMiLCJ3YXJuaW5nTWFya2VycyIsImVycm9yTWFya2VycyIsImRlYnVnTWFya2VycyIsImFzdExvYWRpbmciLCJyZWNpcGVSdW4iLCJkZXBlbmRlbmN5UmVzb2x1dGlvbiIsIndvcmtlciIsInF1ZXVlUG9zaXRpb24iLCJsYXN0VXBkYXRlZCJdLCJkaW1lbnNpb25zIjp7Il9fY2hlY2tfXyI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjo1MCwid2lkdGgiOjUwfSwiYWN0aW9ucyI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMDAsIndpZHRoIjoxMDB9LCJzdGF0dXMiOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MTI1LCJ3aWR0aCI6MTAwLCJmbGV4IjowLjEyNX0sImRldGFpbHMiOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MTUwLCJ3aWR0aCI6MTAwLCJmbGV4IjowLjI1fSwib3JnYW5pemF0aW9uIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjE1MCwid2lkdGgiOjEwMCwiZmxleCI6MC4yNX0sInJlcG9zaXRvcnkiOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MjAwLCJ3aWR0aCI6MTAwLCJmbGV4IjoxfSwiYnJhbmNoIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjE1MCwid2lkdGgiOjEwMCwiZmxleCI6MC4yNX0sInRvdGFsUmVzdWx0cyI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMjUsIndpZHRoIjoxMDAsImZsZXgiOjAuMTI1fSwidG90YWxTZWFyY2hlZCI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMjUsIndpZHRoIjoxMDAsImZsZXgiOjAuMTI1fSwiaW5mb01hcmtlcnMiOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MTI1LCJ3aWR0aCI6MTAwLCJmbGV4IjowLjEyNX0sIndhcm5pbmdNYXJrZXJzIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjEyNSwid2lkdGgiOjEwMCwiZmxleCI6MC4xMjV9LCJlcnJvck1hcmtlcnMiOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MTI1LCJ3aWR0aCI6MTAwLCJmbGV4IjowLjEyNX0sImRlYnVnTWFya2VycyI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMjUsIndpZHRoIjoxMDAsImZsZXgiOjAuMTI1fSwiYXN0TG9hZGluZyI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMjUsIndpZHRoIjoxMDAsImZsZXgiOjAuMTI1fSwicmVjaXBlUnVuIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjEyNSwid2lkdGgiOjEwMCwiZmxleCI6MC4xMjV9LCJkZXBlbmRlbmN5UmVzb2x1dGlvbiI6eyJtYXhXaWR0aCI6LTEsIm1pbldpZHRoIjoxMjUsIndpZHRoIjoxMDAsImZsZXgiOjAuMTI1fSwid29ya2VyIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjE1MCwid2lkdGgiOjEwMCwiZmxleCI6MC4yNX0sInF1ZXVlUG9zaXRpb24iOnsibWF4V2lkdGgiOi0xLCJtaW5XaWR0aCI6MTI1LCJ3aWR0aCI6MTAwLCJmbGV4IjowLjEyNX0sImxhc3RVcGRhdGVkIjp7Im1heFdpZHRoIjotMSwibWluV2lkdGgiOjIwMCwid2lkdGgiOjEwMCwiZmxleCI6MX19fSwic29ydGluZyI6eyJzb3J0TW9kZWwiOlt7ImZpZWxkIjoidG90YWxSZXN1bHRzIiwic29ydCI6ImRlc2MifV19LCJmaWx0ZXIiOnsiZmlsdGVyTW9kZWwiOnsiaXRlbXMiOlt7ImZpZWxkIjoic3RhdHVzIiwib3BlcmF0b3IiOiJub3QiLCJpZCI6MTI1NjQsInZhbHVlIjoiRklOSVNIRUQifV0sImxvZ2ljT3BlcmF0b3IiOiJhbmQiLCJxdWlja0ZpbHRlclZhbHVlcyI6W10sInF1aWNrRmlsdGVyTG9naWNPcGVyYXRvciI6ImFuZCJ9fX0%3D)
- Recipe ID: `org.openrewrite.java.testing.junit5.CategoryToTag`
- Recipe Name: `JUnit 4 `@Category` to JUnit Jupiter `@Tag``
- Repository: `eclipse/steady/master`
- Created at Wed Mar 13 2024 06:27:20 GMT+0100 (Central European Standard Time)