Skip to content

SimplifyChainedAssertJAssertion should skip Optional values with wildcards #703

@uhafner

Description

@uhafner

What version of OpenRewrite are you using?

I am using

<!-- OpenRewrite versions   -->
<rewrite-maven-plugin.version>6.4.0</rewrite-maven-plugin.version>
<rewrite-testing-frameworks.version>3.6.1</rewrite-testing-frameworks.version>
<rewrite-static-analysis.version>2.6.0</rewrite-static-analysis.version>
<rewrite-migrate-java.version>3.7.0</rewrite-migrate-java.version>
<rewrite-recommendations.version>1.15.0</rewrite-recommendations.version>

How are you running OpenRewrite?

Maven, see https://github.com/jenkinsci/analysis-pom-plugin/blob/307b0a997b11b90498cb744bffb191aa8b9e8ec2/pom.xml#L269-L315

What is the smallest, simplest way to reproduce the problem?

import org.junit.jupiter.api.Test;

import java.util.Optional;

import static org.assertj.core.api.Assertions.*;

class BugTest {
    @Test
    void shouldShowRewriteBug() {
        Integer integer = 42;
        Optional<? extends Integer> optional = Optional.of(integer);

        assertThat(optional.get()).isEqualTo(integer);
    }
}

What did you expect to see?

In this case the expansion cannot be applied without compile errors, so it should be skipped.

What did you see instead?

This code with compile errors is generated:

class BugTest {
    @Test
    void shouldShowRewriteBug() {
        Integer integer = 42;
        Optional<? extends Integer> optional = Optional.of(integer);

        assertThat(optional).contains(integer);
    }
}

What is the full stack trace of any errors you encountered?

No Stacktrace, the generated code does not compile with Java 21.0.6

Are you interested in [contributing a fix to OpenRewrite]

Not right now.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status

    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions