From ba2f39140735948e83168de7e8124cddc477d0f1 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Mon, 18 Jun 2018 08:54:36 -0700 Subject: Consider runfiles symlinks when computing Runfiles.getEmptyFilenames(). Runfiles.getEmptyFilenames() only considered the unconditional and pruning manifest artifacts for empty-file insertion. Actual manifest creation asks the empty files supplier for empty files over symlinks (but not root symlinks!), too. Change-Id: Ice69bbaa9e6169bff7ec5833ee7ef1b73049a4a7 Closes #5334. Change-Id: Ice69bbaa9e6169bff7ec5833ee7ef1b73049a4a7 PiperOrigin-RevId: 201002604 --- .../devtools/build/lib/analysis/RunfilesTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/test') diff --git a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java index 6e2e3a1850..54d215a31f 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/RunfilesTest.java @@ -432,4 +432,24 @@ public class RunfilesTest extends FoundationTestCase { assertThat(runfilesMerged.getExtraMiddlemen()) .containsExactlyElementsIn(ImmutableList.of(mm1, mm2)); } + + @Test + public void testGetEmptyFilenames() { + ArtifactRoot root = ArtifactRoot.asSourceRoot(Root.fromPath(scratch.resolve("/workspace"))); + Artifact artifact = new Artifact(PathFragment.create("my-artifact"), root); + Runfiles runfiles = + new Runfiles.Builder("TESTING") + .addArtifact(artifact) + .addSymlink(PathFragment.create("my-symlink"), artifact) + .addRootSymlink(PathFragment.create("my-root-symlink"), artifact) + .setEmptyFilesSupplier( + (manifestPaths) -> + manifestPaths + .stream() + .map((f) -> f.replaceName(f.getBaseName() + "-empty")) + .collect(ImmutableList.toImmutableList())) + .build(); + assertThat(runfiles.getEmptyFilenames()) + .containsExactly("my-artifact-empty", "my-symlink-empty"); + } } -- cgit v1.2.3