aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar Carmi Grushko <carmi@google.com>2015-11-19 21:13:34 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2015-11-20 09:18:43 +0000
commit28bc5f1538fa5d89b411560ca394732920e06227 (patch)
treed12a2031503e8b50ecd5c988c1f537335793c01c /src
parent214f6277779c2c6e203b6b955641227003eba54a (diff)
--
MOS_MIGRATED_REVID=108278075
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java18
2 files changed, 31 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
index 6bf19d3672..5e3269cab4 100644
--- a/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
+++ b/src/main/java/com/google/devtools/build/lib/rules/extra/ExtraAction.java
@@ -14,6 +14,7 @@
package com.google.devtools.build.lib.rules.extra;
+import com.google.common.base.Function;
import com.google.common.base.Preconditions;
import com.google.common.base.Predicates;
import com.google.common.collect.Collections2;
@@ -62,6 +63,18 @@ public final class ExtraAction extends SpawnAction {
@GuardedBy("this")
private boolean inputsKnown;
+ /**
+ * A long way to say (ExtraAction xa) -> xa.getShadowedAction().
+ */
+ public static final Function<ExtraAction, Action> GET_SHADOWED_ACTION =
+ new Function<ExtraAction, Action>() {
+ @Nullable
+ @Override
+ public Action apply(@Nullable ExtraAction extraAction) {
+ return extraAction != null ? extraAction.getShadowedAction() : null;
+ }
+ };
+
public ExtraAction(
ImmutableSet<Artifact> extraActionInputs,
Map<PathFragment, Artifact> runfilesManifests,
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 35de514551..c408d504a0 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
@@ -51,6 +51,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredAttributeMapper;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider;
+import com.google.devtools.build.lib.analysis.ExtraActionArtifactsProvider.ExtraArtifactSet;
import com.google.devtools.build.lib.analysis.FileConfiguredTarget;
import com.google.devtools.build.lib.analysis.FileProvider;
import com.google.devtools.build.lib.analysis.FilesToRunProvider;
@@ -1190,6 +1191,23 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return ImmutableList.copyOf(result);
}
+ /**
+ * Returns all extra actions for that target (including transitive actions).
+ */
+ protected ImmutableList<ExtraAction> getTransitiveExtraActionActions(ConfiguredTarget target) {
+ ImmutableList.Builder<ExtraAction> result = new ImmutableList.Builder<>();
+ for (ExtraArtifactSet set : target.getProvider(ExtraActionArtifactsProvider.class)
+ .getTransitiveExtraActionArtifacts()) {
+ for (Artifact artifact : set.getArtifacts()) {
+ Action action = getGeneratingAction(artifact);
+ if (action instanceof ExtraAction) {
+ result.add((ExtraAction) action);
+ }
+ }
+ }
+ return result.build();
+ }
+
protected ImmutableList<Action> getFilesToBuildActions(ConfiguredTarget target) {
List<Action> result = new ArrayList<>();
for (Artifact artifact : getFilesToBuild(target)) {