BuildInfoTests Class — spring-boot Architecture
Architecture documentation for the BuildInfoTests class in BuildInfoTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
build-plugin/spring-boot-gradle-plugin/src/test/java/org/springframework/boot/gradle/tasks/buildinfo/BuildInfoTests.java lines 42–200
@ClassPathExclusions("kotlin-daemon-client-*")
class BuildInfoTests {
@TempDir
@SuppressWarnings("NullAway.Init")
File temp;
@Test
void basicExecution() {
Properties properties = buildInfoProperties(createTask(createProject("test")));
assertThat(properties).containsKey("build.time");
assertThat(properties).doesNotContainKey("build.artifact");
assertThat(properties).doesNotContainKey("build.group");
assertThat(properties).containsEntry("build.name", "test");
assertThat(properties).containsEntry("build.version", "unspecified");
}
@Test
void customArtifactIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getArtifact().set("custom");
assertThat(buildInfoProperties(task)).containsEntry("build.artifact", "custom");
}
@Test
void artifactCanBeExcludedFromProperties() {
BuildInfo task = createTask(createProject("test"));
task.getExcludes().addAll("artifact");
assertThat(buildInfoProperties(task)).doesNotContainKey("build.artifact");
}
@Test
void projectGroupIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProject().setGroup("com.example");
assertThat(buildInfoProperties(task)).containsEntry("build.group", "com.example");
}
@Test
void customGroupIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getGroup().set("com.example");
assertThat(buildInfoProperties(task)).containsEntry("build.group", "com.example");
}
@Test
void groupCanBeExcludedFromProperties() {
BuildInfo task = createTask(createProject("test"));
task.getExcludes().add("group");
assertThat(buildInfoProperties(task)).doesNotContainKey("build.group");
}
@Test
void customNameIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getName().set("Example");
assertThat(buildInfoProperties(task)).containsEntry("build.name", "Example");
}
@Test
void nameCanBeExcludedFromProperties() {
BuildInfo task = createTask(createProject("test"));
task.getExcludes().add("name");
assertThat(buildInfoProperties(task)).doesNotContainKey("build.name");
}
@Test
void projectVersionIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProject().setVersion("1.2.3");
assertThat(buildInfoProperties(task)).containsEntry("build.version", "1.2.3");
}
@Test
void customVersionIsReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getVersion().set("2.3.4");
assertThat(buildInfoProperties(task)).containsEntry("build.version", "2.3.4");
}
@Test
void versionCanBeExcludedFromProperties() {
BuildInfo task = createTask(createProject("test"));
task.getExcludes().add("version");
assertThat(buildInfoProperties(task)).doesNotContainKey("build.version");
}
@Test
void timeIsSetInProperties() {
BuildInfo task = createTask(createProject("test"));
assertThat(buildInfoProperties(task)).containsKey("build.time");
}
@Test
void timeCanBeExcludedFromProperties() {
BuildInfo task = createTask(createProject("test"));
task.getExcludes().add("time");
assertThat(buildInfoProperties(task)).doesNotContainKey("build.time");
}
@Test
void timeCanBeCustomizedInProperties() {
BuildInfo task = createTask(createProject("test"));
String isoTime = DateTimeFormatter.ISO_INSTANT.format(Instant.now());
task.getProperties().getTime().set(isoTime);
assertThat(buildInfoProperties(task)).containsEntry("build.time", isoTime);
}
@Test
void additionalPropertiesAreReflectedInProperties() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getAdditional().put("a", "alpha");
task.getProperties().getAdditional().put("b", "bravo");
assertThat(buildInfoProperties(task)).containsEntry("build.a", "alpha").containsEntry("build.b", "bravo");
}
@Test
void additionalPropertiesCanBeExcluded() {
BuildInfo task = createTask(createProject("test"));
task.getProperties().getAdditional().put("a", "alpha");
task.getExcludes().add("b");
assertThat(buildInfoProperties(task)).containsEntry("build.a", "alpha").doesNotContainKey("b");
}
@Test
@SuppressWarnings("NullAway") // Test null check
void nullAdditionalPropertyProducesInformativeFailure() {
BuildInfo task = createTask(createProject("test"));
assertThatException().isThrownBy(() -> task.getProperties().getAdditional().put("a", null))
.withMessage("Cannot add an entry with a null value to a property of type Map.");
}
private Project createProject(String projectName) {
File projectDir = new File(this.temp, projectName);
return GradleProjectBuilder.builder().withProjectDir(projectDir).withName(projectName).build();
}
private BuildInfo createTask(Project project) {
return project.getTasks().register("testBuildInfo", BuildInfo.class).get();
}
private Properties buildInfoProperties(BuildInfo task) {
task.generateBuildProperties();
return buildInfoProperties(new File(task.getDestinationDir().get().getAsFile(), "build-info.properties"));
}
private Properties buildInfoProperties(File file) {
assertThat(file).isFile();
Properties properties = new Properties();
try (FileReader reader = new FileReader(file)) {
properties.load(reader);
return properties;
}
catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free