Skip to content

Commit 10d4473

Browse files
committed
BuildViewForTesting should directly call into ConfiguredTargetFunction.
Previously it was trying to replicate the code, but wasn't exact. PiperOrigin-RevId: 372343711
1 parent d3d72e9 commit 10d4473

File tree

2 files changed

+9
-46
lines changed

2 files changed

+9
-46
lines changed

src/main/java/com/google/devtools/build/lib/skyframe/ConfiguredTargetFunction.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -462,7 +462,7 @@ public SkyValue compute(SkyKey key, Environment env) throws ConfiguredTargetFunc
462462
*/
463463
@VisibleForTesting
464464
@Nullable
465-
static ToolchainCollection<UnloadedToolchainContext> computeUnloadedToolchainContexts(
465+
public static ToolchainCollection<UnloadedToolchainContext> computeUnloadedToolchainContexts(
466466
Environment env,
467467
RuleClassProvider ruleClassProvider,
468468
BuildOptions defaultBuildOptions,

src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewForTesting.java

+8-45
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,6 @@
7070
import com.google.devtools.build.lib.events.StoredEventHandler;
7171
import com.google.devtools.build.lib.packages.Attribute;
7272
import com.google.devtools.build.lib.packages.BuildType;
73-
import com.google.devtools.build.lib.packages.ExecGroup;
7473
import com.google.devtools.build.lib.packages.NoSuchPackageException;
7574
import com.google.devtools.build.lib.packages.NoSuchTargetException;
7675
import com.google.devtools.build.lib.packages.PackageSpecification;
@@ -81,19 +80,17 @@
8180
import com.google.devtools.build.lib.skyframe.AspectValueKey.AspectKey;
8281
import com.google.devtools.build.lib.skyframe.BuildConfigurationValue;
8382
import com.google.devtools.build.lib.skyframe.ConfiguredTargetAndData;
83+
import com.google.devtools.build.lib.skyframe.ConfiguredTargetFunction;
8484
import com.google.devtools.build.lib.skyframe.ConfiguredTargetKey;
8585
import com.google.devtools.build.lib.skyframe.SkyFunctionEnvironmentForTesting;
8686
import com.google.devtools.build.lib.skyframe.SkyframeBuildView;
8787
import com.google.devtools.build.lib.skyframe.SkyframeExecutor;
8888
import com.google.devtools.build.lib.skyframe.TargetPatternPhaseValue;
89-
import com.google.devtools.build.lib.skyframe.ToolchainContextKey;
9089
import com.google.devtools.build.lib.skyframe.ToolchainException;
9190
import com.google.devtools.build.lib.skyframe.UnloadedToolchainContext;
9291
import com.google.devtools.build.lib.util.OrderedSetMultimap;
9392
import com.google.devtools.build.skyframe.SkyKey;
94-
import com.google.devtools.build.skyframe.ValueOrException;
9593
import java.util.Collection;
96-
import java.util.HashMap;
9794
import java.util.LinkedHashMap;
9895
import java.util.LinkedHashSet;
9996
import java.util.List;
@@ -511,51 +508,17 @@ public RuleContext getRuleContextForTesting(
511508
Event.error("Failed to get target when trying to get rule context for testing"));
512509
throw new IllegalStateException(e);
513510
}
514-
ImmutableSet<Label> requiredToolchains =
515-
target.getAssociatedRule().getRuleClassObject().getRequiredToolchains();
516-
ImmutableMap<String, ExecGroup> execGroups =
517-
target.getAssociatedRule().getRuleClassObject().getExecGroups();
511+
518512
SkyFunctionEnvironmentForTesting skyfunctionEnvironment =
519513
skyframeExecutor.getSkyFunctionEnvironmentForTesting(eventHandler);
520514

521-
Map<String, ToolchainContextKey> toolchainContextKeys = new HashMap<>();
522-
BuildConfigurationValue.Key configurationKey = BuildConfigurationValue.key(targetConfig);
523-
for (Map.Entry<String, ExecGroup> execGroup : execGroups.entrySet()) {
524-
toolchainContextKeys.put(
525-
execGroup.getKey(),
526-
ToolchainContextKey.key()
527-
.configurationKey(configurationKey)
528-
.requiredToolchainTypeLabels(execGroup.getValue().requiredToolchains())
529-
.build());
530-
}
531-
String targetUnloadedToolchainContextKey = "target-unloaded-toolchain-context";
532-
toolchainContextKeys.put(
533-
targetUnloadedToolchainContextKey,
534-
ToolchainContextKey.key()
535-
.configurationKey(configurationKey)
536-
.requiredToolchainTypeLabels(requiredToolchains)
537-
.build());
538-
539-
Map<SkyKey, ValueOrException<ToolchainException>> values =
540-
skyfunctionEnvironment.getValuesOrThrow(
541-
toolchainContextKeys.values(), ToolchainException.class);
542-
543-
ToolchainCollection.Builder<UnloadedToolchainContext> unloadedToolchainContexts =
544-
ToolchainCollection.builder();
545-
for (Map.Entry<String, ToolchainContextKey> unloadedToolchainContextKey :
546-
toolchainContextKeys.entrySet()) {
547-
UnloadedToolchainContext unloadedToolchainContext =
548-
(UnloadedToolchainContext) values.get(unloadedToolchainContextKey.getValue()).get();
549-
String execGroup = unloadedToolchainContextKey.getKey();
550-
if (execGroup.equals(targetUnloadedToolchainContextKey)) {
551-
unloadedToolchainContexts.addDefaultContext(unloadedToolchainContext);
552-
} else {
553-
unloadedToolchainContexts.addContext(execGroup, unloadedToolchainContext);
554-
}
555-
}
556-
557515
ToolchainCollection<UnloadedToolchainContext> unloadedToolchainCollection =
558-
unloadedToolchainContexts.build();
516+
ConfiguredTargetFunction.computeUnloadedToolchainContexts(
517+
skyfunctionEnvironment,
518+
ruleClassProvider,
519+
skyframeExecutor.getDefaultBuildOptions(),
520+
new TargetAndConfiguration(target.getAssociatedRule(), targetConfig),
521+
null);
559522

560523
OrderedSetMultimap<DependencyKind, ConfiguredTargetAndData> prerequisiteMap =
561524
getPrerequisiteMapForTesting(

0 commit comments

Comments
 (0)