This commit is contained in:
Johnny Lim 2023-02-15 22:22:58 +09:00
parent 3e3f046dc9
commit ce3be72e7f
18 changed files with 49 additions and 51 deletions

View File

@ -4777,7 +4777,7 @@ directly. For example:
ContextSnapshot snapshot = ContextSnapshot.captureAll(); ContextSnapshot snapshot = ContextSnapshot.captureAll();
// On a different thread: restore ThreadLocal values // On a different thread: restore ThreadLocal values
try (ContextSnapshot.Scope scoped = snapshot.setThreadLocals()) { try (ContextSnapshot.Scope scope = snapshot.setThreadLocals()) {
// ... // ...
} }
---- ----

View File

@ -16,10 +16,9 @@
package org.springframework.context.aot package org.springframework.context.aot
import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.mockito.Mockito import org.mockito.Mockito
import org.springframework.aot.generate.GenerationContext
import org.springframework.aot.hint.MemberCategory import org.springframework.aot.hint.MemberCategory
import org.springframework.aot.hint.predicate.RuntimeHintsPredicates import org.springframework.aot.hint.predicate.RuntimeHintsPredicates
import org.springframework.aot.test.generate.TestGenerationContext import org.springframework.aot.test.generate.TestGenerationContext
@ -41,7 +40,7 @@ class KotlinReflectionBeanRegistrationAotProcessorTests {
@Test @Test
fun processorIsRegistered() { fun processorIsRegistered() {
Assertions.assertThat( assertThat(
AotServices.factories(javaClass.classLoader).load(BeanRegistrationAotProcessor::class.java)) AotServices.factories(javaClass.classLoader).load(BeanRegistrationAotProcessor::class.java))
.anyMatch(KotlinReflectionBeanRegistrationAotProcessor::class.java::isInstance) .anyMatch(KotlinReflectionBeanRegistrationAotProcessor::class.java::isInstance)
} }
@ -49,12 +48,12 @@ class KotlinReflectionBeanRegistrationAotProcessorTests {
@Test @Test
fun shouldProcessKotlinBean() { fun shouldProcessKotlinBean() {
process(SampleKotlinBean::class.java) process(SampleKotlinBean::class.java)
Assertions.assertThat( assertThat(
RuntimeHintsPredicates.reflection() RuntimeHintsPredicates.reflection()
.onType(SampleKotlinBean::class.java) .onType(SampleKotlinBean::class.java)
.withMemberCategory(MemberCategory.INTROSPECT_DECLARED_METHODS) .withMemberCategory(MemberCategory.INTROSPECT_DECLARED_METHODS)
).accepts(generationContext.runtimeHints) ).accepts(generationContext.runtimeHints)
Assertions.assertThat( assertThat(
RuntimeHintsPredicates.reflection() RuntimeHintsPredicates.reflection()
.onType(BaseKotlinBean::class.java) .onType(BaseKotlinBean::class.java)
.withMemberCategory(MemberCategory.INTROSPECT_DECLARED_METHODS) .withMemberCategory(MemberCategory.INTROSPECT_DECLARED_METHODS)
@ -64,7 +63,7 @@ class KotlinReflectionBeanRegistrationAotProcessorTests {
@Test @Test
fun shouldNotProcessJavaBean() { fun shouldNotProcessJavaBean() {
process(SampleJavaBean::class.java) process(SampleJavaBean::class.java)
Assertions.assertThat(generationContext.runtimeHints.reflection().typeHints()).isEmpty() assertThat(generationContext.runtimeHints.reflection().typeHints()).isEmpty()
} }
private fun process(beanClass: Class<*>) { private fun process(beanClass: Class<*>) {

View File

@ -20,7 +20,8 @@ import jakarta.validation.ValidationException
import jakarta.validation.Validator import jakarta.validation.Validator
import jakarta.validation.constraints.NotEmpty import jakarta.validation.constraints.NotEmpty
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.Assertions.assertThatExceptionOfType
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.springframework.aop.framework.ProxyFactory import org.springframework.aop.framework.ProxyFactory
import org.springframework.validation.annotation.Validated import org.springframework.validation.annotation.Validated
@ -41,8 +42,8 @@ class KotlinMethodValidationTests {
validator.afterPropertiesSet() validator.afterPropertiesSet()
proxyFactory.addAdvice(MethodValidationInterceptor(validator as Validator)) proxyFactory.addAdvice(MethodValidationInterceptor(validator as Validator))
val proxy = proxyFactory.getProxy() as MyValidBean val proxy = proxyFactory.getProxy() as MyValidBean
Assertions.assertThat(proxy.validName("name")).isEqualTo("name") assertThat(proxy.validName("name")).isEqualTo("name")
Assertions.assertThatExceptionOfType(ValidationException::class.java).isThrownBy { assertThatExceptionOfType(ValidationException::class.java).isThrownBy {
proxy.validName("") proxy.validName("")
} }
} }
@ -55,8 +56,8 @@ class KotlinMethodValidationTests {
validator.afterPropertiesSet() validator.afterPropertiesSet()
proxyFactory.addAdvice(MethodValidationInterceptor(validator as Validator)) proxyFactory.addAdvice(MethodValidationInterceptor(validator as Validator))
val proxy = proxyFactory.getProxy() as MyValidCoroutinesBean val proxy = proxyFactory.getProxy() as MyValidCoroutinesBean
Assertions.assertThat(proxy.validName("name")).isEqualTo("name") assertThat(proxy.validName("name")).isEqualTo("name")
Assertions.assertThatExceptionOfType(ValidationException::class.java).isThrownBy { assertThatExceptionOfType(ValidationException::class.java).isThrownBy {
runBlocking { runBlocking {
proxy.validName("") proxy.validName("")
} }

View File

@ -17,7 +17,7 @@ package org.springframework.cglib.core;
@Deprecated @Deprecated
public class TinyBitSet { public class TinyBitSet {
private static int[] T = new int[256]; private static final int[] T = new int[256];
private int value = 0; private int value = 0;
private static int gcount(int x) { private static int gcount(int x) {

View File

@ -145,7 +145,7 @@ public abstract class RepeatableContainers {
private static final Object NONE = new Object(); private static final Object NONE = new Object();
private static StandardRepeatableContainers INSTANCE = new StandardRepeatableContainers(); private static final StandardRepeatableContainers INSTANCE = new StandardRepeatableContainers();
StandardRepeatableContainers() { StandardRepeatableContainers() {
super(null); super(null);
@ -270,7 +270,7 @@ public abstract class RepeatableContainers {
*/ */
private static class NoRepeatableContainers extends RepeatableContainers { private static class NoRepeatableContainers extends RepeatableContainers {
private static NoRepeatableContainers INSTANCE = new NoRepeatableContainers(); private static final NoRepeatableContainers INSTANCE = new NoRepeatableContainers();
NoRepeatableContainers() { NoRepeatableContainers() {
super(null); super(null);

View File

@ -42,7 +42,7 @@ import org.springframework.util.MimeTypeUtils;
public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> { public class ResourceDecoder extends AbstractDataBufferDecoder<Resource> {
/** Name of hint with a filename for the resource(e.g. from "Content-Disposition" HTTP header). */ /** Name of hint with a filename for the resource(e.g. from "Content-Disposition" HTTP header). */
public static String FILENAME_HINT = ResourceDecoder.class.getName() + ".filename"; public static final String FILENAME_HINT = ResourceDecoder.class.getName() + ".filename";
public ResourceDecoder() { public ResourceDecoder() {

View File

@ -897,9 +897,9 @@ public class PathMatchingResourcePatternResolver implements ResourcePatternResol
} }
/** /**
* If it's a "file:" URI, use FileSystemResource to avoid duplicates * If it's a "file:" URI, use FileSystemResource to avoid duplicates
* for the same path discovered via class-path scanning. * for the same path discovered via class-path scanning.
*/ */
private Resource convertModuleSystemURI(URI uri) { private Resource convertModuleSystemURI(URI uri) {
return (ResourceUtils.URL_PROTOCOL_FILE.equals(uri.getScheme()) ? return (ResourceUtils.URL_PROTOCOL_FILE.equals(uri.getScheme()) ?
new FileSystemResource(uri.getPath()) : UrlResource.from(uri)); new FileSystemResource(uri.getPath()) : UrlResource.from(uri));

View File

@ -17,7 +17,7 @@
package org.springframework.aot.hint package org.springframework.aot.hint
/** /**
* Extension for [TypeHint.Builder.onReachableType] providing a `onReachableType<Foo>())` * Extension for [TypeHint.Builder.onReachableType] providing a `onReachableType<Foo>()`
* variant. * variant.
* *
* @author Sebastien Deleuze * @author Sebastien Deleuze

View File

@ -32,7 +32,7 @@ class ResourceHintsExtensionsTests {
private val resourceHints = mockk<ResourceHints>() private val resourceHints = mockk<ResourceHints>()
@Test @Test
fun `registerType extension with MemberCategory`() { fun `registerType extension`() {
every { resourceHints.registerType(any<Class<String>>()) } returns resourceHints every { resourceHints.registerType(any<Class<String>>()) } returns resourceHints
resourceHints.registerType<String>() resourceHints.registerType<String>()
verify { resourceHints.registerType(String::class.java) } verify { resourceHints.registerType(String::class.java) }

View File

@ -25,7 +25,6 @@ import io.r2dbc.spi.IsolationLevel;
import io.r2dbc.spi.R2dbcBadGrammarException; import io.r2dbc.spi.R2dbcBadGrammarException;
import io.r2dbc.spi.R2dbcTimeoutException; import io.r2dbc.spi.R2dbcTimeoutException;
import io.r2dbc.spi.Statement; import io.r2dbc.spi.Statement;
import org.assertj.core.api.Assertions;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor; import org.mockito.ArgumentCaptor;
@ -345,7 +344,7 @@ class R2dbcTransactionManagerUnitTests {
.doOnNext(connection -> { .doOnNext(connection -> {
throw new IllegalStateException("Intentional error to trigger rollback"); throw new IllegalStateException("Intentional error to trigger rollback");
}).then()).as(StepVerifier::create) }).then()).as(StepVerifier::create)
.verifyErrorSatisfies(e -> Assertions.assertThat(e) .verifyErrorSatisfies(e -> assertThat(e)
.isInstanceOf(BadSqlGrammarException.class) .isInstanceOf(BadSqlGrammarException.class)
.hasCause(new R2dbcBadGrammarException("Rollback should fail")) .hasCause(new R2dbcBadGrammarException("Rollback should fail"))
); );

View File

@ -68,7 +68,7 @@ public final class MockMvcWebConnection implements WebConnection {
private WebClient webClient; private WebClient webClient;
private static int MAX_FORWARDS = 100; private static final int MAX_FORWARDS = 100;
/** /**
@ -143,7 +143,7 @@ public final class MockMvcWebConnection implements WebConnection {
forwards += 1; forwards += 1;
} }
if (forwards == MAX_FORWARDS) { if (forwards == MAX_FORWARDS) {
throw new IllegalStateException("Forwarded more than " + forwards + " times in a row, potential infinite forward loop"); throw new IllegalStateException("Forwarded " + forwards + " times in a row, potential infinite forward loop");
} }
storeCookies(webRequest, httpServletResponse.getCookies()); storeCookies(webRequest, httpServletResponse.getCookies());

View File

@ -85,7 +85,7 @@ public class MockMvcWebConnectionTests {
public void infiniteForward() { public void infiniteForward() {
this.webClient.setWebConnection(new MockMvcWebConnection(this.mockMvc, this.webClient, "")); this.webClient.setWebConnection(new MockMvcWebConnection(this.mockMvc, this.webClient, ""));
assertThatIllegalStateException().isThrownBy(() -> this.webClient.getPage("http://localhost/infiniteForward")) assertThatIllegalStateException().isThrownBy(() -> this.webClient.getPage("http://localhost/infiniteForward"))
.withMessage("Forwarded more than 100 times in a row, potential infinite forward loop"); .withMessage("Forwarded 100 times in a row, potential infinite forward loop");
} }
@Test @Test

View File

@ -99,7 +99,7 @@ import org.springframework.util.xml.StaxUtils;
*/ */
public class Jackson2ObjectMapperBuilder { public class Jackson2ObjectMapperBuilder {
private static boolean jackson2XmlPresent = ClassUtils.isPresent( private static final boolean jackson2XmlPresent = ClassUtils.isPresent(
"com.fasterxml.jackson.dataformat.xml.XmlMapper", Jackson2ObjectMapperBuilder.class.getClassLoader()); "com.fasterxml.jackson.dataformat.xml.XmlMapper", Jackson2ObjectMapperBuilder.class.getClassLoader());

View File

@ -17,7 +17,6 @@
package org.springframework.http; package org.springframework.http;
import java.net.URI; import java.net.URI;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
@ -46,11 +45,8 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getHeaders().containsKey(headerName)).isTrue(); assertThat(responseEntity.getHeaders().containsKey(headerName)).isTrue();
List<String> list = responseEntity.getHeaders().get(headerName); assertThat(responseEntity.getHeaders().get(headerName)).containsExactly(headerValue1, headerValue2);
assertThat(list).hasSize(2); assertThat(responseEntity.getBody()).isEqualTo(entity);
assertThat(list.get(0)).isEqualTo(headerValue1);
assertThat(list.get(1)).isEqualTo(headerValue2);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity);
} }
@Test @Test
@ -69,7 +65,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
@Test @Test
@ -79,7 +75,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
@Test @Test
@ -98,7 +94,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
@Test @Test
@ -270,7 +266,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isFalse(); assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isFalse();
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
@Test @Test
@ -286,7 +282,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isTrue(); assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isTrue();
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
String cacheControlHeader = responseEntity.getHeaders().getCacheControl(); String cacheControlHeader = responseEntity.getHeaders().getCacheControl();
assertThat(cacheControlHeader).isEqualTo( assertThat(cacheControlHeader).isEqualTo(
"max-age=3600, must-revalidate, private, proxy-revalidate, s-maxage=1800"); "max-age=3600, must-revalidate, private, proxy-revalidate, s-maxage=1800");
@ -304,7 +300,7 @@ class ResponseEntityTests {
assertThat(responseEntity).isNotNull(); assertThat(responseEntity).isNotNull();
assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isTrue(); assertThat(responseEntity.getHeaders().containsKey(HttpHeaders.CACHE_CONTROL)).isTrue();
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
String cacheControlHeader = responseEntity.getHeaders().getCacheControl(); String cacheControlHeader = responseEntity.getHeaders().getCacheControl();
assertThat(cacheControlHeader).isEqualTo("no-store"); assertThat(cacheControlHeader).isEqualTo("no-store");
@ -316,7 +312,7 @@ class ResponseEntityTests {
ResponseEntity<Integer> responseEntity = ResponseEntity.status(200).body(entity); ResponseEntity<Integer> responseEntity = ResponseEntity.status(200).body(entity);
assertThat(responseEntity.getStatusCode().value()).isEqualTo(200); assertThat(responseEntity.getStatusCode().value()).isEqualTo(200);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
@Test @Test
@ -326,7 +322,7 @@ class ResponseEntityTests {
ResponseEntity<Integer> responseEntity = ResponseEntity.status(299).body(entity); ResponseEntity<Integer> responseEntity = ResponseEntity.status(299).body(entity);
assertThat(responseEntity.getStatusCodeValue()).isEqualTo(299); assertThat(responseEntity.getStatusCodeValue()).isEqualTo(299);
assertThat((int) responseEntity.getBody()).isEqualTo((int) entity); assertThat(responseEntity.getBody()).isEqualTo(entity);
} }
} }

View File

@ -16,7 +16,8 @@
package org.springframework.web.method.annotation package org.springframework.web.method.annotation
import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.assertThat
import org.assertj.core.api.Assertions.assertThatThrownBy
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.mockito.ArgumentMatchers.* import org.mockito.ArgumentMatchers.*
@ -61,7 +62,7 @@ class ModelAttributeMethodProcessorKotlinTests {
val factory = Mockito.mock<WebDataBinderFactory>() val factory = Mockito.mock<WebDataBinderFactory>()
BDDMockito.given(factory.createBinder(any(), any(), eq("param"))) BDDMockito.given(factory.createBinder(any(), any(), eq("param")))
.willAnswer { WebRequestDataBinder(it.getArgument(1)) } .willAnswer { WebRequestDataBinder(it.getArgument(1)) }
Assertions.assertThat(processor.resolveArgument(this.param, container, requestWithParam, factory)).isEqualTo(Param("b")) assertThat(processor.resolveArgument(this.param, container, requestWithParam, factory)).isEqualTo(Param("b"))
} }
@Test @Test
@ -71,7 +72,7 @@ class ModelAttributeMethodProcessorKotlinTests {
val factory = Mockito.mock<WebDataBinderFactory>() val factory = Mockito.mock<WebDataBinderFactory>()
BDDMockito.given(factory.createBinder(any(), any(), eq("param"))) BDDMockito.given(factory.createBinder(any(), any(), eq("param")))
.willAnswer { WebRequestDataBinder(it.getArgument(1)) } .willAnswer { WebRequestDataBinder(it.getArgument(1)) }
Assertions.assertThatThrownBy { assertThatThrownBy {
processor.resolveArgument(this.param, container, requestWithParam, factory) processor.resolveArgument(this.param, container, requestWithParam, factory)
}.isInstanceOf(MethodArgumentNotValidException::class.java) }.isInstanceOf(MethodArgumentNotValidException::class.java)
.hasMessageContaining("parameter a") .hasMessageContaining("parameter a")

View File

@ -45,6 +45,8 @@ public class DefaultClientRequestObservationConvention implements ClientRequestO
private static final KeyValue URI_NONE = KeyValue.of(LowCardinalityKeyNames.URI, KeyValue.NONE_VALUE); private static final KeyValue URI_NONE = KeyValue.of(LowCardinalityKeyNames.URI, KeyValue.NONE_VALUE);
private static final KeyValue URI_ROOT = KeyValue.of(LowCardinalityKeyNames.URI, ROOT_PATH);
private static final KeyValue METHOD_NONE = KeyValue.of(LowCardinalityKeyNames.METHOD, KeyValue.NONE_VALUE); private static final KeyValue METHOD_NONE = KeyValue.of(LowCardinalityKeyNames.METHOD, KeyValue.NONE_VALUE);
private static final KeyValue STATUS_IO_ERROR = KeyValue.of(LowCardinalityKeyNames.STATUS, "IO_ERROR"); private static final KeyValue STATUS_IO_ERROR = KeyValue.of(LowCardinalityKeyNames.STATUS, "IO_ERROR");
@ -101,7 +103,7 @@ public class DefaultClientRequestObservationConvention implements ClientRequestO
} }
ClientRequest request = context.getRequest(); ClientRequest request = context.getRequest();
if (request != null && ROOT_PATH.equals(request.url().getPath())) { if (request != null && ROOT_PATH.equals(request.url().getPath())) {
return KeyValue.of(LowCardinalityKeyNames.URI, ROOT_PATH); return URI_ROOT;
} }
return URI_NONE; return URI_NONE;
} }

View File

@ -18,7 +18,7 @@ package org.springframework.web.reactive.function.client.support
import kotlinx.coroutines.runBlocking import kotlinx.coroutines.runBlocking
import okhttp3.mockwebserver.MockResponse import okhttp3.mockwebserver.MockResponse
import okhttp3.mockwebserver.MockWebServer import okhttp3.mockwebserver.MockWebServer
import org.assertj.core.api.Assertions import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.AfterEach
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
@ -66,7 +66,7 @@ class KotlinWebClientHttpServiceProxyTests {
} }
runBlocking { runBlocking {
val greeting = initHttpService().getGreetingSuspending() val greeting = initHttpService().getGreetingSuspending()
Assertions.assertThat(greeting).isEqualTo("Hello Spring!") assertThat(greeting).isEqualTo("Hello Spring!")
} }
} }
@ -93,7 +93,7 @@ class KotlinWebClientHttpServiceProxyTests {
).setBody("Hello Spring!") ).setBody("Hello Spring!")
} }
val greeting = initHttpService().getGreetingBlocking() val greeting = initHttpService().getGreetingBlocking()
Assertions.assertThat(greeting).isEqualTo("Hello Spring!") assertThat(greeting).isEqualTo("Hello Spring!")
} }
@Test @Test
@ -115,8 +115,8 @@ class KotlinWebClientHttpServiceProxyTests {
val service = initHttpService(webClient) val service = initHttpService(webClient)
runBlocking { runBlocking {
val greeting = service.getGreetingSuspendingWithAttribute("myAttributeValue") val greeting = service.getGreetingSuspendingWithAttribute("myAttributeValue")
Assertions.assertThat(greeting).isEqualTo("Hello Spring!") assertThat(greeting).isEqualTo("Hello Spring!")
Assertions.assertThat(attributes).containsEntry("myAttribute", "myAttributeValue") assertThat(attributes).containsEntry("myAttribute", "myAttributeValue")
} }
} }

View File

@ -177,7 +177,7 @@ class RequestMappingInfoHandlerMappingTests {
} }
@PathPatternsParameterizedTest // gh-28062 @PathPatternsParameterizedTest // gh-28062
void getHandlerMethodTypeNotSupportedWithParseError(TestRequestMappingInfoHandlerMapping mapping) { void getHandlerMediaTypeNotSupportedWithParseError(TestRequestMappingInfoHandlerMapping mapping) {
MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/person/1"); MockHttpServletRequest request = new MockHttpServletRequest("PUT", "/person/1");
request.setContentType("This string"); request.setContentType("This string");
assertThatExceptionOfType(HttpMediaTypeNotSupportedException.class) assertThatExceptionOfType(HttpMediaTypeNotSupportedException.class)