See gh-46785

Signed-off-by: Johnny Lim <izeye@naver.com>
This commit is contained in:
Johnny Lim 2025-08-12 10:49:46 +09:00 committed by Stéphane Nicoll
parent b7510ff65a
commit edb38f9bf8
3 changed files with 16 additions and 17 deletions

View File

@ -56,7 +56,7 @@ class ArchitectureCheckTests {
@Test
void whenPackagesAreTangledTaskFailsAndWritesAReport() throws IOException {
runGradleWithCompiledClasses("tangled",
shouldHaveFailureReportWithMessage("slices matching '(**)' should be free of cycles"));
shouldHaveFailureReportWithMessages("slices matching '(**)' should be free of cycles"));
}
@Test
@ -67,7 +67,7 @@ class ArchitectureCheckTests {
@Test
void whenBeanPostProcessorBeanMethodIsNotStaticTaskFailsAndWritesAReport() throws IOException {
runGradleWithCompiledClasses("bpp/nonstatic",
shouldHaveFailureReportWithMessage(
shouldHaveFailureReportWithMessages(
"methods that are annotated with @Bean and have raw return type assignable "
+ "to org.springframework.beans.factory.config.BeanPostProcessor"));
}
@ -75,7 +75,7 @@ class ArchitectureCheckTests {
@Test
void whenBeanPostProcessorBeanMethodIsStaticAndHasUnsafeParametersTaskFailsAndWritesAReport() throws IOException {
runGradleWithCompiledClasses("bpp/unsafeparameters",
shouldHaveFailureReportWithMessage(
shouldHaveFailureReportWithMessages(
"methods that are annotated with @Bean and have raw return type assignable "
+ "to org.springframework.beans.factory.config.BeanPostProcessor"));
}
@ -95,14 +95,14 @@ class ArchitectureCheckTests {
@Test
void whenBeanFactoryPostProcessorBeanMethodIsNotStaticTaskFailsAndWritesAReport() throws IOException {
runGradleWithCompiledClasses("bfpp/nonstatic",
shouldHaveFailureReportWithMessage("methods that are annotated with @Bean and have raw return "
shouldHaveFailureReportWithMessages("methods that are annotated with @Bean and have raw return "
+ "type assignable to org.springframework.beans.factory.config.BeanFactoryPostProcessor"));
}
@Test
void whenBeanFactoryPostProcessorBeanMethodIsStaticAndHasParametersTaskFailsAndWritesAReport() throws IOException {
runGradleWithCompiledClasses("bfpp/parameters",
shouldHaveFailureReportWithMessage("methods that are annotated with @Bean and have raw return "
shouldHaveFailureReportWithMessages("methods that are annotated with @Bean and have raw return "
+ "type assignable to org.springframework.beans.factory.config.BeanFactoryPostProcessor"));
}
@ -114,7 +114,7 @@ class ArchitectureCheckTests {
@Test
void whenClassLoadsResourceUsingResourceUtilsTaskFailsAndWritesReport() throws IOException {
runGradleWithCompiledClasses("resources/loads", shouldHaveFailureReportWithMessage(
runGradleWithCompiledClasses("resources/loads", shouldHaveFailureReportWithMessages(
"no classes should call method where target owner type org.springframework.util.ResourceUtils and target name 'getURL'"));
}
@ -130,26 +130,26 @@ class ArchitectureCheckTests {
@Test
void whenClassCallsObjectsRequireNonNullWithMessageTaskFailsAndWritesReport() throws IOException {
runGradleWithCompiledClasses("objects/requireNonNullWithString", shouldHaveFailureReportWithMessage(
runGradleWithCompiledClasses("objects/requireNonNullWithString", shouldHaveFailureReportWithMessages(
"no classes should call method Objects.requireNonNull(Object, String)"));
}
@Test
void whenClassCallsObjectsRequireNonNullWithSupplierTaskFailsAndWritesReport() throws IOException {
runGradleWithCompiledClasses("objects/requireNonNullWithSupplier", shouldHaveFailureReportWithMessage(
runGradleWithCompiledClasses("objects/requireNonNullWithSupplier", shouldHaveFailureReportWithMessages(
"no classes should call method Objects.requireNonNull(Object, Supplier)"));
}
@Test
void whenClassCallsStringToUpperCaseWithoutLocaleFailsAndWritesReport() throws IOException {
runGradleWithCompiledClasses("string/toUpperCase",
shouldHaveFailureReportWithMessage("because String.toUpperCase(Locale.ROOT) should be used instead"));
shouldHaveFailureReportWithMessages("because String.toUpperCase(Locale.ROOT) should be used instead"));
}
@Test
void whenClassCallsStringToLowerCaseWithoutLocaleFailsAndWritesReport() throws IOException {
runGradleWithCompiledClasses("string/toLowerCase",
shouldHaveFailureReportWithMessage("because String.toLowerCase(Locale.ROOT) should be used instead"));
shouldHaveFailureReportWithMessages("because String.toLowerCase(Locale.ROOT) should be used instead"));
}
@Test
@ -164,7 +164,7 @@ class ArchitectureCheckTests {
@Test
void whenBeanMethodExposePrivateTypeShouldFailAndWriteReport() throws IOException {
runGradleWithCompiledClasses("beans/privatebean", shouldHaveFailureReportWithMessage(
runGradleWithCompiledClasses("beans/privatebean", shouldHaveFailureReportWithMessages(
"methods that are annotated with @Bean should not return types declared with the PRIVATE modifier,"
+ " as such types are incompatible with Spring AOT processing",
"Method <org.springframework.boot.build.architecture.beans.privatebean.PrivateBean.myBean()> "
@ -173,7 +173,7 @@ class ArchitectureCheckTests {
}
@Test
void whenBeanMethodExposeNonPrivateTypeeShouldNotFail() throws IOException {
void whenBeanMethodExposeNonPrivateTypeShouldNotFail() throws IOException {
runGradleWithCompiledClasses("beans/regular", shouldHaveEmptyFailureReport());
}
@ -207,7 +207,7 @@ class ArchitectureCheckTests {
}
}
""");
runGradle(shouldHaveFailureReportWithMessage("methods that are annotated with @Bean and have raw return "
runGradle(shouldHaveFailureReportWithMessages("methods that are annotated with @Bean and have raw return "
+ "type assignable to org.springframework.beans.factory.config.BeanPostProcessor "));
}
@ -224,7 +224,7 @@ class ArchitectureCheckTests {
};
}
private Consumer<GradleRunner> shouldHaveFailureReportWithMessage(String... messages) {
private Consumer<GradleRunner> shouldHaveFailureReportWithMessages(String... messages) {
return (gradleRunner) -> {
assertThat(gradleRunner.buildAndFail().getOutput()).contains("BUILD FAILED")
.contains("Task :checkArchitectureMain FAILED");

View File

@ -29,7 +29,6 @@ import org.springframework.boot.test.context.FilteredClassLoader;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.util.ReflectionTestUtils;
import static org.assertj.core.api.Assertions.assertThat;
@ -77,7 +76,7 @@ class MetricsAspectsAutoConfigurationTests {
void shouldConfigureMeterTagAnnotationHandler() {
this.contextRunner.withUserConfiguration(MeterTagAnnotationHandlerConfiguration.class).run((context) -> {
assertThat(context).hasSingleBean(CountedAspect.class);
assertThat(ReflectionTestUtils.getField(context.getBean(TimedAspect.class), "meterTagAnnotationHandler"))
assertThat(context.getBean(TimedAspect.class)).extracting("meterTagAnnotationHandler")
.isSameAs(context.getBean(MeterTagAnnotationHandler.class));
});
}

View File

@ -30,7 +30,7 @@ class MyApplication {
private val logger: Log = LogFactory.getLog(MyApplication::class.java)
@RequestMapping("/")
fun hello(): String {
fun home(): String {
logger.info("home() has been called")
return "Hello, World!"
}