Skip to content

Commit 03a3425

Browse files
committed
Fix test for incremental build with type rename
Closes gh-38119
1 parent 0be9fd9 commit 03a3425

File tree

2 files changed

+27
-5
lines changed

2 files changed

+27
-5
lines changed

spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/IncrementalBuildMetadataGenerationTests.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
1616

1717
package org.springframework.boot.configurationprocessor;
1818

19-
import org.junit.jupiter.api.Disabled;
2019
import org.junit.jupiter.api.Test;
2120

2221
import org.springframework.boot.configurationprocessor.metadata.ConfigurationMetadata;
@@ -74,7 +73,6 @@ void incrementalBuildAnnotationRemoved() {
7473
}
7574

7675
@Test
77-
@Disabled("gh-26271")
7876
void incrementalBuildTypeRenamed() {
7977
TestProject project = new TestProject(FooProperties.class, BarProperties.class);
8078
ConfigurationMetadata metadata = project.compile();
@@ -85,7 +83,7 @@ void incrementalBuildTypeRenamed() {
8583
assertThat(metadata).doesNotHave(Metadata.withProperty("bar.counter").fromSource(RenamedBarProperties.class));
8684
project.delete(BarProperties.class);
8785
project.add(RenamedBarProperties.class);
88-
metadata = project.compile();
86+
metadata = project.compile(metadata);
8987
assertThat(metadata)
9088
.has(Metadata.withProperty("foo.counter").fromSource(FooProperties.class).withDefaultValue(0));
9189
assertThat(metadata)

spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/src/test/java/org/springframework/boot/configurationprocessor/TestProject.java

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2012-2023 the original author or authors.
2+
* Copyright 2012-2024 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -16,17 +16,22 @@
1616

1717
package org.springframework.boot.configurationprocessor;
1818

19+
import java.io.ByteArrayOutputStream;
20+
import java.io.IOException;
1921
import java.io.InputStream;
2022
import java.io.InputStreamReader;
23+
import java.io.UncheckedIOException;
2124
import java.util.Arrays;
2225
import java.util.List;
2326
import java.util.concurrent.atomic.AtomicReference;
2427

2528
import org.springframework.boot.configurationprocessor.metadata.ConfigurationMetadata;
29+
import org.springframework.boot.configurationprocessor.metadata.JsonMarshaller;
2630
import org.springframework.boot.configurationprocessor.test.CompiledMetadataReader;
2731
import org.springframework.boot.configurationprocessor.test.TestConfigurationMetadataAnnotationProcessor;
2832
import org.springframework.boot.configurationsample.ConfigurationProperties;
2933
import org.springframework.boot.configurationsample.NestedConfigurationProperty;
34+
import org.springframework.core.test.tools.ResourceFile;
3035
import org.springframework.core.test.tools.SourceFile;
3136
import org.springframework.core.test.tools.SourceFiles;
3237
import org.springframework.core.test.tools.TestCompiler;
@@ -55,14 +60,33 @@ public TestProject(Class<?>... classes) {
5560
}
5661

5762
public ConfigurationMetadata compile() {
63+
return compile(null);
64+
}
65+
66+
public ConfigurationMetadata compile(ConfigurationMetadata previousMetadata) {
5867
TestConfigurationMetadataAnnotationProcessor processor = new TestConfigurationMetadataAnnotationProcessor();
5968
TestCompiler compiler = TestCompiler.forSystem().withProcessors(processor);
69+
if (previousMetadata != null) {
70+
compiler = compiler.withResources(
71+
ResourceFile.of("META-INF/spring-configuration-metadata.json", asBytes(previousMetadata)));
72+
}
6073
AtomicReference<ConfigurationMetadata> configurationMetadata = new AtomicReference<>();
6174
compiler.compile(this.sources,
6275
(compiled) -> configurationMetadata.set(CompiledMetadataReader.getMetadata(compiled)));
6376
return configurationMetadata.get();
6477
}
6578

79+
private byte[] asBytes(ConfigurationMetadata previousMetadata) {
80+
ByteArrayOutputStream output = new ByteArrayOutputStream();
81+
try {
82+
new JsonMarshaller().write(previousMetadata, output);
83+
}
84+
catch (IOException ex) {
85+
throw new UncheckedIOException(ex);
86+
}
87+
return output.toByteArray();
88+
}
89+
6690
/**
6791
* Add source code at the end of file, just before last '}'
6892
* @param target the target

0 commit comments

Comments
 (0)