Browse Source

Improve file filter for insecure repo tests (#51121)

Tests in BuildPluginIT copy the workspace but exclude the build
directories based on whether the directory string representation
includes `/build/` or not. This check is problematic if the directory
of the project has a parent directory also named `build`. The change in
this commit checks to see if the path relative to the project directory
has any path parts equal to `build`.
Jay Modi 5 years ago
parent
commit
0f7f1eca38
1 changed files with 11 additions and 1 deletions
  1. 11 1
      buildSrc/src/test/java/org/elasticsearch/gradle/BuildPluginIT.java

+ 11 - 1
buildSrc/src/test/java/org/elasticsearch/gradle/BuildPluginIT.java

@@ -31,6 +31,7 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.List;
 import java.util.zip.ZipEntry;
@@ -84,7 +85,16 @@ public class BuildPluginIT extends GradleIntegrationTestCase {
 
     private void runInsecureArtifactRepositoryTest(final String name, final String url, final List<String> lines) throws IOException {
         final File projectDir = getProjectDir("elasticsearch.build");
-        FileUtils.copyDirectory(projectDir, tmpDir.getRoot(), pathname -> pathname.getPath().contains("/build/") == false);
+        final Path projectDirPath = projectDir.toPath();
+        FileUtils.copyDirectory(projectDir, tmpDir.getRoot(), file -> {
+            final Path relativePath = projectDirPath.relativize(file.toPath());
+            for (Path segment : relativePath) {
+                if (segment.toString().equals("build")) {
+                    return false;
+                }
+            }
+            return true;
+        });
         final List<String> buildGradleLines = Files.readAllLines(tmpDir.getRoot().toPath().resolve("build.gradle"), StandardCharsets.UTF_8);
         buildGradleLines.addAll(lines);
         Files.write(tmpDir.getRoot().toPath().resolve("build.gradle"), buildGradleLines, StandardCharsets.UTF_8);