aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skyframe
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2018-05-15 13:26:42 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-15 13:27:56 -0700
commit01306938bbfa78bf373f99338088c9311c62b3a5 (patch)
tree043d94c498966ac8ceaf7f4f8d12ad058f74fee9 /src/main/java/com/google/devtools/build/lib/skyframe
parentf817134b2e39af6873255cecdda1a1d7ff38e090 (diff)
Change TestSuiteExpansionValue to contain Labels instead of Targets.
PiperOrigin-RevId: 196719433
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skyframe')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java32
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java13
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java12
3 files changed, 33 insertions, 24 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
index 0bca5204f5..be4ad076ab 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseFunction.java
@@ -170,27 +170,24 @@ final class TargetPatternPhaseFunction implements SkyFunction {
LoadingPhaseRunner.maybeReportDeprecation(env.getListener(), targets.getTargets());
boolean preExpansionError = targets.hasError();
- ResolvedTargets.Builder<Target> expandedTargetsBuilder = ResolvedTargets.builder();
+ ResolvedTargets.Builder<Label> expandedLabelsBuilder = ResolvedTargets.builder();
for (Target target : targets.getTargets()) {
if (TargetUtils.isTestSuiteRule(target) && options.isExpandTestSuites()) {
SkyKey expansionKey =
Preconditions.checkNotNull(testExpansionKeys.get(target.getLabel()));
TestSuiteExpansionValue testExpansion =
(TestSuiteExpansionValue) expandedTests.get(expansionKey);
- expandedTargetsBuilder.merge(testExpansion.getTargets());
+ expandedLabelsBuilder.merge(testExpansion.getLabels());
} else {
- expandedTargetsBuilder.add(target);
+ expandedLabelsBuilder.add(target.getLabel());
}
}
- ResolvedTargets<Target> expandedTargets = expandedTargetsBuilder.build();
+ ResolvedTargets<Label> targetLabels = expandedLabelsBuilder.build();
+ ResolvedTargets<Target> expandedTargets =
+ TestSuiteExpansionFunction.labelsToTargets(
+ env, targetLabels.getTargets(), targetLabels.hasError());
Set<Target> testSuiteTargets =
Sets.difference(targets.getTargets(), expandedTargets.getTargets());
- ImmutableSet<Label> targetLabels =
- expandedTargets
- .getTargets()
- .stream()
- .map(Target::getLabel)
- .collect(ImmutableSet.toImmutableSet());
ImmutableSet<Label> testsToRunLabels = null;
if (testsToRun != null) {
testsToRunLabels =
@@ -201,7 +198,7 @@ final class TargetPatternPhaseFunction implements SkyFunction {
TargetPatternPhaseValue result =
new TargetPatternPhaseValue(
- targetLabels,
+ targetLabels.getTargets(),
testsToRunLabels,
targets.hasError(),
expandedTargets.hasError() || workspaceError,
@@ -363,15 +360,24 @@ final class TargetPatternPhaseFunction implements SkyFunction {
TestSuiteExpansionValue expandedSuitesValue = (TestSuiteExpansionValue) expandedSuites.get(
TestSuiteExpansionValue.key(value.getTargets().getTargets()));
if (pattern.isNegative()) {
- ResolvedTargets<Target> negativeTargets = expandedSuitesValue.getTargets();
+ ResolvedTargets<Target> negativeTargets =
+ TestSuiteExpansionFunction.labelsToTargets(
+ env,
+ expandedSuitesValue.getLabels().getTargets(),
+ expandedSuitesValue.getLabels().hasError());
testTargetsBuilder.filter(Predicates.not(Predicates.in(negativeTargets.getTargets())));
testTargetsBuilder.mergeError(negativeTargets.hasError());
} else {
- ResolvedTargets<Target> positiveTargets = expandedSuitesValue.getTargets();
+ ResolvedTargets<Target> positiveTargets =
+ TestSuiteExpansionFunction.labelsToTargets(
+ env,
+ expandedSuitesValue.getLabels().getTargets(),
+ expandedSuitesValue.getLabels().hasError());
testTargetsBuilder.addAll(positiveTargets.getTargets());
testTargetsBuilder.mergeError(positiveTargets.hasError());
}
}
+
testTargetsBuilder.filter(testFilter);
return testTargetsBuilder.build();
}
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
index 27343aabe7..a20168396b 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java
@@ -31,6 +31,7 @@ import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import javax.annotation.Nullable;
/**
@@ -52,20 +53,22 @@ final class TestSuiteExpansionFunction implements SkyFunction {
return null;
}
- Set<Target> result = new LinkedHashSet<>();
+ Set<Label> result = new LinkedHashSet<>();
boolean hasError = targets.hasError();
for (Target target : targets.getTargets()) {
if (TargetUtils.isTestRule(target)) {
- result.add(target);
+ result.add(target.getLabel());
} else if (TargetUtils.isTestSuiteRule(target)) {
TestsInSuiteValue value = (TestsInSuiteValue) testsInSuites.get(
TestsInSuiteValue.key(target, true));
if (value != null) {
- result.addAll(value.getTargets().getTargets());
+ result.addAll(value.getTargets().getTargets().stream()
+ .map(Target::getLabel)
+ .collect(Collectors.toList()));
hasError |= value.getTargets().hasError();
}
} else {
- result.add(target);
+ result.add(target.getLabel());
}
}
if (env.valuesMissing()) {
@@ -73,7 +76,7 @@ final class TestSuiteExpansionFunction implements SkyFunction {
}
// We use ResolvedTargets in order to associate an error flag; the result should never contain
// any filtered targets.
- return new TestSuiteExpansionValue(new ResolvedTargets<Target>(result, hasError));
+ return new TestSuiteExpansionValue(new ResolvedTargets<>(result, hasError));
}
static ResolvedTargets<Target> labelsToTargets(
diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
index d32af1a9b0..d35b19c40d 100644
--- a/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
+++ b/src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java
@@ -21,7 +21,6 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.cmdline.ResolvedTargets;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.concurrent.ThreadSafety.ThreadSafe;
-import com.google.devtools.build.lib.packages.Target;
import com.google.devtools.build.lib.skyframe.serialization.NotSerializableRuntimeException;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
import com.google.devtools.build.skyframe.SkyFunctionName;
@@ -39,16 +38,17 @@ import java.util.Collection;
@ThreadSafe
@VisibleForTesting
public final class TestSuiteExpansionValue implements SkyValue {
- private ResolvedTargets<Target> targets;
+ private ResolvedTargets<Label> labels;
- TestSuiteExpansionValue(ResolvedTargets<Target> targets) {
- this.targets = Preconditions.checkNotNull(targets);
+ TestSuiteExpansionValue(ResolvedTargets<Label> labels) {
+ this.labels = Preconditions.checkNotNull(labels);
}
- public ResolvedTargets<Target> getTargets() {
- return targets;
+ public ResolvedTargets<Label> getLabels() {
+ return labels;
}
+
@SuppressWarnings("unused")
private void writeObject(ObjectOutputStream out) {
throw new NotSerializableRuntimeException();