diff options
Diffstat (limited to 'src/main/java/com/google/devtools')
5 files changed, 32 insertions, 8 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingOptions.java b/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingOptions.java index 63938e9677..b67eceea1e 100644 --- a/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingOptions.java +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/LoadingOptions.java @@ -105,6 +105,15 @@ public class LoadingOptions extends OptionsBase { ) public List<String> testLangFilterList; + @Option(name = "build_manual_tests", + defaultValue = "false", + category = "what", + help = "Forces test targets tagged 'manual' to be built. " + + "'manual' tests are excluded from processing. This option forces " + + "them to be built (but not executed)." + ) + public boolean buildManualTests; + // If this option is set, the value of experimental_interleave_loading_and_analysis is completely // ignored. This enables a different LoadingPhaseRunner implementation which doesn't implement // the loading phase at all, and therefore can't currently support the other flag. If we roll this diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java b/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java index b2e4b5efb3..1fd16b1989 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/LegacyLoadingPhaseRunner.java @@ -134,7 +134,7 @@ public final class LegacyLoadingPhaseRunner extends LoadingPhaseRunner { ResolvedTargets<Target> targets = getTargetsToBuild( parseFailureListener, targetPatterns, options.compileOneDependency, - options.buildTagFilterList, keepGoing); + options.buildTagFilterList, options.buildManualTests, keepGoing); ImmutableSet<Target> filteredTargets = targets.getFilteredTargets(); @@ -268,6 +268,7 @@ public final class LegacyLoadingPhaseRunner extends LoadingPhaseRunner { * @param targetPatterns the list of command-line target patterns specified by the user * @param compileOneDependency if true, enables alternative interpretation of targetPatterns; see * {@link LoadingOptions#compileOneDependency} + * @param buildManualTests * @throws TargetParsingException if parsing failed and !keepGoing */ private ResolvedTargets<Target> getTargetsToBuild( @@ -275,11 +276,12 @@ public final class LegacyLoadingPhaseRunner extends LoadingPhaseRunner { List<String> targetPatterns, boolean compileOneDependency, List<String> buildTagFilterList, - boolean keepGoing) + boolean buildManualTests, boolean keepGoing) throws TargetParsingException, InterruptedException { ResolvedTargets<Target> evaluated = targetPatternEvaluator.parseTargetPatternList(eventHandler, targetPatterns, - FilteringPolicies.FILTER_MANUAL, keepGoing); + buildManualTests ? FilteringPolicies.NO_FILTER : FilteringPolicies.FILTER_MANUAL, + keepGoing); ResolvedTargets<Target> result = ResolvedTargets.<Target>builder() .merge(evaluated) diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java index 8734f3b34b..fa7fccc86c 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/SkyframeExecutor.java @@ -1908,6 +1908,7 @@ public abstract class SkyframeExecutor implements WalkableGraphFactory { relativeWorkingDirectory.getPathString(), options.compileOneDependency, options.buildTestsOnly, determineTests, ImmutableList.copyOf(options.buildTagFilterList), + options.buildManualTests, TestFilter.forOptions(options, eventHandler, ruleClassNames)); EvaluationResult<TargetPatternPhaseValue> evalResult; eventHandler.post(new LoadingPhaseStartedEvent(packageProgress)); 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 7a87ba202b..444fd4258a 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 @@ -189,7 +189,11 @@ final class TargetPatternPhaseFunction implements SkyFunction { Environment env, TargetPatternList options) throws InterruptedException { List<SkyKey> patternSkyKeys = new ArrayList<>(); for (TargetPatternSkyKeyOrException keyOrException : - TargetPatternValue.keys(options.getTargetPatterns(), FilteringPolicies.FILTER_MANUAL, + TargetPatternValue.keys( + options.getTargetPatterns(), + options.getBuildManualTests() + ? FilteringPolicies.NO_FILTER + : FilteringPolicies.FILTER_MANUAL, options.getOffset())) { try { patternSkyKeys.add(keyOrException.getSkyKey()); diff --git a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java index 7238ddbb94..085eacdc31 100644 --- a/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java +++ b/src/main/java/com/google/devtools/build/lib/skyframe/TargetPatternPhaseValue.java @@ -130,7 +130,7 @@ public final class TargetPatternPhaseValue implements SkyValue { public static SkyKey key(ImmutableList<String> targetPatterns, String offset, boolean compileOneDependency, boolean buildTestsOnly, boolean determineTests, ImmutableList<String> buildTargetFilter, - @Nullable TestFilter testFilter) { + boolean buildManualTests, @Nullable TestFilter testFilter) { return SkyKey.create( SkyFunctions.TARGET_PATTERN_PHASE, new TargetPatternList( @@ -140,7 +140,7 @@ public final class TargetPatternPhaseValue implements SkyValue { buildTestsOnly, determineTests, buildTargetFilter, - testFilter)); + buildManualTests, testFilter)); } /** @@ -155,17 +155,20 @@ public final class TargetPatternPhaseValue implements SkyValue { private final boolean buildTestsOnly; private final boolean determineTests; private final ImmutableList<String> buildTargetFilter; + private final boolean buildManualTests; @Nullable private final TestFilter testFilter; public TargetPatternList(ImmutableList<String> targetPatterns, String offset, boolean compileOneDependency, boolean buildTestsOnly, boolean determineTests, - ImmutableList<String> buildTargetFilter, @Nullable TestFilter testFilter) { + ImmutableList<String> buildTargetFilter, boolean buildManualTests, + @Nullable TestFilter testFilter) { this.targetPatterns = Preconditions.checkNotNull(targetPatterns); this.offset = Preconditions.checkNotNull(offset); this.compileOneDependency = compileOneDependency; this.buildTestsOnly = buildTestsOnly; this.determineTests = determineTests; this.buildTargetFilter = Preconditions.checkNotNull(buildTargetFilter); + this.buildManualTests = buildManualTests; this.testFilter = testFilter; if (buildTestsOnly || determineTests) { Preconditions.checkNotNull(testFilter); @@ -196,6 +199,10 @@ public final class TargetPatternPhaseValue implements SkyValue { return buildTargetFilter; } + public boolean getBuildManualTests() { + return buildManualTests; + } + public TestFilter getTestFilter() { return testFilter; } @@ -217,7 +224,7 @@ public final class TargetPatternPhaseValue implements SkyValue { @Override public int hashCode() { return Objects.hash(targetPatterns, offset, compileOneDependency, buildTestsOnly, - determineTests, testFilter); + determineTests, buildManualTests, testFilter); } @Override @@ -235,6 +242,7 @@ public final class TargetPatternPhaseValue implements SkyValue { && other.buildTestsOnly == buildTestsOnly && other.determineTests == determineTests && other.buildTargetFilter.equals(buildTargetFilter) + && other.buildManualTests == buildManualTests && Objects.equals(other.testFilter, testFilter); } } |