diff options
author | 2017-01-23 18:29:47 +0000 | |
---|---|---|
committer | 2017-01-23 19:39:52 +0000 | |
commit | ca43c878a28bfd183933a6228cbad937d9c79f2a (patch) | |
tree | 5deb957df4ed31f43ee193dfac0a9581958985ad /src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java | |
parent | 7a089cf25bcc2972f95d14cbb5b73b4eb668cee2 (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.java | 26 |
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); + } } |