Improve file filter for insecure repo tests (#51121) (#51170)

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`.
This commit is contained in:
Jay Modi 2020-01-17 10:56:22 -07:00 committed by GitHub
parent fee1a9528c
commit ccf3e443b5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 1 deletions

View File

@ -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);