Skip to content

Commit 74b486d

Browse files
rjernstgmjehovich
authored andcommitted
Make resolve conflict in transport version its own task (elastic#134842)
This commit moves the action for resolving merge conflicts in transport version files a separate task instead of a command line flag to generate.
1 parent 8a72481 commit 74b486d

File tree

5 files changed

+112
-84
lines changed

5 files changed

+112
-84
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
/*
2+
* Copyright Elasticsearch B.V. and/or licensed to Elasticsearch B.V. under one
3+
* or more contributor license agreements. Licensed under the "Elastic License
4+
* 2.0", the "GNU Affero General Public License v3.0 only", and the "Server Side
5+
* Public License v 1"; you may not use this file except in compliance with, at
6+
* your election, the "Elastic License 2.0", the "GNU Affero General Public
7+
* License v3.0 only", or the "Server Side Public License, v 1".
8+
*/
9+
10+
package org.elasticsearch.gradle.internal.transport
11+
12+
import org.gradle.testkit.runner.BuildResult
13+
import org.gradle.testkit.runner.GradleRunner
14+
import org.gradle.testkit.runner.TaskOutcome
15+
16+
class ResolveTransportVersionConflictFuncTest extends AbstractTransportVersionFuncTest {
17+
18+
GradleRunner runResolveAndValidateTask() {
19+
List<String> args = List.of(":myserver:validateTransportVersionResources", ":myserver:resolveTransportVersionConflict")
20+
return gradleRunner(args.toArray())
21+
}
22+
23+
void assertResolveAndValidateSuccess(BuildResult result) {
24+
assert result.task(":myserver:resolveTransportVersionConflict").outcome == TaskOutcome.SUCCESS
25+
assert result.task(":myserver:validateTransportVersionResources").outcome == TaskOutcome.SUCCESS
26+
}
27+
28+
def "update flag works with current"() {
29+
given:
30+
referableAndReferencedTransportVersion("new_tv", "8123000")
31+
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
32+
"""
33+
<<<<<<< HEAD
34+
existing_92,8123000
35+
=======
36+
new_tv,8123000
37+
>>>>>> name
38+
""".strip()
39+
40+
when:
41+
def result = runResolveAndValidateTask().build()
42+
43+
then:
44+
assertResolveAndValidateSuccess(result)
45+
assertReferableDefinition("existing_92", "8123000,8012001")
46+
assertReferableDefinition("new_tv", "8124000")
47+
assertUpperBound("9.2", "new_tv,8124000")
48+
}
49+
50+
def "update flag works with multiple branches"() {
51+
given:
52+
referableAndReferencedTransportVersion("new_tv", "8123000,8012001,7123001")
53+
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
54+
"""
55+
<<<<<<< HEAD
56+
existing_92,8123000
57+
=======
58+
new_tv,8123000
59+
>>>>>> name
60+
""".strip()
61+
file("myserver/src/main/resources/transport/latest/9.1.csv").text =
62+
"""
63+
<<<<<<< HEAD
64+
existing_92,8012001
65+
=======
66+
new_tv,8012001
67+
>>>>>> name
68+
""".strip()
69+
file("myserver/src/main/resources/transport/latest/8.19.csv").text =
70+
"""
71+
<<<<<<< HEAD
72+
initial_8.19.7,7123001
73+
=======
74+
new_tv,7123001
75+
>>>>>> name
76+
""".strip()
77+
78+
when:
79+
def result = runResolveAndValidateTask().build()
80+
81+
then:
82+
assertResolveAndValidateSuccess(result)
83+
assertReferableDefinition("existing_92", "8123000,8012001")
84+
assertUnreferableDefinition("initial_8.19.7", "7123001")
85+
assertReferableDefinition("new_tv", "8124000,8012002,7123002")
86+
assertUpperBound("9.2", "new_tv,8124000")
87+
assertUpperBound("9.1", "new_tv,8012002")
88+
assertUpperBound("8.19", "new_tv,7123002")
89+
}
90+
}

build-tools-internal/src/integTest/groovy/org/elasticsearch/gradle/internal/transport/TransportVersionGenerationFuncTest.groovy

Lines changed: 2 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
1919
List<String> args = new ArrayList<>()
2020
args.add(":myserver:validateTransportVersionResources")
2121
args.add(":myserver:generateTransportVersion")
22-
args.addAll(additionalArgs);
22+
args.addAll(additionalArgs)
2323
return gradleRunner(args.toArray())
2424
}
2525

2626
def runGenerateTask(String... additionalArgs) {
2727
List<String> args = new ArrayList<>()
2828
args.add(":myserver:generateTransportVersion")
29-
args.addAll(additionalArgs);
29+
args.addAll(additionalArgs)
3030
return gradleRunner(args.toArray())
3131
}
3232

@@ -277,77 +277,6 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
277277
assertUpperBound("9.2", "second_tv,8124000")
278278
}
279279

280-
def "update flag works with current"() {
281-
given:
282-
referableAndReferencedTransportVersion("new_tv", "8123000")
283-
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
284-
"""
285-
<<<<<<< HEAD
286-
existing_92,8123000
287-
=======
288-
new_tv,8123000
289-
>>>>>> name
290-
""".strip()
291-
292-
when:
293-
def result = runGenerateAndValidateTask("--resolve-conflict").build()
294-
295-
then:
296-
assertGenerateAndValidateSuccess(result)
297-
assertReferableDefinition("existing_92", "8123000,8012001")
298-
assertReferableDefinition("new_tv", "8124000")
299-
assertUpperBound("9.2", "new_tv,8124000")
300-
}
301-
302-
def "update flag works with multiple branches"() {
303-
given:
304-
referableAndReferencedTransportVersion("new_tv", "8123000,8012001,7123001")
305-
file("myserver/src/main/resources/transport/latest/9.2.csv").text =
306-
"""
307-
<<<<<<< HEAD
308-
existing_92,8123000
309-
=======
310-
new_tv,8123000
311-
>>>>>> name
312-
""".strip()
313-
file("myserver/src/main/resources/transport/latest/9.1.csv").text =
314-
"""
315-
<<<<<<< HEAD
316-
existing_92,8012001
317-
=======
318-
new_tv,8012001
319-
>>>>>> name
320-
""".strip()
321-
file("myserver/src/main/resources/transport/latest/8.19.csv").text =
322-
"""
323-
<<<<<<< HEAD
324-
initial_8.19.7,7123001
325-
=======
326-
new_tv,7123001
327-
>>>>>> name
328-
""".strip()
329-
330-
when:
331-
def result = runGenerateAndValidateTask("--resolve-conflict").build()
332-
333-
then:
334-
assertGenerateAndValidateSuccess(result)
335-
assertReferableDefinition("existing_92", "8123000,8012001")
336-
assertUnreferableDefinition("initial_8.19.7", "7123001")
337-
assertReferableDefinition("new_tv", "8124000,8012002,7123002")
338-
assertUpperBound("9.2", "new_tv,8124000")
339-
assertUpperBound("9.1", "new_tv,8012002")
340-
assertUpperBound("8.19", "new_tv,7123002")
341-
}
342-
343-
def "update flag cannot be used with backport branches"() {
344-
when:
345-
def result = runGenerateTask("--resolve-conflict", "--backport-branches=9.1").buildAndFail()
346-
347-
then:
348-
assertGenerateFailure(result, "Cannot use --resolve-conflict with --backport-branches")
349-
}
350-
351280
def "branches param order does not matter"() {
352281
given:
353282
referencedTransportVersion("test_tv")

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

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,11 +74,7 @@ public abstract class GenerateTransportVersionDefinitionTask extends DefaultTask
7474

7575
@Input
7676
@Optional
77-
@Option(
78-
option = "resolve-conflict",
79-
description = "Regenerate the transport version currently being added to upstream to resolve a merge conflict"
80-
)
81-
public abstract Property<Boolean> getResolveConflict();
77+
abstract Property<Boolean> getResolveConflict();
8278

8379
/**
8480
* The name of the upper bounds file which will be used at runtime on the current branch. Normally

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

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
import java.util.Map;
2525
import java.util.Properties;
26+
import java.util.function.Consumer;
2627

2728
public class TransportVersionResourcesPlugin implements Plugin<Project> {
2829

@@ -82,16 +83,28 @@ public void apply(Project project) {
8283
t.into(resourceRoot + "/definitions", c -> c.from(generateManifestTask));
8384
});
8485

86+
Consumer<GenerateTransportVersionDefinitionTask> generationConfiguration = t -> {
87+
t.setGroup(taskGroup);
88+
t.getReferencesFiles().setFrom(tvReferencesConfig);
89+
t.getIncrement().convention(1000);
90+
t.getCurrentUpperBoundName().convention(currentVersion.getMajor() + "." + currentVersion.getMinor());
91+
};
92+
8593
var generateDefinitionsTask = project.getTasks()
8694
.register("generateTransportVersion", GenerateTransportVersionDefinitionTask.class, t -> {
87-
t.setGroup(taskGroup);
95+
generationConfiguration.accept(t);
8896
t.setDescription("(Re)generates a transport version definition file");
89-
t.getReferencesFiles().setFrom(tvReferencesConfig);
90-
t.getIncrement().convention(1000);
91-
t.getCurrentUpperBoundName().convention(currentVersion.getMajor() + "." + currentVersion.getMinor());
9297
});
9398
validateTask.configure(t -> t.mustRunAfter(generateDefinitionsTask));
9499

100+
var resolveConflictTask = project.getTasks()
101+
.register("resolveTransportVersionConflict", GenerateTransportVersionDefinitionTask.class, t -> {
102+
generationConfiguration.accept(t);
103+
t.setDescription("Resolve merge conflicts in transport version internal state files");
104+
t.getResolveConflict().set(true);
105+
});
106+
validateTask.configure(t -> t.mustRunAfter(resolveConflictTask));
107+
95108
var generateInitialTask = project.getTasks()
96109
.register("generateInitialTransportVersion", GenerateInitialTransportVersionTask.class, t -> {
97110
t.setGroup(taskGroup);

docs/internal/Versioning.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,9 +122,9 @@ the latter will have a merge conflict with `main`.
122122

123123
In the event of a conflict, merge `main` into your branch. You will have
124124
conflict(s) with transport version internal state files. Run the following
125-
generate task to resolve the conflict(s):
125+
task to resolve the conflict(s):
126126

127-
./gradlew generateTransportVersion --resolve-conflict
127+
./gradlew resolveTransportVersionConflict
128128

129129
This command will regenerate your transport version and stage the updated
130130
state files in git. You can then proceed with your merge as usual.

0 commit comments

Comments
 (0)