diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionFunction.java | 11 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/skyframe/TestSuiteExpansionValue.java | 11 |
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; } |