From 83dcf2d2273dd069b6fa7357e15446ba97362603 Mon Sep 17 00:00:00 2001 From: erlholmq Date: Thu, 9 Feb 2017 23:00:47 +0100 Subject: [PATCH] 8251 Sliced tests doesn't reuse cached contexts when testing with Spock's spock.lang.* annotations. --- .../context/ImportsContextCustomizer.java | 4 +-- .../ImportsContextCustomizerTests.java | 26 ++++++++++++++++--- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java b/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java index 2b32b96f058c..a21989e996d7 100644 --- a/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java +++ b/spring-boot-test/src/main/java/org/springframework/boot/test/context/ImportsContextCustomizer.java @@ -401,8 +401,8 @@ private static final class SpockAnnotationFilter implements AnnotationFilter { @Override public boolean isIgnored(Annotation annotation) { - return annotation.annotationType().getName() - .startsWith("org.spockframework."); + return annotation.annotationType().getName().startsWith("org.spockframework.") || + annotation.annotationType().getName().startsWith("spock."); } } diff --git a/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java b/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java index bbbd7c5028ee..a3a565e83101 100644 --- a/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java +++ b/spring-boot-test/src/test/java/org/springframework/boot/test/context/ImportsContextCustomizerTests.java @@ -23,7 +23,6 @@ import kotlin.Metadata; import org.junit.Test; -import org.spockframework.runtime.model.SpecMetadata; import org.springframework.boot.context.annotation.DeterminableImports; import org.springframework.context.annotation.Configuration; @@ -69,6 +68,13 @@ public void customizersForTestClassesWithDifferentSpockMetadataAreEqual() { SecondSpockAnnotatedTestClass.class)); } + @Test + public void customizersForTestClassesWithMixOfSpockAndOtherAnnotationAreNotEqual() { + assertThat(new ImportsContextCustomizer(SecondSpockAnnotatedTestClass.class)) + .isNotEqualTo(new ImportsContextCustomizer( + ThirdSpockAnnotatedTestClass.class)); + } + @Import(TestImportSelector.class) @Indicator1 static class FirstImportSelectorAnnotatedClass { @@ -93,26 +99,40 @@ static class SecondDeterminableImportSelectorAnnotatedClass { } + @Import(TestImportSelector.class) @Metadata(d2 = "foo") static class FirstKotlinAnnotatedTestClass { } + @Import(TestImportSelector.class) @Metadata(d2 = "bar") static class SecondKotlinAnnotatedTestClass { } - @SpecMetadata(filename = "foo", line = 10) + @Import(TestImportSelector.class) + @org.spockframework.runtime.model.SpecMetadata(filename = "bar", line = 10) + @Indicator1 static class FirstSpockAnnotatedTestClass { } - @SpecMetadata(filename = "bar", line = 10) + + @Import(TestImportSelector.class) + @spock.lang.Stepwise + @Indicator1 static class SecondSpockAnnotatedTestClass { } + @Import(TestImportSelector.class) + @spock.lang.Stepwise + @Indicator2 + static class ThirdSpockAnnotatedTestClass { + + } + @Retention(RetentionPolicy.RUNTIME) @interface Indicator1 {