Skip to content

Commit

Permalink
Test status quo for @inherited annotations in AnnotationMetadata
Browse files Browse the repository at this point in the history
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
  • Loading branch information
sbrannen committed Nov 28, 2019
1 parent d1f5442 commit 85016ae
Showing 1 changed file with 37 additions and 5 deletions.
Expand Up @@ -51,6 +51,9 @@
*/
class AnnotationMetadataTests {

private static final boolean reproduceGh24077 = false;


@Test
void standardAnnotationMetadata() {
AnnotationMetadata metadata = AnnotationMetadata.introspect(AnnotatedComponent.class);
Expand Down Expand Up @@ -93,12 +96,23 @@ private void doTestSubClassAnnotationInfo(AnnotationMetadata metadata) {
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();
Expand Down Expand Up @@ -278,13 +292,31 @@ private void doTestAnnotationInfo(AnnotationMetadata metadata) {
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);
Expand Down

0 comments on commit 85016ae

Please sign in to comment.