Test status quo for @Inherited annotations in AnnotationMetadata

This commit introduces failing assertions that are currently disabled
via a boolean reproduceGh24077 flag.

Setting that flag to true demonstrates the regression for
StandardAnnotationMetadata and inconsistencies for SimpleAnnotationMetadata.

See gh-24077
This commit is contained in:
Sam Brannen 2019-11-28 18:45:58 +01:00
parent d1f544209e
commit 85016aef30
1 changed files with 37 additions and 5 deletions

View File

@ -51,6 +51,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
class AnnotationMetadataTests {
private static final boolean reproduceGh24077 = false;
@Test
void standardAnnotationMetadata() {
AnnotationMetadata metadata = AnnotationMetadata.introspect(AnnotatedComponent.class);
@ -93,12 +96,23 @@ class AnnotationMetadataTests {
assertThat(metadata.isAnnotated(Component.class.getName())).isFalse();
assertThat(metadata.isAnnotated(Scope.class.getName())).isFalse();
assertThat(metadata.isAnnotated(SpecialAttr.class.getName())).isFalse();
if (reproduceGh24077) {
assertThat(metadata.isAnnotated(NamedComposedAnnotation.class.getName())).isTrue();
assertThat(metadata.hasAnnotation(NamedComposedAnnotation.class.getName())).isTrue();
assertThat(metadata.getAnnotationTypes()).containsExactly(NamedComposedAnnotation.class.getName());
}
else {
assertThat(metadata.isAnnotated(NamedComposedAnnotation.class.getName())).isFalse();
assertThat(metadata.hasAnnotation(NamedComposedAnnotation.class.getName())).isFalse();
assertThat(metadata.getAnnotationTypes()).isEmpty();
}
assertThat(metadata.hasAnnotation(Component.class.getName())).isFalse();
assertThat(metadata.hasAnnotation(Scope.class.getName())).isFalse();
assertThat(metadata.hasAnnotation(SpecialAttr.class.getName())).isFalse();
assertThat(metadata.hasMetaAnnotation(Component.class.getName())).isFalse();
assertThat(metadata.hasMetaAnnotation(MetaAnnotation.class.getName())).isFalse();
assertThat(metadata.getAnnotationTypes()).hasSize(0);
assertThat(metadata.getAnnotationAttributes(Component.class.getName())).isNull();
assertThat(metadata.getAnnotationAttributes(MetaAnnotation.class.getName(), false)).isNull();
assertThat(metadata.getAnnotationAttributes(MetaAnnotation.class.getName(), true)).isNull();
@ -278,13 +292,31 @@ class AnnotationMetadataTests {
assertThat(metadata.getInterfaceNames().length).isEqualTo(1);
assertThat(metadata.getInterfaceNames()[0]).isEqualTo(Serializable.class.getName());
assertThat(metadata.isAnnotated(Component.class.getName())).isTrue();
if (reproduceGh24077) {
assertThat(metadata.isAnnotated(NamedComposedAnnotation.class.getName())).isTrue();
}
assertThat(metadata.hasAnnotation(Component.class.getName())).isTrue();
assertThat(metadata.hasAnnotation(Scope.class.getName())).isTrue();
assertThat(metadata.hasAnnotation(SpecialAttr.class.getName())).isTrue();
assertThat(metadata.getAnnotationTypes()).hasSize(6);
assertThat(metadata.getAnnotationTypes().contains(Component.class.getName())).isTrue();
assertThat(metadata.getAnnotationTypes().contains(Scope.class.getName())).isTrue();
assertThat(metadata.getAnnotationTypes().contains(SpecialAttr.class.getName())).isTrue();
if (reproduceGh24077) {
assertThat(metadata.hasAnnotation(NamedComposedAnnotation.class.getName())).isTrue();
assertThat(metadata.getAnnotationTypes()).containsExactlyInAnyOrder(
Component.class.getName(), Scope.class.getName(),
SpecialAttr.class.getName(), DirectAnnotation.class.getName(),
MetaMetaAnnotation.class.getName(), EnumSubclasses.class.getName(),
NamedComposedAnnotation.class.getName());
}
else {
assertThat(metadata.hasAnnotation(NamedComposedAnnotation.class.getName())).isFalse();
assertThat(metadata.getAnnotationTypes()).containsExactlyInAnyOrder(
Component.class.getName(), Scope.class.getName(),
SpecialAttr.class.getName(), DirectAnnotation.class.getName(),
MetaMetaAnnotation.class.getName(), EnumSubclasses.class.getName());
}
AnnotationAttributes compAttrs = (AnnotationAttributes) metadata.getAnnotationAttributes(Component.class.getName());
assertThat(compAttrs).hasSize(1);