Browse Source

Fix configuration cache incompatibility in Rest compatibility tests (#101842)

related to https://github.com/elastic/elasticsearch/issues/57918
Rene Groeschke 1 year ago
parent
commit
73ca01ebf5

+ 5 - 1
build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/CopyRestTestsTask.java

@@ -15,6 +15,7 @@ import org.gradle.api.file.FileCollection;
 import org.gradle.api.file.FileSystemOperations;
 import org.gradle.api.file.FileTree;
 import org.gradle.api.file.ProjectLayout;
+import org.gradle.api.internal.file.FileOperations;
 import org.gradle.api.model.ObjectFactory;
 import org.gradle.api.provider.ListProperty;
 import org.gradle.api.tasks.IgnoreEmptyDirectories;
@@ -43,7 +44,7 @@ import static org.elasticsearch.gradle.util.GradleUtils.getProjectPathFromTask;
  *
  * @see RestResourcesPlugin
  */
-public class CopyRestTestsTask extends DefaultTask {
+public abstract class CopyRestTestsTask extends DefaultTask {
     private static final String REST_TEST_PREFIX = "rest-api-spec/test";
     private final ListProperty<String> includeCore;
     private final ListProperty<String> includeXpack;
@@ -62,6 +63,9 @@ public class CopyRestTestsTask extends DefaultTask {
     private final ProjectLayout projectLayout;
     private final FileSystemOperations fileSystemOperations;
 
+    @Inject
+    public abstract FileOperations getFileOperations();
+
     @Inject
     public CopyRestTestsTask(
         ProjectLayout projectLayout,

+ 4 - 2
build-tools-internal/src/main/java/org/elasticsearch/gradle/internal/test/rest/compat/compat/RestCompatTestTransformTask.java

@@ -457,15 +457,17 @@ public abstract class RestCompatTestTransformTask extends DefaultTask {
                     Collections.singletonList(new Skip(skippedFilesWithReason.get(file)))
                 );
             } else {
+                List<RestTestTransform<?>> transformations = new ArrayList<>(getTransformations().get());
+
                 if (skippedFilesWithTestAndReason.containsKey(file)) {
                     // skip the named tests for this file
                     skippedFilesWithTestAndReason.get(file).forEach(fullTestNameAndReasonPair -> {
                         String prefix = file.getName().replace(".yml", "/");
                         String singleTestName = fullTestNameAndReasonPair.getLeft().replaceAll(".*" + prefix, "");
-                        getTransformations().add(new Skip(singleTestName, fullTestNameAndReasonPair.getRight()));
+                        transformations.add(new Skip(singleTestName, fullTestNameAndReasonPair.getRight()));
                     });
                 }
-                transformRestTests = transformer.transformRestTests(new LinkedList<>(tests), getTransformations().get());
+                transformRestTests = transformer.transformRestTests(new LinkedList<>(tests), transformations);
             }
 
             // convert to url to ensure forward slashes

+ 4 - 3
x-pack/qa/xpack-prefix-rest-compat/build.gradle

@@ -34,10 +34,11 @@ tasks.named("copyRestCompatTestTask").configure { task ->
     task.dependsOn(configurations.compatXpackTests);
     task.setXpackConfig(configurations.compatXpackTests);
     task.getIncludeXpack().set(List.of("license", "migration", "ml", "rollup", "sql", "ssl"));
-    task.getOutputResourceDir().set(project.getLayout().getBuildDirectory().dir("restResources/v${compatVersion}/yamlTests/original"));
+    def fileOperations = task.getFileOperations()
+    task.getOutputResourceDir().set(project.getLayout().getBuildDirectory().dir("restResources/v${compatVersion}/yamlTests/original"))
     task.setXpackConfigToFileTree(
-      config -> fileTree(
-        config.getSingleFile().toPath()
+      config -> fileOperations.fileTree(
+        config.getSingleFile()
       )
     )
   }