From 29f527c414e0fdfc74a99a958414ea9151110a38 Mon Sep 17 00:00:00 2001 From: Lukacs Berki Date: Fri, 31 Jul 2015 07:20:37 +0000 Subject: Build a symlink tree for Android native library symlinks so that libraries from previous builds with a different CPU do not end up in the APK. Fixes #344. -- MOS_MIGRATED_REVID=99550457 --- .../build/lib/analysis/util/BuildViewTestCase.java | 28 ++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/analysis') diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java index ab6f345d1d..9bf3959e3e 100644 --- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java +++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java @@ -20,6 +20,7 @@ import com.google.common.base.Function; import com.google.common.base.Preconditions; import com.google.common.base.Predicate; import com.google.common.base.Predicates; +import com.google.common.base.Splitter; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; @@ -62,6 +63,8 @@ import com.google.devtools.build.lib.analysis.RuleContext; import com.google.devtools.build.lib.analysis.Runfiles; import com.google.devtools.build.lib.analysis.RunfilesProvider; import com.google.devtools.build.lib.analysis.RunfilesSupport; +import com.google.devtools.build.lib.analysis.SourceManifestAction; +import com.google.devtools.build.lib.analysis.SymlinkTreeAction; import com.google.devtools.build.lib.analysis.TransitiveInfoCollection; import com.google.devtools.build.lib.analysis.TransitiveInfoProvider; import com.google.devtools.build.lib.analysis.WorkspaceStatusAction; @@ -140,6 +143,7 @@ import java.util.Collection; import java.util.Collections; import java.util.LinkedHashSet; import java.util.List; +import java.util.Map; import java.util.Set; import java.util.UUID; @@ -1510,4 +1514,28 @@ public abstract class BuildViewTestCase extends FoundationTestCase { private String convertLabelToPath(String label) { return label.replace(':', '/').substring(1); } + + protected Map getSymlinkTreeManifest(Artifact outputManifest) throws Exception { + SymlinkTreeAction symlinkTreeAction = (SymlinkTreeAction) getGeneratingAction(outputManifest); + Artifact inputManifest = Iterables.getOnlyElement(symlinkTreeAction.getInputs()); + SourceManifestAction inputManifestAction = + (SourceManifestAction) getGeneratingAction(inputManifest); + // Ask the manifest to write itself to a byte array so that we can + // read its contents. + ByteArrayOutputStream stream = new ByteArrayOutputStream(); + inputManifestAction.writeOutputFile(stream, reporter); + String contents = stream.toString(); + + // Get the file names from the manifest output. + ImmutableMap.Builder result = ImmutableMap.builder(); + for (String line : Splitter.on('\n').split(contents)) { + int space = line.indexOf(' '); + if (space < 0) { + continue; + } + result.put(line.substring(0, space), line.substring(space + 1)); + } + + return result.build(); + } } -- cgit v1.2.3