aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2017-01-23 18:29:47 +0000
committerGravatar John Cater <jcater@google.com>2017-01-23 19:39:52 +0000
commitca43c878a28bfd183933a6228cbad937d9c79f2a (patch)
tree5deb957df4ed31f43ee193dfac0a9581958985ad /src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
parent7a089cf25bcc2972f95d14cbb5b73b4eb668cee2 (diff)
Add getImplicitOutputArtifact to BuildViewTestCase. This vastly simplifies
finding actions based on intermediate artifacts. -- PiperOrigin-RevId: 145303065 MOS_MIGRATED_REVID=145303065
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.java26
1 files changed, 26 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 476f90dd67..3121bfcb5b 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
@@ -99,6 +99,7 @@ import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
import com.google.devtools.build.lib.packages.AttributeMap;
import com.google.devtools.build.lib.packages.ConstantRuleVisibility;
+import com.google.devtools.build.lib.packages.ImplicitOutputsFunction.SafeImplicitOutputsFunction;
import com.google.devtools.build.lib.packages.NativeAspectClass;
import com.google.devtools.build.lib.packages.NoSuchPackageException;
import com.google.devtools.build.lib.packages.NoSuchTargetException;
@@ -106,6 +107,7 @@ import com.google.devtools.build.lib.packages.OutputFile;
import com.google.devtools.build.lib.packages.PackageFactory;
import com.google.devtools.build.lib.packages.PackageFactory.EnvironmentExtension;
import com.google.devtools.build.lib.packages.Preprocessor;
+import com.google.devtools.build.lib.packages.RawAttributeMapper;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.packages.util.MockToolsConfig;
@@ -1811,4 +1813,28 @@ public abstract class BuildViewTestCase extends FoundationTestCase {
return result.build();
}
+
+ protected Artifact getImplicitOutputArtifact(
+ ConfiguredTarget target, SafeImplicitOutputsFunction outputFunction) {
+ Rule associatedRule = target.getTarget().getAssociatedRule();
+ RepositoryName repository = associatedRule.getRepository();
+ BuildConfiguration configuration = target.getConfiguration();
+
+ Root root;
+ if (associatedRule.hasBinaryOutput()) {
+ root = configuration.getBinDirectory(repository);
+ } else {
+ root = configuration.getGenfilesDirectory(repository);
+ }
+ ArtifactOwner owner =
+ new ConfiguredTargetKey(target.getTarget().getLabel(), target.getConfiguration());
+
+ RawAttributeMapper attr = RawAttributeMapper.of(associatedRule);
+
+ String path = Iterables.getOnlyElement(outputFunction.getImplicitOutputs(attr));
+
+ return view.getArtifactFactory()
+ .getDerivedArtifact(
+ target.getTarget().getLabel().getPackageFragment().getRelative(path), root, owner);
+ }
}