Skip to content

Commit f43dd4b

Browse files
committed
fix changed files helper to also get untracked files
1 parent 8d13cec commit f43dd4b

File tree

3 files changed

+44
-19
lines changed

3 files changed

+44
-19
lines changed

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

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,25 @@ class TransportVersionGenerationFuncTest extends AbstractTransportVersionFuncTes
165165
]
166166
}
167167

168+
def "unreferenced definitions should be deleted"() {
169+
given:
170+
namedTransportVersion("old_name", "8124000")
171+
referencedTransportVersion("new_name")
172+
173+
when:
174+
def result = gradleRunner(
175+
":myserver:validateTransportVersionDefinitions",
176+
":myserver:generateTransportVersionDefinition",
177+
"--name=new_name" ,
178+
"--branches=9.2"
179+
).build()
180+
181+
then:
182+
!file("myserver/src/main/resources/transport/definitions/named/old_name.csv").exists()
183+
result.task(":myserver:generateTransportVersionDefinition").outcome == TaskOutcome.SUCCESS
184+
result.task(":myserver:validateTransportVersionDefinitions").outcome == TaskOutcome.SUCCESS
185+
}
186+
168187

169188
/*
170189
TODO: Add tests that check that:

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

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ public GenerateTransportVersionDefinitionTask(ExecOperations execOperations) {
100100
public void run() throws IOException {
101101
TransportVersionResourcesService resources = getResources().get();
102102
Set<String> referencedNames = TransportVersionReference.collectNames(getReferencesFiles());
103-
List<TransportVersionDefinition> changedDefinitions = resources.getChangedNamedDefinitions();
103+
List<String> changedDefinitionNames = resources.getChangedNamedDefinitionNames();
104104
String name = getTransportVersionName().isPresent()
105105
? getTransportVersionName().get()
106-
: findAddedTransportVersionName(resources, referencedNames, changedDefinitions);
106+
: findAddedTransportVersionName(resources, referencedNames, changedDefinitionNames);
107107

108108
if (name.isEmpty()) {
109109
resetAllLatestFiles(resources);
@@ -113,7 +113,7 @@ public void run() throws IOException {
113113
resources.writeNamedDefinition(new TransportVersionDefinition(name, ids));
114114
}
115115

116-
removeUnusedNamedDefinitions(resources, referencedNames, changedDefinitions);
116+
removeUnusedNamedDefinitions(resources, referencedNames, changedDefinitionNames);
117117
}
118118

119119
private List<TransportVersionId> updateLatestFiles(TransportVersionResourcesService resources, String name) throws IOException {
@@ -195,21 +195,21 @@ private void resetAllLatestFiles(TransportVersionResourcesService resources) thr
195195
private void removeUnusedNamedDefinitions(
196196
TransportVersionResourcesService resources,
197197
Set<String> referencedNames,
198-
List<TransportVersionDefinition> changedDefinitions
198+
List<String> changedDefinitions
199199
) throws IOException {
200-
for (TransportVersionDefinition definition : changedDefinitions) {
201-
if (referencedNames.contains(definition.name()) == false) {
200+
for (String definitionName : changedDefinitions) {
201+
if (referencedNames.contains(definitionName) == false) {
202202
// we added this definition file, but it's now unreferenced, so delete it
203-
getLogger().lifecycle("Deleting unreferenced named transport version definition [" + definition.name() + "]");
204-
resources.deleteNamedDefinition(definition.name());
203+
getLogger().lifecycle("Deleting unreferenced named transport version definition [" + definitionName + "]");
204+
resources.deleteNamedDefinition(definitionName);
205205
}
206206
}
207207
}
208208

209209
private String findAddedTransportVersionName(
210210
TransportVersionResourcesService resources,
211211
Set<String> referencedNames,
212-
List<TransportVersionDefinition> changedDefinitions
212+
List<String> changedDefinitions
213213
) throws IOException {
214214
// First check for unreferenced names. We only care about the first one. If there is more than one
215215
// validation will fail later and the developer will have to remove one. When that happens, generation
@@ -225,7 +225,7 @@ private String findAddedTransportVersionName(
225225
if (changedDefinitions.isEmpty()) {
226226
return "";
227227
} else {
228-
return changedDefinitions.getFirst().name();
228+
return changedDefinitions.getFirst();
229229
}
230230
}
231231
}

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

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -123,16 +123,15 @@ TransportVersionDefinition getNamedDefinitionFromMain(String name) {
123123
return getMainFile(resourcePath, TransportVersionDefinition::fromString);
124124
}
125125

126-
List<TransportVersionDefinition> getChangedNamedDefinitions() throws IOException {
127-
List<TransportVersionDefinition> changedDefinitions = new ArrayList<>();
126+
List<String> getChangedNamedDefinitionNames() {
127+
List<String> changedDefinitions = new ArrayList<>();
128128
String namedPrefix = NAMED_DIR.toString();
129129
for (String changedPath : getChangedResources()) {
130-
if (changedPath.contains(namedPrefix) == false) { // TODO make this more robust
130+
if (changedPath.contains(namedPrefix) == false) {
131131
continue;
132132
}
133-
// TODO why are we getting the main file here? Shouldn't we just read the changed file directly?
134-
TransportVersionDefinition definition = getMainFile(changedPath, TransportVersionDefinition::fromString);
135-
changedDefinitions.add(definition);
133+
String name = changedPath.substring(namedPrefix.length() + 1 /* skip slash */, changedPath.length() - 4 /* .csv */);
134+
changedDefinitions.add(name);
136135
}
137136
return changedDefinitions;
138137
}
@@ -225,11 +224,18 @@ private Set<String> getMainResources() {
225224
private Set<String> getChangedResources() {
226225
if (changedResources.get() == null) {
227226
synchronized (changedResources) {
227+
HashSet<String> resources = new HashSet<>();
228+
228229
// gitCommand("add", "."); // TODO this finds the files that have been added without being committed.
229-
String output = gitCommand("diff", "--name-only", "main", ".");
230+
String diffOutput = gitCommand("diff", "--name-only", "main", ".");
231+
if (diffOutput.strip().isEmpty() == false) {
232+
Collections.addAll(resources, diffOutput.split(System.lineSeparator()));
233+
}
230234

231-
HashSet<String> resources = new HashSet<>();
232-
Collections.addAll(resources, output.split(System.lineSeparator()));
235+
String untrackedOutput = gitCommand("ls-files", "--others", "--exclude-standard");
236+
if (untrackedOutput.strip().isEmpty() == false) {
237+
Collections.addAll(resources, untrackedOutput.split(System.lineSeparator()));
238+
}
233239
changedResources.set(resources);
234240
}
235241
}

0 commit comments

Comments
 (0)