mirror of
https://github.com/jlengrand/error-prone-support.git
synced 2026-03-10 08:11:25 +00:00
Compare commits
4 Commits
pdsoels/do
...
pdsoels/ju
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6943cbdc15 | ||
|
|
d60598a5d2 | ||
|
|
29f4a70f61 | ||
|
|
9430e0a1c0 |
@@ -51,6 +51,11 @@
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-support</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-test-support</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-annotations</artifactId>
|
||||
|
||||
@@ -1,172 +0,0 @@
|
||||
package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import static com.google.common.collect.ImmutableSetMultimap.toImmutableSetMultimap;
|
||||
import static java.util.function.Function.identity;
|
||||
import static java.util.function.Predicate.not;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatCode;
|
||||
import static org.junit.jupiter.params.provider.Arguments.arguments;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSetMultimap;
|
||||
import com.google.errorprone.BugCheckerRefactoringTestHelper;
|
||||
import com.google.errorprone.BugCheckerRefactoringTestHelper.TestMode;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.params.ParameterizedTest;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import org.junit.jupiter.params.provider.MethodSource;
|
||||
|
||||
public final class RefasterCheckTest {
|
||||
/** The names of all Refaster template groups defined in this module. */
|
||||
private static final ImmutableSet<String> TEMPLATE_GROUPS =
|
||||
ImmutableSet.of(
|
||||
"AssertJ",
|
||||
"AssertJBigDecimal",
|
||||
"AssertJBigInteger",
|
||||
"AssertJBoolean",
|
||||
"AssertJByte",
|
||||
"AssertJCharSequence",
|
||||
"AssertJDouble",
|
||||
"AssertJEnumerable",
|
||||
"AssertJFloat",
|
||||
"AssertJInteger",
|
||||
"AssertJLong",
|
||||
"AssertJNumber",
|
||||
"AssertJObject",
|
||||
"AssertJOptional",
|
||||
"AssertJShort",
|
||||
"AssertJString",
|
||||
"Assorted",
|
||||
"BigDecimal",
|
||||
"Collection",
|
||||
"Comparator",
|
||||
"DoubleStream",
|
||||
"Equality",
|
||||
"ImmutableList",
|
||||
"ImmutableListMultimap",
|
||||
"ImmutableMap",
|
||||
"ImmutableMultiset",
|
||||
"ImmutableSet",
|
||||
"ImmutableSetMultimap",
|
||||
"ImmutableSortedMap",
|
||||
"ImmutableSortedMultiset",
|
||||
"ImmutableSortedSet",
|
||||
"IntStream",
|
||||
"JUnit",
|
||||
"LongStream",
|
||||
"MapEntry",
|
||||
"Mockito",
|
||||
"Multimap",
|
||||
"Null",
|
||||
"Optional",
|
||||
"Primitive",
|
||||
"Reactor",
|
||||
"RxJava2Adapter",
|
||||
"Stream",
|
||||
"String",
|
||||
"TestNGToAssertJ",
|
||||
"Time",
|
||||
"WebClient");
|
||||
/**
|
||||
* Matches the parts of the fully-qualified name of a template class that should be removed in
|
||||
* order to produce the associated {@link #TEMPLATE_GROUPS template group name}.
|
||||
*/
|
||||
private static final Pattern TEMPLATE_FQCN_TRIM_FOR_GROUP_NAME =
|
||||
Pattern.compile(".*\\.|Templates\\$.*");
|
||||
/**
|
||||
* A mapping from template group names to associated template names.
|
||||
*
|
||||
* <p>In effect, the values correspond to nested classes that represent individual Refaster
|
||||
* templates, while the keys correspond to the associated top-level "aggregator" classes.
|
||||
*/
|
||||
private static final ImmutableSetMultimap<String, String> TEMPLATES_BY_GROUP =
|
||||
indexTemplateNamesByGroup(RefasterCheck.ALL_CODE_TRANSFORMERS.get().keySet());
|
||||
|
||||
/** Returns every known template group name as a parameterized test argument. */
|
||||
@SuppressWarnings("UnusedMethod" /* Used as a `@MethodSource`. */)
|
||||
private static Stream<Arguments> templateGroupsUnderTest() {
|
||||
// XXX: Drop the filter once we have added tests for AssertJ!
|
||||
return TEMPLATES_BY_GROUP.keySet().stream().filter(not("AssertJ"::equals)).map(Arguments::of);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns every known (template group name, template name) pair as a parameterized test argument.
|
||||
*/
|
||||
@SuppressWarnings("UnusedMethod" /* Used as a `@MethodSource`. */)
|
||||
private static Stream<Arguments> templatesUnderTest() {
|
||||
// XXX: Drop the filter once we have added tests for AssertJ!
|
||||
return TEMPLATES_BY_GROUP.entries().stream()
|
||||
.filter(e -> !"AssertJ".equals(e.getKey()))
|
||||
.map(e -> arguments(e.getKey(), e.getValue()));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that {@link RefasterCheck#loadAllCodeTransformers} finds at least one code transformer
|
||||
* for all of the {@link #TEMPLATE_GROUPS}.
|
||||
*
|
||||
* <p>This test is just as much about ensuring that {@link #TEMPLATE_GROUPS} is exhaustive, so
|
||||
* that in turn {@link #replacement}'s coverage is exhaustive.
|
||||
*/
|
||||
@Test
|
||||
void loadAllCodeTransformers() {
|
||||
assertThat(TEMPLATES_BY_GROUP.keySet()).hasSameElementsAs(TEMPLATE_GROUPS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies for each of the {@link #TEMPLATE_GROUPS} that the associated code transformers have
|
||||
* the desired effect.
|
||||
*/
|
||||
@MethodSource("templateGroupsUnderTest")
|
||||
@ParameterizedTest
|
||||
void replacement(String group) {
|
||||
verifyRefactoring(group, namePattern(group));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that all loaded Refaster templates are covered by at least one test.
|
||||
*
|
||||
* <p>Note that this doesn't guarantee full coverage: this test cannot ascertain that all {@link
|
||||
* com.google.errorprone.refaster.Refaster#anyOf} branches are tested. Idem for {@link
|
||||
* com.google.errorprone.refaster.annotation.BeforeTemplate} methods in case there are multiple .
|
||||
*/
|
||||
@MethodSource("templatesUnderTest")
|
||||
@ParameterizedTest
|
||||
void coverage(String group, String template) {
|
||||
assertThatCode(() -> verifyRefactoring(group, namePattern(group, template)))
|
||||
.withFailMessage(
|
||||
"Template %s does not affect the tests for group %s; is it tested?", template, group)
|
||||
.isInstanceOf(AssertionError.class)
|
||||
.hasMessageFindingMatch("^(diff|expected):");
|
||||
}
|
||||
|
||||
private static ImmutableSetMultimap<String, String> indexTemplateNamesByGroup(
|
||||
ImmutableSet<String> templateNames) {
|
||||
return templateNames.stream()
|
||||
.collect(
|
||||
toImmutableSetMultimap(
|
||||
n -> TEMPLATE_FQCN_TRIM_FOR_GROUP_NAME.matcher(n).replaceAll(""), identity()));
|
||||
}
|
||||
|
||||
private static String namePattern(String groupName, String excludedTemplate) {
|
||||
return "(?!" + Pattern.quote(excludedTemplate) + ')' + namePattern(groupName);
|
||||
}
|
||||
|
||||
private static String namePattern(String groupName) {
|
||||
return Pattern.compile(Pattern.quote(groupName)) + "Templates.*";
|
||||
}
|
||||
|
||||
private void verifyRefactoring(String groupName, String templateNamePattern) {
|
||||
createRestrictedRefactoringTestHelper(templateNamePattern)
|
||||
.addInput(groupName + "TemplatesTestInput.java")
|
||||
.addOutput(groupName + "TemplatesTestOutput.java")
|
||||
.doTest(TestMode.TEXT_MATCH);
|
||||
}
|
||||
|
||||
private BugCheckerRefactoringTestHelper createRestrictedRefactoringTestHelper(
|
||||
String namePattern) {
|
||||
return BugCheckerRefactoringTestHelper.newInstance(RefasterCheck.class, getClass())
|
||||
.setArgs("-XepOpt:Refaster:NamePattern=" + namePattern);
|
||||
}
|
||||
}
|
||||
@@ -7,6 +7,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import org.assertj.core.api.AbstractBigDecimalAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBigDecimalTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import org.assertj.core.api.AbstractBigDecimalAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBigDecimalTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigInteger;
|
||||
import org.assertj.core.api.AbstractBigIntegerAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBigIntegerTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigInteger;
|
||||
import org.assertj.core.api.AbstractBigIntegerAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBigIntegerTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractBooleanAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBooleanTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractBooleanAssert<?> testAbstractBooleanAssertIsEqualTo() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractBooleanAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJBooleanTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractBooleanAssert<?> testAbstractBooleanAssertIsEqualTo() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractByteAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJByteTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractByteAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJByteTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJCharSequenceTemplatesTest implements RefasterTemplateTestCase {
|
||||
void testAssertThatCharSequenceIsEmpty1() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJCharSequenceTemplatesTest implements RefasterTemplateTestCase {
|
||||
void testAssertThatCharSequenceIsEmpty1() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractDoubleAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJDoubleTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractDoubleAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJDoubleTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Iterables;
|
||||
import org.assertj.core.api.EnumerableAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJEnumableTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Iterables;
|
||||
import org.assertj.core.api.EnumerableAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJEnumableTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractFloatAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJFloatTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractFloatAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJFloatTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractIntegerAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJIntegerTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractIntegerAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJIntegerTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractLongAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJLongTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractLongAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJLongTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import org.assertj.core.api.NumberAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJNumberTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<NumberAssert<?, ?>> testAbstractIntegerAssertIsPositive() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.BigInteger;
|
||||
import org.assertj.core.api.NumberAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJNumberTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<NumberAssert<?, ?>> testAbstractIntegerAssertIsPositive() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJObjectTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractAssert<?, ?> testAssertThatIsInstanceOf() {
|
||||
|
||||
@@ -3,6 +3,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJObjectTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractAssert<?, ?> testAssertThatIsInstanceOf() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.util.Optional;
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import org.assertj.core.api.OptionalAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJOptionalTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractAssert<?, ?> testAssertThatOptional() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.util.Optional;
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import org.assertj.core.api.OptionalAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJOptionalTemplatesTest implements RefasterTemplateTestCase {
|
||||
AbstractAssert<?, ?> testAssertThatOptional() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractShortAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJShortTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.assertj.core.data.Percentage.withPercentage;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.assertj.core.api.AbstractShortAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJShortTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import org.assertj.core.api.AbstractStringAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJStringTemplatesTest implements RefasterTemplateTestCase {
|
||||
void testAbstractStringAssertStringIsEmpty() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import org.assertj.core.api.AbstractAssert;
|
||||
import org.assertj.core.api.AbstractStringAssert;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssertJStringTemplatesTest implements RefasterTemplateTestCase {
|
||||
void testAbstractStringAssertStringIsEmpty() {
|
||||
|
||||
@@ -17,6 +17,7 @@ import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssortedTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -21,6 +21,7 @@ import java.util.HashSet;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class AssortedTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class BigDecimalTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<BigDecimal> testBigDecimalZero() {
|
||||
|
||||
@@ -2,6 +2,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.math.BigDecimal;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class BigDecimalTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<BigDecimal> testBigDecimalZero() {
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.LinkedList;
|
||||
import java.util.Optional;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class CollectionTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -11,6 +11,7 @@ import java.util.LinkedList;
|
||||
import java.util.Optional;
|
||||
import java.util.TreeSet;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class CollectionTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ComparatorTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ComparatorTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalDouble;
|
||||
import java.util.function.DoublePredicate;
|
||||
import java.util.stream.DoubleStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class DoubleStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalDouble;
|
||||
import java.util.function.DoublePredicate;
|
||||
import java.util.stream.DoubleStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class DoubleStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class EqualityTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import java.math.RoundingMode;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class EqualityTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.google.common.collect.Streams;
|
||||
import com.google.common.collect.TreeMultimap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableListMultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -16,6 +16,7 @@ import com.google.common.collect.Streams;
|
||||
import com.google.common.collect.TreeMultimap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableListMultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableListTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -14,6 +14,7 @@ import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableListTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableMapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Collections;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableMapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableMultisetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableMultisetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.Streams;
|
||||
import com.google.common.collect.TreeMultimap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSetMultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.Streams;
|
||||
import com.google.common.collect.TreeMultimap;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSetMultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Set;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedMapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -10,6 +10,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedMapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedMultisetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedMultisetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedSetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ImmutableSortedSetTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalInt;
|
||||
import java.util.function.IntPredicate;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class IntStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalInt;
|
||||
import java.util.function.IntPredicate;
|
||||
import java.util.stream.IntStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class IntStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class JUnitTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Arguments> testArgumentsEnumeration() {
|
||||
|
||||
@@ -4,6 +4,7 @@ import static org.junit.jupiter.params.provider.Arguments.arguments;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.junit.jupiter.params.provider.Arguments;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class JUnitTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Arguments> testArgumentsEnumeration() {
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalLong;
|
||||
import java.util.function.LongPredicate;
|
||||
import java.util.stream.LongStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class LongStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import java.util.OptionalLong;
|
||||
import java.util.function.LongPredicate;
|
||||
import java.util.stream.LongStream;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class LongStreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.common.collect.Maps;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MapEntryTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.google.common.collect.Maps;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.Comparator;
|
||||
import java.util.Map;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MapEntryTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.mockito.verification.VerificationMode;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MockitoTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import static org.mockito.Mockito.verify;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.mockito.verification.VerificationMode;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MockitoTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Multimaps;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.collect.Multimap;
|
||||
import com.google.common.collect.Multimaps;
|
||||
import java.util.Collection;
|
||||
import java.util.Set;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class MultimapTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -3,6 +3,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class NullTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.google.common.base.MoreObjects;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class NullTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class OptionalTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Function;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class OptionalTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.primitives.Ints;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class PrimitiveTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -2,6 +2,7 @@ package tech.picnic.errorprone.bugpatterns;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.primitives.Ints;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class PrimitiveTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -9,6 +9,7 @@ import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
import reactor.test.publisher.PublisherProbe;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ReactorTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Mono<Integer>> testMonoFromOptional() {
|
||||
|
||||
@@ -11,6 +11,7 @@ import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import reactor.test.StepVerifier;
|
||||
import reactor.test.publisher.PublisherProbe;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class ReactorTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Mono<Integer>> testMonoFromOptional() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.reactivestreams.Publisher;
|
||||
import reactor.adapter.rxjava.RxJava2Adapter;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class RxJava2AdapterTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Mono<Void>> testCompletableToMono() {
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.reactivestreams.Publisher;
|
||||
import reactor.adapter.rxjava.RxJava2Adapter;
|
||||
import reactor.core.publisher.Flux;
|
||||
import reactor.core.publisher.Mono;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class RxJava2AdapterTemplatesTest implements RefasterTemplateTestCase {
|
||||
ImmutableSet<Mono<Void>> testCompletableToMono() {
|
||||
|
||||
@@ -10,6 +10,7 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class StreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Predicate;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class StreamTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -12,6 +12,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class StringTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import com.google.common.collect.Streams;
|
||||
import java.util.Arrays;
|
||||
import java.util.Optional;
|
||||
import java.util.stream.Stream;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class StringTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -17,6 +17,7 @@ import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Iterators;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class TestNGToAssertJTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -22,6 +22,7 @@ import com.google.common.collect.Iterables;
|
||||
import com.google.common.collect.Iterators;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class TestNGToAssertJTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class TimeTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -13,6 +13,7 @@ import java.time.ZoneId;
|
||||
import java.time.ZoneOffset;
|
||||
import java.time.ZonedDateTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class TimeTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import static org.springframework.web.reactive.function.BodyInserters.fromValue;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class WebClientTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
@@ -5,6 +5,7 @@ import static org.springframework.web.reactive.function.BodyInserters.fromValue;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import org.springframework.test.web.reactive.server.WebTestClient;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;
|
||||
|
||||
final class WebClientTemplatesTest implements RefasterTemplateTestCase {
|
||||
@Override
|
||||
|
||||
12
pom.xml
12
pom.xml
@@ -35,7 +35,9 @@
|
||||
<modules>
|
||||
<module>error-prone-contrib</module>
|
||||
<module>refaster-resource-compiler</module>
|
||||
<module>refaster-runner</module>
|
||||
<module>refaster-support</module>
|
||||
<module>refaster-test-support</module>
|
||||
</modules>
|
||||
|
||||
<scm>
|
||||
@@ -182,11 +184,21 @@
|
||||
<artifactId>refaster-resource-compiler</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-runner</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-support</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-test-support</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson</groupId>
|
||||
<artifactId>jackson-bom</artifactId>
|
||||
|
||||
53
refaster-runner/pom.xml
Normal file
53
refaster-runner/pom.xml
Normal file
@@ -0,0 +1,53 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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>tech.picnic.error-prone-support</groupId>
|
||||
<artifactId>error-prone-support</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>refaster-runner</artifactId>
|
||||
|
||||
<name>Picnic :: Error Prone Support :: Refaster Runner</name>
|
||||
<description>Apply Refaster templates found on the classpath.</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_annotation</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_annotations</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_check_api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.auto.service</groupId>
|
||||
<artifactId>auto-service-annotations</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.findbugs</groupId>
|
||||
<artifactId>jsr305</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.errorprone</groupId>
|
||||
<artifactId>javac</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,76 @@
|
||||
package tech.picnic.errorprone.refaster.runner;
|
||||
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.reflect.ClassPath;
|
||||
import com.google.common.reflect.ClassPath.ResourceInfo;
|
||||
import com.google.errorprone.CodeTransformer;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Optional;
|
||||
|
||||
/** Scans the classpath for `.refaster` files and loads them as {@link CodeTransformer}s. */
|
||||
public final class CodeTransformers {
|
||||
private static final String REFASTER_TEMPLATE_SUFFIX = ".refaster";
|
||||
|
||||
private CodeTransformers() {}
|
||||
|
||||
/**
|
||||
* Use the classpath to find Refaster templates and return a map of the names with {@link
|
||||
* CodeTransformer}s.
|
||||
*
|
||||
* @return A mapping from Refaster template names to {@link CodeTransformer}s.
|
||||
*/
|
||||
public static ImmutableListMultimap<String, CodeTransformer> loadAllCodeTransformers() {
|
||||
ImmutableListMultimap.Builder<String, CodeTransformer> transformers =
|
||||
ImmutableListMultimap.builder();
|
||||
|
||||
for (ResourceInfo resource : getClassPathResources()) {
|
||||
getRefasterTemplateName(resource)
|
||||
.ifPresent(
|
||||
templateName ->
|
||||
loadCodeTransformer(resource)
|
||||
.ifPresent(transformer -> transformers.put(templateName, transformer)));
|
||||
}
|
||||
|
||||
return transformers.build();
|
||||
}
|
||||
|
||||
private static ImmutableSet<ResourceInfo> getClassPathResources() {
|
||||
try {
|
||||
return ClassPath.from(ClassLoader.getSystemClassLoader()).getResources();
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException("Failed to scan classpath for resources", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Optional<String> getRefasterTemplateName(ResourceInfo resource) {
|
||||
String resourceName = resource.getResourceName();
|
||||
if (!resourceName.endsWith(REFASTER_TEMPLATE_SUFFIX)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
int lastPathSeparator = resourceName.lastIndexOf('/');
|
||||
int beginIndex = lastPathSeparator < 0 ? 0 : lastPathSeparator + 1;
|
||||
int endIndex = resourceName.length() - REFASTER_TEMPLATE_SUFFIX.length();
|
||||
return Optional.of(resourceName.substring(beginIndex, endIndex));
|
||||
}
|
||||
|
||||
private static Optional<CodeTransformer> loadCodeTransformer(ResourceInfo resource) {
|
||||
try (InputStream in = resource.url().openStream();
|
||||
ObjectInputStream ois = new ObjectInputStream(in)) {
|
||||
@SuppressWarnings("BanSerializableRead" /* Part of the Refaster API. */)
|
||||
CodeTransformer codeTransformer = (CodeTransformer) ois.readObject();
|
||||
return Optional.of(codeTransformer);
|
||||
} catch (NoSuchElementException e) {
|
||||
/* For some reason we can't load the resource. Skip it. */
|
||||
// XXX: Should we log this?
|
||||
return Optional.empty();
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
throw new IllegalStateException("Can't load `CodeTransformer` from " + resource, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,32 +1,28 @@
|
||||
package tech.picnic.errorprone.bugpatterns;
|
||||
package tech.picnic.errorprone.refaster.runner;
|
||||
|
||||
import static com.google.common.collect.ImmutableList.toImmutableList;
|
||||
import static com.google.common.collect.ImmutableRangeSet.toImmutableRangeSet;
|
||||
import static java.util.Objects.requireNonNullElseGet;
|
||||
import static com.google.errorprone.BugPattern.LinkType.NONE;
|
||||
import static com.google.errorprone.BugPattern.SeverityLevel.SUGGESTION;
|
||||
import static com.google.errorprone.BugPattern.StandardTags.SIMPLIFICATION;
|
||||
import static java.util.function.Predicate.not;
|
||||
|
||||
import com.google.auto.service.AutoService;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.common.base.Suppliers;
|
||||
import com.google.common.collect.ImmutableCollection;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableListMultimap;
|
||||
import com.google.common.collect.ImmutableRangeSet;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.Range;
|
||||
import com.google.common.collect.RangeSet;
|
||||
import com.google.common.collect.TreeRangeSet;
|
||||
import com.google.common.reflect.ClassPath;
|
||||
import com.google.common.reflect.ClassPath.ResourceInfo;
|
||||
import com.google.errorprone.BugPattern;
|
||||
import com.google.errorprone.BugPattern.LinkType;
|
||||
import com.google.errorprone.BugPattern.SeverityLevel;
|
||||
import com.google.errorprone.BugPattern.StandardTags;
|
||||
import com.google.errorprone.CodeTransformer;
|
||||
import com.google.errorprone.CompositeCodeTransformer;
|
||||
import com.google.errorprone.ErrorProneFlags;
|
||||
import com.google.errorprone.SubContext;
|
||||
import com.google.errorprone.VisitorState;
|
||||
import com.google.errorprone.annotations.CanIgnoreReturnValue;
|
||||
import com.google.errorprone.bugpatterns.BugChecker;
|
||||
import com.google.errorprone.bugpatterns.BugChecker.CompilationUnitTreeMatcher;
|
||||
import com.google.errorprone.fixes.Replacement;
|
||||
@@ -34,16 +30,10 @@ import com.google.errorprone.matchers.Description;
|
||||
import com.sun.source.tree.CompilationUnitTree;
|
||||
import com.sun.tools.javac.tree.EndPosTable;
|
||||
import com.sun.tools.javac.tree.JCTree.JCCompilationUnit;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.UncheckedIOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.NoSuchElementException;
|
||||
import java.util.Optional;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Stream;
|
||||
@@ -60,17 +50,17 @@ import java.util.stream.Stream;
|
||||
@BugPattern(
|
||||
name = "Refaster",
|
||||
summary = "Write idiomatic code when possible",
|
||||
linkType = LinkType.NONE,
|
||||
severity = SeverityLevel.SUGGESTION,
|
||||
tags = StandardTags.SIMPLIFICATION)
|
||||
linkType = NONE,
|
||||
severity = SUGGESTION,
|
||||
tags = SIMPLIFICATION)
|
||||
public final class RefasterCheck extends BugChecker implements CompilationUnitTreeMatcher {
|
||||
private static final long serialVersionUID = 1L;
|
||||
private static final String REFASTER_TEMPLATE_SUFFIX = ".refaster";
|
||||
private static final String INCLUDED_TEMPLATES_PATTERN_FLAG = "Refaster:NamePattern";
|
||||
/** Flag to pass a pattern that restricts which Refaster templates are loaded. */
|
||||
public static final String INCLUDED_TEMPLATES_PATTERN_FLAG = "Refaster:NamePattern";
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@VisibleForTesting
|
||||
static final Supplier<ImmutableListMultimap<String, CodeTransformer>> ALL_CODE_TRANSFORMERS =
|
||||
Suppliers.memoize(RefasterCheck::loadAllCodeTransformers);
|
||||
Suppliers.memoize(CodeTransformers::loadAllCodeTransformers);
|
||||
|
||||
private final CodeTransformer codeTransformer;
|
||||
|
||||
@@ -89,6 +79,7 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr
|
||||
}
|
||||
|
||||
@Override
|
||||
@CanIgnoreReturnValue
|
||||
public Description matchCompilationUnit(CompilationUnitTree tree, VisitorState state) {
|
||||
/* First, collect all matches. */
|
||||
List<Description> matches = new ArrayList<>();
|
||||
@@ -178,57 +169,4 @@ public final class RefasterCheck extends BugChecker implements CompilationUnitTr
|
||||
.map(Map.Entry::getValue)
|
||||
.collect(toImmutableList());
|
||||
}
|
||||
|
||||
private static ImmutableListMultimap<String, CodeTransformer> loadAllCodeTransformers() {
|
||||
ImmutableListMultimap.Builder<String, CodeTransformer> transformers =
|
||||
ImmutableListMultimap.builder();
|
||||
|
||||
for (ResourceInfo resource : getClassPathResources()) {
|
||||
getRefasterTemplateName(resource)
|
||||
.ifPresent(
|
||||
templateName ->
|
||||
loadCodeTransformer(resource)
|
||||
.ifPresent(transformer -> transformers.put(templateName, transformer)));
|
||||
}
|
||||
|
||||
return transformers.build();
|
||||
}
|
||||
|
||||
private static ImmutableSet<ResourceInfo> getClassPathResources() {
|
||||
try {
|
||||
return ClassPath.from(
|
||||
requireNonNullElseGet(
|
||||
RefasterCheck.class.getClassLoader(), ClassLoader::getSystemClassLoader))
|
||||
.getResources();
|
||||
} catch (IOException e) {
|
||||
throw new UncheckedIOException("Failed to scan classpath for resources", e);
|
||||
}
|
||||
}
|
||||
|
||||
private static Optional<String> getRefasterTemplateName(ResourceInfo resource) {
|
||||
String resourceName = resource.getResourceName();
|
||||
if (!resourceName.endsWith(REFASTER_TEMPLATE_SUFFIX)) {
|
||||
return Optional.empty();
|
||||
}
|
||||
|
||||
int lastPathSeparator = resourceName.lastIndexOf('/');
|
||||
int beginIndex = lastPathSeparator < 0 ? 0 : lastPathSeparator + 1;
|
||||
int endIndex = resourceName.length() - REFASTER_TEMPLATE_SUFFIX.length();
|
||||
return Optional.of(resourceName.substring(beginIndex, endIndex));
|
||||
}
|
||||
|
||||
private static Optional<CodeTransformer> loadCodeTransformer(ResourceInfo resource) {
|
||||
try (InputStream in = resource.url().openStream();
|
||||
ObjectInputStream ois = new ObjectInputStream(in)) {
|
||||
@SuppressWarnings("BanSerializableRead" /* Part of the Refaster API. */)
|
||||
CodeTransformer codeTransformer = (CodeTransformer) ois.readObject();
|
||||
return Optional.of(codeTransformer);
|
||||
} catch (NoSuchElementException e) {
|
||||
/* For some reason we can't load the resource. Skip it. */
|
||||
// XXX: Should we log this?
|
||||
return Optional.empty();
|
||||
} catch (IOException | ClassNotFoundException e) {
|
||||
throw new IllegalStateException("Can't load `CodeTransformer` from " + resource, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
/** Classes used to find Refaster templates on the classpath and to apply them. */
|
||||
@com.google.errorprone.annotations.CheckReturnValue
|
||||
@javax.annotation.ParametersAreNonnullByDefault
|
||||
package tech.picnic.errorprone.refaster.runner;
|
||||
116
refaster-test-support/pom.xml
Normal file
116
refaster-test-support/pom.xml
Normal file
@@ -0,0 +1,116 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<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>tech.picnic.error-prone-support</groupId>
|
||||
<artifactId>error-prone-support</artifactId>
|
||||
<version>0.0.1-SNAPSHOT</version>
|
||||
</parent>
|
||||
|
||||
<artifactId>refaster-test-support</artifactId>
|
||||
|
||||
<name>Picnic :: Error Prone Support :: Refaster Test Support</name>
|
||||
<description>Utilities to support with the validation of Refaster templates tests.</description>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_annotation</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_annotations</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_check_api</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${groupId.error-prone}</groupId>
|
||||
<artifactId>error_prone_test_helpers</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-resource-compiler</artifactId>
|
||||
<!-- This dependency is declared only as a hint to Maven that
|
||||
compilation depends on it; see the `maven-compiler-plugin`'s
|
||||
`annotationProcessorPaths` configuration below. -->
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-runner</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.auto.service</groupId>
|
||||
<artifactId>auto-service-annotations</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.findbugs</groupId>
|
||||
<artifactId>jsr305</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.errorprone</groupId>
|
||||
<artifactId>javac</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-api</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-engine</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter-params</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<pluginManagement>
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>com.coveo</groupId>
|
||||
<artifactId>fmt-maven-plugin</artifactId>
|
||||
<configuration>
|
||||
<additionalSourceDirectories>
|
||||
<additionalSourceDirectory>${basedir}/src/test/resources</additionalSourceDirectory>
|
||||
</additionalSourceDirectories>
|
||||
</configuration>
|
||||
</plugin>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<configuration>
|
||||
<annotationProcessorPaths combine.children="append">
|
||||
<path>
|
||||
<groupId>${project.groupId}</groupId>
|
||||
<artifactId>refaster-resource-compiler</artifactId>
|
||||
<version>${project.version}</version>
|
||||
</path>
|
||||
</annotationProcessorPaths>
|
||||
<compilerArgs combine.children="append">
|
||||
<arg>-Xplugin:RefasterRuleResourceCompiler</arg>
|
||||
</compilerArgs>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</pluginManagement>
|
||||
</build>
|
||||
</project>
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user