diff --git a/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java b/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java index 8915044d90b..9e2a6e53183 100644 --- a/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java +++ b/spring-core/src/test/java/org/springframework/core/SimpleAliasRegistryTests.java @@ -50,6 +50,7 @@ class SimpleAliasRegistryTests { private static final String ALIAS2 = "alias2"; private static final String ALIAS3 = "alias3"; // TODO Determine if we can make SimpleAliasRegistry.resolveAliases() reliable. + // See https://github.com/spring-projects/spring-framework/issues/32024. // When ALIAS4 is changed to "test", various tests fail due to the iteration // order of the entries in the aliasMap in SimpleAliasRegistry. private static final String ALIAS4 = "alias4"; @@ -252,6 +253,7 @@ class SimpleAliasRegistryTests { } // TODO Remove this test once we have implemented reliable processing in SimpleAliasRegistry.resolveAliases(). + // See https://github.com/spring-projects/spring-framework/issues/32024. // This method effectively duplicates the @ParameterizedTest version below, // with aliasX hard coded to ALIAS4; however, this method also hard codes // a different outcome that passes based on ConcurrentHashMap iteration order! @@ -297,7 +299,7 @@ class SimpleAliasRegistryTests { } @Disabled("Fails for some values unless alias registration order is honored") - @ParameterizedTest + @ParameterizedTest // gh-32024 @ValueSource(strings = {"alias4", "test", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}) void resolveAliasesWithComplexPlaceholderReplacementAndNameSwitching(String aliasX) { StringValueResolver valueResolver = new StubStringValueResolver(Map.of( diff --git a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistryTests.java b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistryTests.java index e7544f6a838..9af849115fa 100644 --- a/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistryTests.java +++ b/spring-webmvc/src/test/java/org/springframework/web/servlet/config/annotation/ResourceHandlerRegistryTests.java @@ -16,16 +16,13 @@ package org.springframework.web.servlet.config.annotation; -import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.Map; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.cache.concurrent.ConcurrentMapCache; -import org.springframework.core.io.Resource; import org.springframework.http.CacheControl; import org.springframework.web.accept.ContentNegotiationManager; import org.springframework.web.context.support.GenericWebApplicationContext; @@ -137,19 +134,15 @@ class ResourceHandlerRegistryTests { this.registration.resourceChain(true).addResolver(mockResolver).addTransformer(mockTransformer); ResourceHttpRequestHandler handler = getHandler("/resources/**"); - List resolvers = handler.getResourceResolvers(); - assertThat(resolvers).hasSize(4); - assertThat(resolvers).element(0).isInstanceOf(CachingResourceResolver.class); - CachingResourceResolver cachingResolver = (CachingResourceResolver) resolvers.get(0); - assertThat(cachingResolver.getCache()).isInstanceOf(ConcurrentMapCache.class); - assertThat(resolvers).element(1).isEqualTo(mockResolver); - assertThat(resolvers).element(2).isInstanceOf(WebJarsResourceResolver.class); - assertThat(resolvers).element(3).isInstanceOf(PathResourceResolver.class); - - List transformers = handler.getResourceTransformers(); - assertThat(transformers).hasSize(2); - assertThat(transformers).element(0).isInstanceOf(CachingResourceTransformer.class); - assertThat(transformers).element(1).isEqualTo(mockTransformer); + assertThat(handler.getResourceResolvers()).satisfiesExactly( + zero -> assertThat(zero).isInstanceOfSatisfying(CachingResourceResolver.class, + cachingResolver -> assertThat(cachingResolver.getCache()).isInstanceOf(ConcurrentMapCache.class)), + one -> assertThat(one).isEqualTo(mockResolver), + two -> assertThat(two).isInstanceOf(WebJarsResourceResolver.class), + three -> assertThat(three).isInstanceOf(PathResourceResolver.class)); + assertThat(handler.getResourceTransformers()).satisfiesExactly( + zero -> assertThat(zero).isInstanceOf(CachingResourceTransformer.class), + one -> assertThat(one).isEqualTo(mockTransformer)); } @Test @@ -157,13 +150,9 @@ class ResourceHandlerRegistryTests { this.registration.resourceChain(false); ResourceHttpRequestHandler handler = getHandler("/resources/**"); - List resolvers = handler.getResourceResolvers(); - assertThat(resolvers).hasSize(2); - assertThat(resolvers).element(0).isInstanceOf(WebJarsResourceResolver.class); - assertThat(resolvers).element(1).isInstanceOf(PathResourceResolver.class); - - List transformers = handler.getResourceTransformers(); - assertThat(transformers).isEmpty(); + assertThat(handler.getResourceResolvers()).hasExactlyElementsOfTypes( + WebJarsResourceResolver.class, PathResourceResolver.class); + assertThat(handler.getResourceTransformers()).isEmpty(); } @Test @@ -175,17 +164,13 @@ class ResourceHandlerRegistryTests { this.registration.resourceChain(true).addResolver(versionResolver); ResourceHttpRequestHandler handler = getHandler("/resources/**"); - List resolvers = handler.getResourceResolvers(); - assertThat(resolvers).hasSize(4); - assertThat(resolvers).element(0).isInstanceOf(CachingResourceResolver.class); - assertThat(resolvers).element(1).isSameAs(versionResolver); - assertThat(resolvers).element(2).isInstanceOf(WebJarsResourceResolver.class); - assertThat(resolvers).element(3).isInstanceOf(PathResourceResolver.class); - - List transformers = handler.getResourceTransformers(); - assertThat(transformers).hasSize(2); - assertThat(transformers).element(0).isInstanceOf(CachingResourceTransformer.class); - assertThat(transformers).element(1).isInstanceOf(CssLinkResourceTransformer.class); + assertThat(handler.getResourceResolvers()).satisfiesExactly( + zero -> assertThat(zero).isInstanceOf(CachingResourceResolver.class), + one -> assertThat(one).isSameAs(versionResolver), + two -> assertThat(two).isInstanceOf(WebJarsResourceResolver.class), + three -> assertThat(three).isInstanceOf(PathResourceResolver.class)); + assertThat(handler.getResourceTransformers()).hasExactlyElementsOfTypes( + CachingResourceTransformer.class, CssLinkResourceTransformer.class); } @Test @@ -224,10 +209,8 @@ class ResourceHandlerRegistryTests { assertThat(handler.getUrlPathHelper()).isNotNull(); List resolvers = handler.getResourceResolvers(); - PathResourceResolver resolver = (PathResourceResolver) resolvers.get(resolvers.size()-1); - Map locationCharsets = resolver.getLocationCharsets(); - assertThat(locationCharsets).hasSize(1); - assertThat(locationCharsets.values()).element(0).isEqualTo(StandardCharsets.ISO_8859_1); + PathResourceResolver resolver = (PathResourceResolver) resolvers.get(resolvers.size() - 1); + assertThat(resolver.getLocationCharsets()).hasSize(1).containsValue(StandardCharsets.ISO_8859_1); } @Test