aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
diff options
context:
space:
mode:
authorGravatar Lukacs Berki <lberki@google.com>2015-07-31 07:20:37 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-08-04 09:05:52 +0000
commit29f527c414e0fdfc74a99a958414ea9151110a38 (patch)
tree455b6866a05f046b5187d13e5f39b4b81ae9c3fc /src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
parentda3cb806351e929becef19652c65d39efa61b9d9 (diff)
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
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java28
1 files changed, 28 insertions, 0 deletions
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<String, String> 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<String, String> 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();
+ }
}