aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2017-03-24 15:44:24 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2017-03-27 11:35:07 +0000
commit8a638d58259b4251c52cd9561588573911db0c1f (patch)
tree9f39576aef91c2ade9b6ecd71691390c7203be02 /src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
parent74e90608de56759247c12f0eabfdcf26b0cfd19f (diff)
Unit tests respect top-level rule-class transitions.
-- PiperOrigin-RevId: 151129669 MOS_MIGRATED_REVID=151129669
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/BuildView.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/analysis/BuildView.java35
1 files changed, 32 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
index 6043cda299..3431013053 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/BuildView.java
@@ -54,8 +54,12 @@ import com.google.devtools.build.lib.packages.AspectClass;
import com.google.devtools.build.lib.packages.AspectDescriptor;
import com.google.devtools.build.lib.packages.AspectParameters;
import com.google.devtools.build.lib.packages.Attribute;
+import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
+import com.google.devtools.build.lib.packages.Attribute.Transition;
import com.google.devtools.build.lib.packages.BuildType;
import com.google.devtools.build.lib.packages.NativeAspectClass;
+import com.google.devtools.build.lib.packages.NoSuchPackageException;
+import com.google.devtools.build.lib.packages.NoSuchTargetException;
import com.google.devtools.build.lib.packages.NoSuchThingException;
import com.google.devtools.build.lib.packages.PackageSpecification;
import com.google.devtools.build.lib.packages.RawAttributeMapper;
@@ -1088,14 +1092,39 @@ public class BuildView {
return result;
}
+ private Transition getTopLevelTransitionForTarget(Label label, ExtendedEventHandler handler) {
+ Rule rule;
+ try {
+ rule = skyframeExecutor
+ .getPackageManager()
+ .getTarget(handler, label)
+ .getAssociatedRule();
+ } catch (NoSuchPackageException | NoSuchTargetException e) {
+ return ConfigurationTransition.NONE;
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new AssertionError("Configuration of " + label + " interrupted");
+ }
+ if (rule == null) {
+ return ConfigurationTransition.NONE;
+ }
+ RuleTransitionFactory factory = rule
+ .getRuleClassObject()
+ .getTransitionFactory();
+ return (factory == null) ? ConfigurationTransition.NONE : factory.buildTransitionFor(rule);
+ }
+
/**
- * Returns a configured target for the specified target and configuration. Returns {@code null} if
- * something goes wrong.
+ * Returns a configured target for the specified target and configuration. If dynamic
+ * configurations are activated, and the target in question has a top-level rule class transition,
+ * that transition is applied in the returned ConfiguredTarget. Returns {@code null} if something
+ * goes wrong.
*/
@VisibleForTesting
public ConfiguredTarget getConfiguredTargetForTesting(
ExtendedEventHandler eventHandler, Label label, BuildConfiguration config) {
- return skyframeExecutor.getConfiguredTargetForTesting(eventHandler, label, config);
+ return skyframeExecutor.getConfiguredTargetForTesting(eventHandler, label, config,
+ getTopLevelTransitionForTarget(label, eventHandler));
}
/**