From 4dfb60c9a326572250639bf95a66a7c424ff900f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edd=C3=BA=20Mel=C3=A9ndez?= Date: Thu, 22 Jun 2023 20:28:19 -0600 Subject: [PATCH 1/2] Support ServiceConnection beans in slice tests Previously, to use `@ServiceConnection` on a `@Bean` method in a sliced test required ServiceConnectionAutoConfiguration to be imported using `@ImportAutoConfiguration`. This commit removes the need for this import by registering ServiceConnectionAutoConfiguration in specific slice test annotations. See gh-36037 --- ...ServiceConnectionBeanIntegrationTests.java | 90 +++++++++++++++++++ ...ServiceConnectionBeanIntegrationTests.java | 79 ++++++++++++++++ ...ServiceConnectionBeanIntegrationTests.java | 81 +++++++++++++++++ ...ServiceConnectionBeanIntegrationTests.java | 74 +++++++++++++++ ...ServiceConnectionBeanIntegrationTests.java | 79 ++++++++++++++++ ...ServiceConnectionBeanIntegrationTests.java | 80 +++++++++++++++++ ...ssandra.AutoConfigureDataCassandra.imports | 2 + ...uchbase.AutoConfigureDataCouchbase.imports | 2 + ...rch.AutoConfigureDataElasticsearch.imports | 2 + ...re.data.jdbc.AutoConfigureDataJdbc.imports | 2 + ....data.mongo.AutoConfigureDataMongo.imports | 2 + ....data.neo4j.AutoConfigureDataNeo4j.imports | 2 + ....data.r2dbc.AutoConfigureDataR2dbc.imports | 2 + ....data.redis.AutoConfigureDataRedis.imports | 2 + ...toconfigure.jdbc.AutoConfigureJdbc.imports | 2 + ...ure.jdbc.AutoConfigureTestDatabase.imports | 2 + ...toconfigure.jooq.AutoConfigureJooq.imports | 2 + ...igure.orm.jpa.AutoConfigureDataJpa.imports | 2 + 18 files changed, 507 insertions(+) create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports create mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..95cc0b47c3 --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,90 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.cassandra; + +import java.util.UUID; + +import com.datastax.oss.driver.api.core.CqlSession; +import com.datastax.oss.driver.api.core.CqlSessionBuilder; +import org.junit.jupiter.api.Test; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.CassandraContainer; +import org.springframework.context.annotation.Bean; +import org.springframework.data.cassandra.core.CassandraTemplate; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration test for {@link DataCassandraTest @DataCassandraTest}. + * + * @author Artsiom Yudovin + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + * @author Eddú Meléndez + */ +@DataCassandraTest(properties = { "spring.cassandra.schema-action=create-if-not-exists", + "spring.cassandra.connection.connect-timeout=60s", "spring.cassandra.connection.init-query-timeout=60s", + "spring.cassandra.request.timeout=60s" }) +@Testcontainers(disabledWithoutDocker = true) +class DataCassandraTestWithServiceConnectionBeanIntegrationTests { + + @Autowired + private CassandraTemplate cassandraTemplate; + + @Autowired + private ExampleRepository exampleRepository; + + @Test + void testRepository() { + ExampleEntity entity = new ExampleEntity(); + entity.setDescription("Look, new @DataCassandraTest!"); + String id = UUID.randomUUID().toString(); + entity.setId(id); + ExampleEntity savedEntity = this.exampleRepository.save(entity); + ExampleEntity getEntity = this.cassandraTemplate.selectOneById(id, ExampleEntity.class); + assertThat(getEntity).isNotNull(); + assertThat(getEntity.getId()).isNotNull(); + assertThat(getEntity.getId()).isEqualTo(savedEntity.getId()); + this.exampleRepository.deleteAll(); + } + + @TestConfiguration(proxyBeanMethods = false) + static class KeyspaceTestConfiguration { + + @Bean + @ServiceConnection + CassandraContainer cassandra() { + return new CassandraContainer(); + } + + @Bean + CqlSession cqlSession(CqlSessionBuilder cqlSessionBuilder) { + try (CqlSession session = cqlSessionBuilder.build()) { + session.execute("CREATE KEYSPACE IF NOT EXISTS boot_test" + + " WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };"); + } + return cqlSessionBuilder.withKeyspace("boot_test").build(); + } + + } + +} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..94139ac453 --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,79 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.couchbase; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.testcontainers.couchbase.BucketDefinition; +import org.testcontainers.couchbase.CouchbaseContainer; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.context.annotation.Bean; +import org.springframework.data.couchbase.core.CouchbaseTemplate; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration test for {@link DataCouchbaseTest @DataCouchbaseTest}. + * + * @author Eddú Meléndez + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + */ +@DataCouchbaseTest( + properties = { "spring.couchbase.env.timeouts.connect=2m", "spring.data.couchbase.bucket-name=cbbucket" }) +@Testcontainers(disabledWithoutDocker = true) +class DataCouchbaseTestWithServiceConnectionBeanIntegrationTests { + + private static final String BUCKET_NAME = "cbbucket"; + + @Autowired + private CouchbaseTemplate couchbaseTemplate; + + @Autowired + private ExampleRepository exampleRepository; + + @Test + void testRepository() { + ExampleDocument document = new ExampleDocument(); + document.setText("Look, new @DataCouchbaseTest!"); + document = this.exampleRepository.save(document); + assertThat(document.getId()).isNotNull(); + assertThat(this.couchbaseTemplate.getBucketName()).isEqualTo(BUCKET_NAME); + this.exampleRepository.deleteAll(); + } + + @TestConfiguration(proxyBeanMethods = false) + static class ContainerConfig { + + @Bean + @ServiceConnection + CouchbaseContainer couchbase() { + return new CouchbaseContainer(DockerImageNames.couchbase()).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10)) + .withBucket(new BucketDefinition(BUCKET_NAME)); + } + + } + +} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..0d36a9a076 --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,81 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.elasticsearch; + +import java.time.Duration; +import java.util.UUID; + +import org.junit.jupiter.api.Test; +import org.testcontainers.elasticsearch.ElasticsearchContainer; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.context.annotation.Bean; +import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Sample test for {@link DataElasticsearchTest @DataElasticsearchTest} + * + * @author Eddú Meléndez + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + */ +@DataElasticsearchTest +@Testcontainers(disabledWithoutDocker = true) +class DataElasticsearchTestWithServiceConnectionBeanIntegrationTests { + + @Autowired + private ElasticsearchTemplate elasticsearchTemplate; + + @Autowired + private ExampleRepository exampleRepository; + + @Test + void testRepository() { + ExampleDocument document = new ExampleDocument(); + document.setText("Look, new @DataElasticsearchTest!"); + String id = UUID.randomUUID().toString(); + document.setId(id); + ExampleDocument savedDocument = this.exampleRepository.save(document); + ExampleDocument getDocument = this.elasticsearchTemplate.get(id, ExampleDocument.class); + assertThat(getDocument).isNotNull(); + assertThat(getDocument.getId()).isNotNull(); + assertThat(getDocument.getId()).isEqualTo(savedDocument.getId()); + this.exampleRepository.deleteAll(); + } + + @TestConfiguration(proxyBeanMethods = false) + static class ContainerConfig { + + @Bean + @ServiceConnection + ElasticsearchContainer elasticsearch() { + return new ElasticsearchContainer(DockerImageNames.elasticsearch()) + .withEnv("ES_JAVA_OPTS", "-Xms32m -Xmx512m") + .withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10)); + } + + } + +} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..3b19ac253a --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,74 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.mongo; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.MongoDBContainer; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.context.annotation.Bean; +import org.springframework.data.mongodb.core.MongoTemplate; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Sample test for {@link DataMongoTest @DataMongoTest} + * + * @author Michael Simons + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + * @author Eddú Meléndez + */ +@DataMongoTest +@Testcontainers(disabledWithoutDocker = true) +class DataMongoTestWithServiceConnectionBeanIntegrationTests { + + @Autowired + private MongoTemplate mongoTemplate; + + @Autowired + private ExampleRepository exampleRepository; + + @Test + void testRepository() { + ExampleDocument exampleDocument = new ExampleDocument(); + exampleDocument.setText("Look, new @DataMongoTest!"); + exampleDocument = this.exampleRepository.save(exampleDocument); + assertThat(exampleDocument.getId()).isNotNull(); + assertThat(this.mongoTemplate.collectionExists("exampleDocuments")).isTrue(); + } + + @TestConfiguration(proxyBeanMethods = false) + static class ContainerConfig { + + @Bean + @ServiceConnection + MongoDBContainer mongoDB() { + return new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(5)); + } + + } + +} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..ba19403758 --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,79 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.neo4j; + +import java.time.Duration; + +import org.junit.jupiter.api.Test; +import org.testcontainers.containers.Neo4jContainer; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.DockerImageNames; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.data.neo4j.core.Neo4jTemplate; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration test for {@link DataNeo4jTest @DataNeo4jTest}. + * + * @author Eddú Meléndez + * @author Stephane Nicoll + * @author Michael Simons + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + */ +@DataNeo4jTest +@Testcontainers(disabledWithoutDocker = true) +class DataNeo4jTestWithServiceConnectionBeanIntegrationTests { + + @Autowired + private Neo4jTemplate neo4jTemplate; + + @Autowired + private ExampleRepository exampleRepository; + + @Autowired + private ApplicationContext applicationContext; + + @Test + void testRepository() { + ExampleGraph exampleGraph = new ExampleGraph("Look, new @DataNeo4jTest!"); + assertThat(exampleGraph.getId()).isNull(); + ExampleGraph savedGraph = this.exampleRepository.save(exampleGraph); + assertThat(savedGraph.getId()).isNotNull(); + assertThat(this.neo4jTemplate.count(ExampleGraph.class)).isOne(); + } + + @TestConfiguration + static class ContainerConfig { + + @Bean + @ServiceConnection + Neo4jContainer neo4j() { + return new Neo4jContainer<>(DockerImageNames.neo4j()).withStartupAttempts(5) + .withStartupTimeout(Duration.ofMinutes(10)); + } + + } + +} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java new file mode 100644 index 0000000000..9bce650387 --- /dev/null +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java @@ -0,0 +1,80 @@ +/* + * Copyright 2012-2023 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.boot.test.autoconfigure.data.redis; + +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; + +import org.junit.jupiter.api.Test; +import org.testcontainers.junit.jupiter.Testcontainers; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.TestConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testsupport.testcontainers.RedisContainer; +import org.springframework.context.annotation.Bean; +import org.springframework.data.redis.core.RedisOperations; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Integration test for {@link DataRedisTest @DataRedisTest}. + * + * @author Jayaram Pradhan + * @author Moritz Halbritter + * @author Andy Wilkinson + * @author Phillip Webb + * @author Eddú Meléndez + */ +@Testcontainers(disabledWithoutDocker = true) +@DataRedisTest +class DataRedisTestWithServiceConnectionBeanIntegrationTests { + + private static final Charset CHARSET = StandardCharsets.UTF_8; + + @Autowired + private RedisOperations operations; + + @Autowired + private ExampleRepository exampleRepository; + + @Test + void testRepository() { + PersonHash personHash = new PersonHash(); + personHash.setDescription("Look, new @DataRedisTest!"); + assertThat(personHash.getId()).isNull(); + PersonHash savedEntity = this.exampleRepository.save(personHash); + assertThat(savedEntity.getId()).isNotNull(); + assertThat(this.operations + .execute((org.springframework.data.redis.connection.RedisConnection connection) -> connection.keyCommands() + .exists(("persons:" + savedEntity.getId()).getBytes(CHARSET)))) + .isTrue(); + this.exampleRepository.deleteAll(); + } + + @TestConfiguration(proxyBeanMethods = false) + static class ContainerConfig { + + @Bean + @ServiceConnection(name = "redis") + RedisContainer redis() { + return new RedisContainer(); + } + + } + +} diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports new file mode 100644 index 0000000000..c69a4ef992 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataCassandra auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports new file mode 100644 index 0000000000..cd54f01baa --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataCouchbase auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports new file mode 100644 index 0000000000..3ac366cc6f --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataElasticsearch auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports new file mode 100644 index 0000000000..db9bad5b30 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataJdbc auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports new file mode 100644 index 0000000000..c865283458 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataMongo auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports new file mode 100644 index 0000000000..e09426c623 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataNeo4j auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports new file mode 100644 index 0000000000..fe6633b44f --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataR2dbc auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports new file mode 100644 index 0000000000..b86166da88 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataRedis auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports new file mode 100644 index 0000000000..3a4619215c --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports @@ -0,0 +1,2 @@ +# AutoConfigureJdbc auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports new file mode 100644 index 0000000000..ad021386df --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports @@ -0,0 +1,2 @@ +# AutoConfigureTestDatabase auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports new file mode 100644 index 0000000000..574484f893 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports @@ -0,0 +1,2 @@ +# AutoConfigureJooq auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports new file mode 100644 index 0000000000..1a3c071f57 --- /dev/null +++ b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports @@ -0,0 +1,2 @@ +# AutoConfigureDataJpa auto-configuration imports +org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file From 0d646d7c2623f96e42a5f9a3a157411560aed492 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 1 Aug 2023 17:47:39 +0100 Subject: [PATCH 2/2] Polish "Support ServiceConnection beans in slice tests" See gh-36037 --- .../ImportAutoConfiguration.java | 6 +- ...ImportAutoConfigurationImportSelector.java | 22 ++++- ...tAutoConfigurationImportSelectorTests.java | 31 +++++++ ...mportSelectorTests$FromImportsFile.imports | 2 + ...sFileIgnoresMissingOptionalClasses.imports | 3 + ...ssandra.AutoConfigureDataCassandra.imports | 1 + ...uchbase.AutoConfigureDataCouchbase.imports | 1 + ...rch.AutoConfigureDataElasticsearch.imports | 1 + ...re.data.jdbc.AutoConfigureDataJdbc.imports | 1 + ....data.mongo.AutoConfigureDataMongo.imports | 1 + ....data.neo4j.AutoConfigureDataNeo4j.imports | 3 +- ....data.r2dbc.AutoConfigureDataR2dbc.imports | 3 +- ....data.redis.AutoConfigureDataRedis.imports | 1 + ...toconfigure.jdbc.AutoConfigureJdbc.imports | 3 +- ...ure.jdbc.AutoConfigureTestDatabase.imports | 3 +- ...toconfigure.jooq.AutoConfigureJooq.imports | 3 +- ...igure.orm.jpa.AutoConfigureDataJpa.imports | 3 +- .../AutoConfigurationImportedCondition.java | 3 +- .../DataCassandraTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 90 ------------------- .../DataCouchbaseTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 79 ---------------- ...DataElasticsearchTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 81 ----------------- .../jdbc/DataJdbcTestIntegrationTests.java | 6 ++ .../mongo/DataMongoTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 74 --------------- .../neo4j/DataNeo4jTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 79 ---------------- .../r2dbc/DataR2dbcTestIntegrationTests.java | 7 ++ .../redis/DataRedisTestIntegrationTests.java | 7 ++ ...ServiceConnectionBeanIntegrationTests.java | 80 ----------------- .../jdbc/JdbcTestIntegrationTests.java | 6 ++ .../jooq/JooqTestIntegrationTests.java | 6 ++ .../orm/jpa/DataJpaTestIntegrationTests.java | 6 ++ ...ssandra.AutoConfigureDataCassandra.imports | 2 - ...uchbase.AutoConfigureDataCouchbase.imports | 2 - ...rch.AutoConfigureDataElasticsearch.imports | 2 - ...re.data.jdbc.AutoConfigureDataJdbc.imports | 2 - ....data.mongo.AutoConfigureDataMongo.imports | 2 - ....data.neo4j.AutoConfigureDataNeo4j.imports | 2 - ....data.r2dbc.AutoConfigureDataR2dbc.imports | 2 - ....data.redis.AutoConfigureDataRedis.imports | 2 - ...toconfigure.jdbc.AutoConfigureJdbc.imports | 2 - ...ure.jdbc.AutoConfigureTestDatabase.imports | 2 - ...toconfigure.jooq.AutoConfigureJooq.imports | 2 - ...igure.orm.jpa.AutoConfigureDataJpa.imports | 2 - 47 files changed, 153 insertions(+), 518 deletions(-) create mode 100644 spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFile.imports create mode 100644 spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFileIgnoresMissingOptionalClasses.imports delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/cassandra/DataCassandraTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/couchbase/DataCouchbaseTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/elasticsearch/DataElasticsearchTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports delete mode 100644 spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfiguration.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfiguration.java index b31722ca17..ce5fdfd3ce 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfiguration.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfiguration.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,7 +61,9 @@ public @interface ImportAutoConfiguration { /** * The auto-configuration classes that should be imported. When empty, the classes are * specified using a file in {@code META-INF/spring} where the file name is the - * fully-qualified name of the annotated class, suffixed with '.imports'. + * fully-qualified name of the annotated class, suffixed with {@code .imports}. An + * entry in the file may be prefixed with {@code optional:} to indicate that the + * imported class should be ignored if it is not on the classpath. * @return the classes to import */ @AliasFor("value") diff --git a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelector.java b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelector.java index bd6eb6b301..9d23cc5116 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelector.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelector.java @@ -1,5 +1,5 @@ /* - * Copyright 2012-2022 the original author or authors. + * Copyright 2012-2023 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,6 +25,7 @@ import java.util.HashSet; import java.util.LinkedHashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import org.springframework.boot.context.annotation.DeterminableImports; @@ -32,6 +33,7 @@ import org.springframework.boot.context.annotation.ImportCandidates; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.core.annotation.AnnotationAttributes; import org.springframework.core.annotation.AnnotationUtils; +import org.springframework.core.io.ClassPathResource; import org.springframework.core.type.AnnotationMetadata; import org.springframework.util.ClassUtils; import org.springframework.util.LinkedMultiValueMap; @@ -49,6 +51,8 @@ import org.springframework.util.ObjectUtils; */ class ImportAutoConfigurationImportSelector extends AutoConfigurationImportSelector implements DeterminableImports { + private static final String OPTIONAL_PREFIX = "optional:"; + private static final Set ANNOTATION_NAMES; static { @@ -92,13 +96,27 @@ class ImportAutoConfigurationImportSelector extends AutoConfigurationImportSelec if (classes.length > 0) { return Arrays.asList(classes); } - return loadFactoryNames(source); + Collection factoryNames = loadFactoryNames(source); + return factoryNames.stream().map((name) -> { + if (name.startsWith(OPTIONAL_PREFIX)) { + name = name.substring(OPTIONAL_PREFIX.length()); + if (!present(name)) { + return null; + } + } + return name; + }).filter(Objects::nonNull).toList(); } protected Collection loadFactoryNames(Class source) { return ImportCandidates.load(source, getBeanClassLoader()).getCandidates(); } + private boolean present(String className) { + String resourcePath = ClassUtils.convertClassNameToResourcePath(className) + ".class"; + return new ClassPathResource(resourcePath).exists(); + } + @Override protected Set getExclusions(AnnotationMetadata metadata, AnnotationAttributes attributes) { Set exclusions = new LinkedHashSet<>(); diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelectorTests.java b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelectorTests.java index d08cbc2eb2..7a794fd3c8 100644 --- a/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelectorTests.java +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/ImportAutoConfigurationImportSelectorTests.java @@ -74,6 +74,25 @@ class ImportAutoConfigurationImportSelectorTests { assertThat(imports).containsExactly(FreeMarkerAutoConfiguration.class.getName()); } + @Test + void importsAreSelectedFromImportsFile() throws Exception { + AnnotationMetadata annotationMetadata = getAnnotationMetadata(FromImportsFile.class); + String[] imports = this.importSelector.selectImports(annotationMetadata); + assertThat(imports).containsExactly( + "org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration", + "org.springframework.boot.autoconfigure.missing.MissingAutoConfiguration"); + } + + @Test + void importsSelectedFromImportsFileIgnoreMissingOptionalClasses() throws Exception { + AnnotationMetadata annotationMetadata = getAnnotationMetadata( + FromImportsFileIgnoresMissingOptionalClasses.class); + String[] imports = this.importSelector.selectImports(annotationMetadata); + assertThat(imports).containsExactly( + "org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration", + "org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration"); + } + @Test void propertyExclusionsAreApplied() throws IOException { this.environment.setProperty("spring.autoconfigure.exclude", FreeMarkerAutoConfiguration.class.getName()); @@ -312,6 +331,18 @@ class ImportAutoConfigurationImportSelectorTests { } + @Retention(RetentionPolicy.RUNTIME) + @ImportAutoConfiguration + @interface FromImportsFile { + + } + + @Retention(RetentionPolicy.RUNTIME) + @ImportAutoConfiguration + @interface FromImportsFileIgnoresMissingOptionalClasses { + + } + static class TestImportAutoConfigurationImportSelector extends ImportAutoConfigurationImportSelector { @Override diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFile.imports b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFile.imports new file mode 100644 index 0000000000..42102d02a8 --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFile.imports @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration +org.springframework.boot.autoconfigure.missing.MissingAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFileIgnoresMissingOptionalClasses.imports b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFileIgnoresMissingOptionalClasses.imports new file mode 100644 index 0000000000..b163934742 --- /dev/null +++ b/spring-boot-project/spring-boot-autoconfigure/src/test/resources/META-INF/spring/org.springframework.boot.autoconfigure.ImportAutoConfigurationImportSelectorTests$FromImportsFileIgnoresMissingOptionalClasses.imports @@ -0,0 +1,3 @@ +optional:org.springframework.boot.autoconfigure.freemarker.FreeMarkerAutoConfiguration +optional:org.springframework.boot.autoconfigure.missing.MissingAutoConfiguration +org.springframework.boot.autoconfigure.thymeleaf.ThymeleafAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports index 676de9b223..980f52b5ad 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports @@ -5,3 +5,4 @@ org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveDataAutoC org.springframework.boot.autoconfigure.data.cassandra.CassandraReactiveRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.data.cassandra.CassandraRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports index 09237e1bfa..bd6a6cc5c8 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports @@ -6,3 +6,4 @@ org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveDataAutoC org.springframework.boot.autoconfigure.data.couchbase.CouchbaseReactiveRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.data.couchbase.CouchbaseRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports index 6a34f70cb3..cebaf196db 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports @@ -8,3 +8,4 @@ org.springframework.boot.autoconfigure.elasticsearch.ReactiveElasticsearchClient org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration org.springframework.boot.autoconfigure.jsonb.JsonbAutoConfiguration org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports index e276c6de14..2fc2a1e54a 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports @@ -7,3 +7,4 @@ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports index 53cff5454f..cd75eda62b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports @@ -7,3 +7,4 @@ org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration org.springframework.boot.autoconfigure.mongo.MongoReactiveAutoConfiguration org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports index 5d25aa7db0..96aef94577 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports @@ -4,4 +4,5 @@ org.springframework.boot.autoconfigure.data.neo4j.Neo4jDataAutoConfiguration org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveDataAutoConfiguration org.springframework.boot.autoconfigure.data.neo4j.Neo4jReactiveRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.data.neo4j.Neo4jRepositoriesAutoConfiguration -org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports index ed0f4bec92..678494ab91 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports @@ -6,4 +6,5 @@ org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.r2dbc.R2dbcAutoConfiguration org.springframework.boot.autoconfigure.r2dbc.R2dbcTransactionManagerAutoConfiguration org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration -org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports index 3014db3633..2db18c955f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports @@ -3,3 +3,4 @@ org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration org.springframework.boot.autoconfigure.data.redis.RedisReactiveAutoConfiguration org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports index b3700d9cc9..5aa3ad940c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports @@ -5,4 +5,5 @@ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConf org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration -org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports index 11ab8a552a..53caeea39c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports @@ -1,3 +1,4 @@ # AutoConfigureTestDatabase auto-configuration imports org.springframework.boot.test.autoconfigure.jdbc.TestDatabaseAutoConfiguration -org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports index c35cbedeef..1e042e2c08 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports @@ -5,4 +5,5 @@ org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConf org.springframework.boot.autoconfigure.jooq.JooqAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration -org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports index 22c50b61e7..ba99875857 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports @@ -7,4 +7,5 @@ org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration org.springframework.boot.autoconfigure.sql.init.SqlInitializationAutoConfiguration -org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration \ No newline at end of file +org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration +optional:org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java index 0cf44e791d..8b3663f88a 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/AutoConfigurationImportedCondition.java @@ -41,7 +41,8 @@ public final class AutoConfigurationImportedCondition extends Condition this.applicationContext.getBean(ExampleService.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java deleted file mode 100644 index 3b19ac253a..0000000000 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/mongo/DataMongoTestWithServiceConnectionBeanIntegrationTests.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.test.autoconfigure.data.mongo; - -import java.time.Duration; - -import org.junit.jupiter.api.Test; -import org.testcontainers.containers.MongoDBContainer; -import org.testcontainers.junit.jupiter.Testcontainers; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; -import org.springframework.context.annotation.Bean; -import org.springframework.data.mongodb.core.MongoTemplate; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Sample test for {@link DataMongoTest @DataMongoTest} - * - * @author Michael Simons - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - * @author Eddú Meléndez - */ -@DataMongoTest -@Testcontainers(disabledWithoutDocker = true) -class DataMongoTestWithServiceConnectionBeanIntegrationTests { - - @Autowired - private MongoTemplate mongoTemplate; - - @Autowired - private ExampleRepository exampleRepository; - - @Test - void testRepository() { - ExampleDocument exampleDocument = new ExampleDocument(); - exampleDocument.setText("Look, new @DataMongoTest!"); - exampleDocument = this.exampleRepository.save(exampleDocument); - assertThat(exampleDocument.getId()).isNotNull(); - assertThat(this.mongoTemplate.collectionExists("exampleDocuments")).isTrue(); - } - - @TestConfiguration(proxyBeanMethods = false) - static class ContainerConfig { - - @Bean - @ServiceConnection - MongoDBContainer mongoDB() { - return new MongoDBContainer(DockerImageNames.mongo()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(5)); - } - - } - -} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java index b61612322c..0d1f95995c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestIntegrationTests.java @@ -26,12 +26,14 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.boot.testsupport.testcontainers.DockerImageNames; import org.springframework.context.ApplicationContext; import org.springframework.data.neo4j.core.Neo4jTemplate; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.importedAutoConfiguration; /** * Integration test for {@link DataNeo4jTest @DataNeo4jTest}. @@ -76,4 +78,9 @@ class DataNeo4jTestIntegrationTests { .isThrownBy(() -> this.applicationContext.getBean(ExampleService.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java deleted file mode 100644 index ba19403758..0000000000 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/neo4j/DataNeo4jTestWithServiceConnectionBeanIntegrationTests.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.test.autoconfigure.data.neo4j; - -import java.time.Duration; - -import org.junit.jupiter.api.Test; -import org.testcontainers.containers.Neo4jContainer; -import org.testcontainers.junit.jupiter.Testcontainers; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.DockerImageNames; -import org.springframework.context.ApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.data.neo4j.core.Neo4jTemplate; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Integration test for {@link DataNeo4jTest @DataNeo4jTest}. - * - * @author Eddú Meléndez - * @author Stephane Nicoll - * @author Michael Simons - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - */ -@DataNeo4jTest -@Testcontainers(disabledWithoutDocker = true) -class DataNeo4jTestWithServiceConnectionBeanIntegrationTests { - - @Autowired - private Neo4jTemplate neo4jTemplate; - - @Autowired - private ExampleRepository exampleRepository; - - @Autowired - private ApplicationContext applicationContext; - - @Test - void testRepository() { - ExampleGraph exampleGraph = new ExampleGraph("Look, new @DataNeo4jTest!"); - assertThat(exampleGraph.getId()).isNull(); - ExampleGraph savedGraph = this.exampleRepository.save(exampleGraph); - assertThat(savedGraph.getId()).isNotNull(); - assertThat(this.neo4jTemplate.count(ExampleGraph.class)).isOne(); - } - - @TestConfiguration - static class ContainerConfig { - - @Bean - @ServiceConnection - Neo4jContainer neo4j() { - return new Neo4jContainer<>(DockerImageNames.neo4j()).withStartupAttempts(5) - .withStartupTimeout(Duration.ofMinutes(10)); - } - - } - -} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/r2dbc/DataR2dbcTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/r2dbc/DataR2dbcTestIntegrationTests.java index 5afe0575b6..7b82535859 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/r2dbc/DataR2dbcTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/r2dbc/DataR2dbcTestIntegrationTests.java @@ -25,10 +25,12 @@ import reactor.core.publisher.Flux; import reactor.test.StepVerifier; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.r2dbc.core.DatabaseClient; import static org.assertj.core.api.Assertions.assertThat; +import static org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.importedAutoConfiguration; /** * Integration tests for {@link DataR2dbcTest}. @@ -65,4 +67,9 @@ class DataR2dbcTestIntegrationTests { assertThat(this.applicationContext.getBeanNamesForType(ExampleRepository.class)).isNotEmpty(); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java index 98331d0d21..0018b31976 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestIntegrationTests.java @@ -26,12 +26,14 @@ import org.testcontainers.junit.jupiter.Testcontainers; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.testcontainers.service.connection.ServiceConnection; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.boot.testsupport.testcontainers.RedisContainer; import org.springframework.context.ApplicationContext; import org.springframework.data.redis.core.RedisOperations; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; +import static org.springframework.boot.test.autoconfigure.AutoConfigurationImportedCondition.importedAutoConfiguration; /** * Integration test for {@link DataRedisTest @DataRedisTest}. @@ -80,4 +82,9 @@ class DataRedisTestIntegrationTests { .isThrownBy(() -> this.applicationContext.getBean(ExampleService.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java deleted file mode 100644 index 9bce650387..0000000000 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/data/redis/DataRedisTestWithServiceConnectionBeanIntegrationTests.java +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2012-2023 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.test.autoconfigure.data.redis; - -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; - -import org.junit.jupiter.api.Test; -import org.testcontainers.junit.jupiter.Testcontainers; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.testcontainers.service.connection.ServiceConnection; -import org.springframework.boot.testsupport.testcontainers.RedisContainer; -import org.springframework.context.annotation.Bean; -import org.springframework.data.redis.core.RedisOperations; - -import static org.assertj.core.api.Assertions.assertThat; - -/** - * Integration test for {@link DataRedisTest @DataRedisTest}. - * - * @author Jayaram Pradhan - * @author Moritz Halbritter - * @author Andy Wilkinson - * @author Phillip Webb - * @author Eddú Meléndez - */ -@Testcontainers(disabledWithoutDocker = true) -@DataRedisTest -class DataRedisTestWithServiceConnectionBeanIntegrationTests { - - private static final Charset CHARSET = StandardCharsets.UTF_8; - - @Autowired - private RedisOperations operations; - - @Autowired - private ExampleRepository exampleRepository; - - @Test - void testRepository() { - PersonHash personHash = new PersonHash(); - personHash.setDescription("Look, new @DataRedisTest!"); - assertThat(personHash.getId()).isNull(); - PersonHash savedEntity = this.exampleRepository.save(personHash); - assertThat(savedEntity.getId()).isNotNull(); - assertThat(this.operations - .execute((org.springframework.data.redis.connection.RedisConnection connection) -> connection.keyCommands() - .exists(("persons:" + savedEntity.getId()).getBytes(CHARSET)))) - .isTrue(); - this.exampleRepository.deleteAll(); - } - - @TestConfiguration(proxyBeanMethods = false) - static class ContainerConfig { - - @Bean - @ServiceConnection(name = "redis") - RedisContainer redis() { - return new RedisContainer(); - } - - } - -} diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jdbc/JdbcTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jdbc/JdbcTestIntegrationTests.java index 15c1ca839e..9cf7781d3b 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jdbc/JdbcTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jdbc/JdbcTestIntegrationTests.java @@ -26,6 +26,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.test.context.TestPropertySource; @@ -86,4 +87,9 @@ class JdbcTestIntegrationTests { assertThat(this.applicationContext).has(importedAutoConfiguration(LiquibaseAutoConfiguration.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestIntegrationTests.java index da8bda872f..b842c91b0a 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/jooq/JooqTestIntegrationTests.java @@ -28,6 +28,7 @@ import org.springframework.boot.autoconfigure.cache.CacheAutoConfiguration; import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; import org.springframework.boot.test.autoconfigure.orm.jpa.ExampleComponent; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.context.ApplicationContext; import static org.assertj.core.api.Assertions.assertThat; @@ -85,4 +86,9 @@ class JooqTestIntegrationTests { assertThat(this.applicationContext).has(importedAutoConfiguration(CacheAutoConfiguration.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + } diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java index e3e54de73f..277677ab0f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/orm/jpa/DataJpaTestIntegrationTests.java @@ -24,6 +24,7 @@ import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration; import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration; +import org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.data.repository.config.BootstrapMode; import org.springframework.jdbc.core.JdbcTemplate; @@ -107,6 +108,11 @@ class DataJpaTestIntegrationTests { assertThat(this.applicationContext).has(importedAutoConfiguration(LiquibaseAutoConfiguration.class)); } + @Test + void serviceConnectionAutoConfigurationWasImported() { + assertThat(this.applicationContext).has(importedAutoConfiguration(ServiceConnectionAutoConfiguration.class)); + } + @Test void bootstrapModeIsDefaultByDefault() { assertThat(this.applicationContext.getEnvironment().getProperty("spring.data.jpa.repositories.bootstrap-mode")) diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports deleted file mode 100644 index c69a4ef992..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.cassandra.AutoConfigureDataCassandra.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataCassandra auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports deleted file mode 100644 index cd54f01baa..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.couchbase.AutoConfigureDataCouchbase.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataCouchbase auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports deleted file mode 100644 index 3ac366cc6f..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.elasticsearch.AutoConfigureDataElasticsearch.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataElasticsearch auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports deleted file mode 100644 index db9bad5b30..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.jdbc.AutoConfigureDataJdbc.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataJdbc auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports deleted file mode 100644 index c865283458..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.mongo.AutoConfigureDataMongo.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataMongo auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports deleted file mode 100644 index e09426c623..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.neo4j.AutoConfigureDataNeo4j.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataNeo4j auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports deleted file mode 100644 index fe6633b44f..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.r2dbc.AutoConfigureDataR2dbc.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataR2dbc auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports deleted file mode 100644 index b86166da88..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.data.redis.AutoConfigureDataRedis.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataRedis auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports deleted file mode 100644 index 3a4619215c..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureJdbc.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureJdbc auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports deleted file mode 100644 index ad021386df..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureTestDatabase auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports deleted file mode 100644 index 574484f893..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.jooq.AutoConfigureJooq.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureJooq auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file diff --git a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports b/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports deleted file mode 100644 index 1a3c071f57..0000000000 --- a/spring-boot-project/spring-boot-testcontainers/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.orm.jpa.AutoConfigureDataJpa.imports +++ /dev/null @@ -1,2 +0,0 @@ -# AutoConfigureDataJpa auto-configuration imports -org.springframework.boot.testcontainers.service.connection.ServiceConnectionAutoConfiguration \ No newline at end of file