Skip to content

Commit

Permalink
Allow exec groups to inherit from the rule or other exec groups.
Browse files Browse the repository at this point in the history
Work towards bazelbuild#12006.

Add a "test" exec group for TestRunnerActions. This will allow users to set {"test.key", "value"} inside their exec properties and {"key", "value"} will propagate as to just TestRunnerActions.

This addresses user request bazelbuild#10799

This is a rollforward of c1ae939, which
was reverted in c266ac9.

Closes bazelbuild#13119.

PiperOrigin-RevId: 360168649
  • Loading branch information
katre authored and copybara-github committed Mar 1, 2021
1 parent f9a93fd commit 1e258d2
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,16 @@ public static LabelLateBoundDefault<BuildConfiguration> getCoverageOutputGenerat
return runUnder != null ? runUnder.getLabel() : null;
});

public static final String TEST_RUNNER_EXEC_GROUP = "test";

/**
* A base rule for all test rules.
*/
public static final class TestBaseRule implements RuleDefinition {
@Override
public RuleClass build(RuleClass.Builder builder, RuleDefinitionEnvironment env) {
return builder
.addExecGroup(TEST_RUNNER_EXEC_GROUP)
.requiresConfigurationFragments(TestConfiguration.class)
// TestConfiguration only needed to create TestAction and TestProvider
// Only necessary at top-level and can be skipped if trimmed.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,14 @@

package com.google.devtools.build.lib.analysis.test;

import static com.google.devtools.build.lib.analysis.BaseRuleClasses.TEST_RUNNER_EXEC_GROUP;
import static com.google.devtools.build.lib.packages.BuildType.LABEL;

import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.devtools.build.lib.actions.ActionInput;
import com.google.devtools.build.lib.actions.ActionOwner;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.RunfilesSupplier;
Expand Down Expand Up @@ -147,6 +149,11 @@ private boolean isPersistentTestRunner() {
&& persistentTestRunnerRunfiles != null;
}

private ActionOwner getOwner() {
ActionOwner owner = ruleContext.getActionOwner(TEST_RUNNER_EXEC_GROUP);
return owner == null ? ruleContext.getActionOwner() : owner;
}

/**
* Creates a test action and artifacts for the given rule. The test action will use the specified
* executable and runfiles.
Expand Down Expand Up @@ -403,7 +410,7 @@ private TestParams createTestAction(int shards)
boolean splitCoveragePostProcessing = testConfiguration.splitCoveragePostProcessing();
TestRunnerAction testRunnerAction =
new TestRunnerAction(
ruleContext.getActionOwner(),
getOwner(),
inputs,
testRunfilesSupplier,
testActionExecutable,
Expand Down

0 comments on commit 1e258d2

Please sign in to comment.