Minimize and centralize assumptions about build output

Closes gh-15471
This commit is contained in:
Andy Wilkinson
2018-12-14 17:50:20 +00:00
parent 7d0a7a65c8
commit 61d04db0d7
57 changed files with 778 additions and 337 deletions

View File

@@ -141,10 +141,10 @@ public class Neo4jPropertiesTests {
@Test
public void embeddedModeWithRelativeLocation() {
Neo4jProperties properties = load(true,
"spring.data.neo4j.uri=file:target/neo4j/my.db");
"spring.data.neo4j.uri=file:relative/path/to/my.db");
Configuration configuration = properties.createConfiguration();
assertDriver(configuration, Neo4jProperties.EMBEDDED_DRIVER,
"file:target/neo4j/my.db");
"file:relative/path/to/my.db");
}
private static void assertDriver(Configuration actual, String driver, String uri) {

View File

@@ -24,6 +24,7 @@ import org.junit.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.testsupport.BuildOutput;
import org.springframework.boot.testsupport.rule.OutputCapture;
import static org.assertj.core.api.Assertions.assertThat;
@@ -36,6 +37,8 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class FreeMarkerAutoConfigurationTests {
private final BuildOutput buildOutput = new BuildOutput(getClass());
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(FreeMarkerAutoConfiguration.class));
@@ -68,19 +71,24 @@ public class FreeMarkerAutoConfigurationTests {
@Test
public void emptyTemplateLocation() {
new File("target/test-classes/templates/empty-directory").mkdir();
this.contextRunner.withPropertyValues("spring.freemarker.templateLoaderPath:"
+ "classpath:/templates/empty-directory/").run((context) -> {
});
File emptyDirectory = new File(this.buildOutput.getTestResourcesLocation(),
"empty-templates/empty-directory");
emptyDirectory.mkdirs();
this.contextRunner
.withPropertyValues("spring.freemarker.templateLoaderPath:"
+ "classpath:/empty-templates/empty-directory/")
.run((context) -> assertThat(this.output.toString())
.doesNotContain("Cannot find template location"));
}
@Test
public void nonExistentLocationAndEmptyLocation() {
new File("target/test-classes/templates/empty-directory").mkdir();
new File(this.buildOutput.getTestResourcesLocation(),
"empty-templates/empty-directory").mkdirs();
this.contextRunner.withPropertyValues("spring.freemarker.templateLoaderPath:"
+ "classpath:/does-not-exist/,classpath:/templates/empty-directory/")
.run((context) -> {
});
+ "classpath:/does-not-exist/,classpath:/empty-templates/empty-directory/")
.run((context) -> assertThat(this.output.toString())
.doesNotContain("Cannot find template location"));
}
}

View File

@@ -31,6 +31,7 @@ import org.junit.Before;
import org.junit.Test;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.BuildOutput;
import org.springframework.context.i18n.LocaleContextHolder;
import org.springframework.core.io.ClassPathResource;
import org.springframework.mock.web.MockHttpServletRequest;
@@ -53,6 +54,8 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class GroovyTemplateAutoConfigurationTests {
private final BuildOutput buildOutput = new BuildOutput(getClass());
private AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
@Before
@@ -76,7 +79,8 @@ public class GroovyTemplateAutoConfigurationTests {
@Test
public void emptyTemplateLocation() {
new File("target/test-classes/templates/empty-directory").mkdir();
new File(this.buildOutput.getTestResourcesLocation(),
"empty-templates/empty-directory").mkdirs();
registerAndRefreshContext("spring.groovy.template.resource-loader-path:"
+ "classpath:/templates/empty-directory/");
}

View File

@@ -244,7 +244,7 @@ public class DataSourceAutoConfigurationTests {
public DataSource dataSource() {
this.pool = new BasicDataSource();
this.pool.setDriverClassName("org.hsqldb.jdbcDriver");
this.pool.setUrl("jdbc:hsqldb:target/overridedb");
this.pool.setUrl("jdbc:hsqldb:mem:overridedb");
this.pool.setUsername("sa");
return this.pool;
}

View File

@@ -17,6 +17,7 @@
package org.springframework.boot.autoconfigure.mongo.embedded;
import java.io.File;
import java.io.IOException;
import java.util.EnumSet;
import java.util.stream.Collectors;
@@ -27,7 +28,9 @@ import de.flapdoodle.embed.mongo.distribution.Feature;
import de.flapdoodle.embed.mongo.distribution.Version;
import org.bson.Document;
import org.junit.After;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
@@ -52,6 +55,9 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class EmbeddedMongoAutoConfigurationTests {
@Rule
public final TemporaryFolder temp = new TemporaryFolder();
private AnnotationConfigApplicationContext context;
@After
@@ -143,8 +149,8 @@ public class EmbeddedMongoAutoConfigurationTests {
}
@Test
public void mongoWritesToCustomDatabaseDir() {
File customDatabaseDir = new File("target/custom-database-dir");
public void mongoWritesToCustomDatabaseDir() throws IOException {
File customDatabaseDir = this.temp.newFolder("custom-database-dir");
FileSystemUtils.deleteRecursively(customDatabaseDir);
load("spring.mongodb.embedded.storage.databaseDir="
+ customDatabaseDir.getPath());

View File

@@ -39,6 +39,7 @@ import org.thymeleaf.templateresolver.ITemplateResolver;
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.BuildOutput;
import org.springframework.boot.testsupport.rule.OutputCapture;
import org.springframework.boot.web.reactive.context.AnnotationConfigReactiveWebApplicationContext;
import org.springframework.context.annotation.Bean;
@@ -61,6 +62,8 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class ThymeleafReactiveAutoConfigurationTests {
private final BuildOutput buildOutput = new BuildOutput(getClass());
@Rule
public final OutputCapture output = new OutputCapture();
@@ -184,9 +187,10 @@ public class ThymeleafReactiveAutoConfigurationTests {
@Test
public void templateLocationEmpty() {
new File("target/test-classes/templates/empty-directory").mkdir();
new File(this.buildOutput.getTestResourcesLocation(),
"empty-templates/empty-directory").mkdirs();
load(BaseConfiguration.class,
"spring.thymeleaf.prefix:classpath:/templates/empty-directory/");
"spring.thymeleaf.prefix:classpath:/empty-templates/empty-directory/");
assertThat(this.output.toString())
.doesNotContain("Cannot find template location");
}

View File

@@ -42,6 +42,7 @@ import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
import org.springframework.boot.test.rule.OutputCapture;
import org.springframework.boot.test.util.TestPropertyValues;
import org.springframework.boot.testsupport.BuildOutput;
import org.springframework.boot.web.servlet.FilterRegistrationBean;
import org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter;
import org.springframework.context.annotation.AnnotationConfigApplicationContext;
@@ -75,6 +76,8 @@ import static org.hamcrest.Matchers.containsString;
*/
public class ThymeleafServletAutoConfigurationTests {
private final BuildOutput buildOutput = new BuildOutput(getClass());
@Rule
public OutputCapture output = new OutputCapture();
@@ -176,9 +179,10 @@ public class ThymeleafServletAutoConfigurationTests {
@Test
public void templateLocationEmpty() {
new File("target/test-classes/templates/empty-directory").mkdir();
new File(this.buildOutput.getTestResourcesLocation(),
"empty-templates/empty-directory").mkdirs();
load(BaseConfiguration.class,
"spring.thymeleaf.prefix:classpath:/templates/empty-directory/");
"spring.thymeleaf.prefix:classpath:/empty-templates/empty-directory/");
}
@Test

View File

@@ -17,6 +17,7 @@
package org.springframework.boot.autoconfigure.transaction.jta;
import java.io.File;
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
@@ -35,8 +36,9 @@ import com.atomikos.icatch.config.UserTransactionService;
import com.atomikos.icatch.jta.UserTransactionManager;
import com.atomikos.jms.AtomikosConnectionFactoryBean;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.TemporaryFolder;
import org.springframework.beans.factory.NoSuchBeanDefinitionException;
import org.springframework.boot.autoconfigure.transaction.TransactionAutoConfiguration;
@@ -55,7 +57,6 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.util.FileSystemUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType;
@@ -72,12 +73,10 @@ import static org.mockito.Mockito.mock;
*/
public class JtaAutoConfigurationTests {
private AnnotationConfigApplicationContext context;
@Rule
public final TemporaryFolder temp = new TemporaryFolder();
@Before
public void cleanUpLogs() {
FileSystemUtils.deleteRecursively(new File("target/transaction-logs"));
}
private AnnotationConfigApplicationContext context;
@After
public void closeContext() {
@@ -155,15 +154,16 @@ public class JtaAutoConfigurationTests {
}
@Test
public void defaultAtomikosTransactionManagerName() {
public void defaultAtomikosTransactionManagerName() throws IOException {
this.context = new AnnotationConfigApplicationContext();
TestPropertyValues.of("spring.jta.logDir:target/transaction-logs")
File logs = this.temp.newFolder("jta");
TestPropertyValues.of("spring.jta.logDir:" + logs.getAbsolutePath())
.applyTo(this.context);
this.context.register(JtaPropertiesConfiguration.class,
AtomikosJtaConfiguration.class);
this.context.refresh();
File epochFile = new File("target/transaction-logs/tmlog0.log");
File epochFile = new File(logs, "tmlog0.log");
assertThat(epochFile.isFile()).isTrue();
}