Skip to content

Commit e5d84bf

Browse files
authored
Fix yamlCompatibility for unmaintained previous major (#141390) (#141449)
Our YamlRestTestCompatibility tests require source access to resolve test yaml specs
1 parent d3dfce1 commit e5d84bf

File tree

3 files changed

+43
-5
lines changed

3 files changed

+43
-5
lines changed

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/BwcVersions.java

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,25 @@ public List<Version> getUnreleased() {
154154
return unreleased.keySet().stream().sorted().toList();
155155
}
156156

157+
public Optional<UnreleasedVersionInfo> getUnmaintainedPreviousMajor() {
158+
159+
return getUnreleased().stream()
160+
.filter(v -> v.getMajor() == currentVersion.getMajor() - 1)
161+
.min(Comparator.reverseOrder())
162+
.isPresent()
163+
? Optional.empty()
164+
: getReleased().stream()
165+
.filter(v -> v.getMajor() == currentVersion.getMajor() - 1)
166+
.min(Comparator.reverseOrder())
167+
.map(
168+
version -> new UnreleasedVersionInfo(
169+
version,
170+
String.format("%d.%d", version.getMajor(), version.getMinor()),
171+
":distribution:bwc:major1"
172+
)
173+
);
174+
}
175+
157176
public void compareToAuthoritative(List<Version> authoritativeReleasedVersions) {
158177
Set<Version> notReallyReleased = new HashSet<>(getReleased());
159178
notReallyReleased.removeAll(authoritativeReleasedVersions);
@@ -178,7 +197,7 @@ public void compareToAuthoritative(List<Version> authoritativeReleasedVersions)
178197
}
179198
}
180199

181-
private List<Version> getReleased() {
200+
public List<Version> getReleased() {
182201
return versions.stream()
183202
.filter(v -> v.getMajor() >= currentVersion.getMajor() - 1)
184203
.filter(v -> unreleased.containsKey(v) == false)

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/InternalDistributionBwcSetupPlugin.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.ArrayList;
3434
import java.util.List;
3535
import java.util.Locale;
36+
import java.util.Optional;
3637
import java.util.Set;
3738
import java.util.stream.Collectors;
3839

@@ -104,6 +105,25 @@ public void apply(Project project) {
104105
fileSystemOperations
105106
);
106107
}
108+
109+
// We need source access to unmaintained previous major for our yamlRestTest compatibility tests but we do not
110+
// want bwc coverage for this atm.
111+
Optional<BwcVersions.UnreleasedVersionInfo> unmaintainedPreviousMajor = buildParams.getBwcVersions().getUnmaintainedPreviousMajor();
112+
if (unmaintainedPreviousMajor.isPresent()) {
113+
configureBwcProject(
114+
project.project(unmaintainedPreviousMajor.get().gradleProjectPath()),
115+
buildParams,
116+
unmaintainedPreviousMajor.get(),
117+
providerFactory,
118+
objectFactory,
119+
toolChainService,
120+
isCi,
121+
fileSystemOperations
122+
);
123+
}
124+
// In a scenario where we do not have unreleased previous major we still wanna resolve some resources directly from branch
125+
// (e.g. needed by YamlRestTestCompatibilityTestPlugin)
126+
107127
}
108128

109129
private static void configureBwcProject(

build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/AbstractYamlRestCompatTestPlugin.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
package org.elasticsearch.gradle.internal.test.rest.compat.compat;
1111

12-
import org.elasticsearch.gradle.Version;
1312
import org.elasticsearch.gradle.internal.ElasticsearchJavaBasePlugin;
1413
import org.elasticsearch.gradle.internal.info.GlobalBuildInfoPlugin;
1514
import org.elasticsearch.gradle.internal.test.rest.CopyRestApiTask;
@@ -96,13 +95,13 @@ public void apply(Project project) {
9695

9796
// determine the previous rest compatibility version and BWC project path
9897
int currentMajor = buildParams.getBwcVersions().getCurrentVersion().getMajor();
99-
Version lastMinor = buildParams.getBwcVersions()
98+
String lastMinorProjectPath = buildParams.getBwcVersions()
10099
.getUnreleased()
101100
.stream()
102101
.filter(v -> v.getMajor() == currentMajor - 1)
103102
.min(Comparator.reverseOrder())
104-
.get();
105-
String lastMinorProjectPath = buildParams.getBwcVersions().unreleasedInfo(lastMinor).gradleProjectPath();
103+
.map(v -> buildParams.getBwcVersions().unreleasedInfo(v).gradleProjectPath())
104+
.orElseGet(() -> buildParams.getBwcVersions().getUnmaintainedPreviousMajor().get().gradleProjectPath());
106105

107106
// copy compatible rest specs
108107
Configuration bwcMinorConfig = project.getConfigurations().create(BWC_MINOR_CONFIG_NAME);

0 commit comments

Comments
 (0)