aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java11
-rw-r--r--src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java11
2 files changed, 14 insertions, 8 deletions
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 bba5946413..ad2cff7a29 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
@@ -55,8 +55,8 @@ final class TestSuiteExpansionFunction implements SkyFunction {
return null;
}
- ResolvedTargets.Builder<Target> result = ResolvedTargets.builder();
- result.mergeError(targets.hasError());
+ Set<Target> result = new LinkedHashSet<>();
+ boolean hasError = targets.hasError();
for (Target target : targets.getTargets()) {
if (TargetUtils.isTestRule(target)) {
result.add(target);
@@ -64,7 +64,8 @@ final class TestSuiteExpansionFunction implements SkyFunction {
TestsInSuiteValue value = (TestsInSuiteValue) testsInSuites.get(
TestsInSuiteValue.key(target, true));
if (value != null) {
- result.merge(value.getTargets());
+ result.addAll(value.getTargets().getTargets());
+ hasError |= value.getTargets().hasError();
}
} else {
result.add(target);
@@ -73,7 +74,9 @@ final class TestSuiteExpansionFunction implements SkyFunction {
if (env.valuesMissing()) {
return null;
}
- return new TestSuiteExpansionValue(result.build());
+ // 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));
}
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 4f108ba513..e0406ab940 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
@@ -16,6 +16,7 @@ package com.google.devtools.build.lib.skyframe;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.ImmutableSortedSet;
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;
@@ -27,6 +28,7 @@ import com.google.devtools.build.skyframe.SkyValue;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
+import java.util.Collection;
/**
* A value referring to a computed set of resolved targets. This is used for the results of target
@@ -67,8 +69,9 @@ public final class TestSuiteExpansionValue implements SkyValue {
* @param targets the set of targets to be expanded
*/
@ThreadSafe
- public static SkyKey key(ImmutableSet<Label> targets) {
- return new SkyKey(SkyFunctions.TEST_SUITE_EXPANSION, new TestSuiteExpansion(targets));
+ public static SkyKey key(Collection<Label> targets) {
+ return new SkyKey(SkyFunctions.TEST_SUITE_EXPANSION,
+ new TestSuiteExpansion(ImmutableSortedSet.copyOf(targets)));
}
/**
@@ -76,9 +79,9 @@ public final class TestSuiteExpansionValue implements SkyValue {
*/
@ThreadSafe
static final class TestSuiteExpansion implements Serializable {
- private final ImmutableSet<Label> targets;
+ private final ImmutableSortedSet<Label> targets;
- public TestSuiteExpansion(ImmutableSet<Label> targets) {
+ public TestSuiteExpansion(ImmutableSortedSet<Label> targets) {
this.targets = targets;
}