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
katre authored and copybara-github committed Mar 1, 2021

Verified

This commit was signed with the committer’s verified signature.
Julesssss Jules
1 parent f9a93fd commit 1e258d2
Showing 2 changed files with 11 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -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.
Original file line number Diff line number Diff line change
@@ -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;
@@ -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.
@@ -403,7 +410,7 @@ private TestParams createTestAction(int shards)
boolean splitCoveragePostProcessing = testConfiguration.splitCoveragePostProcessing();
TestRunnerAction testRunnerAction =
new TestRunnerAction(
ruleContext.getActionOwner(),
getOwner(),
inputs,
testRunfilesSupplier,
testActionExecutable,

0 comments on commit 1e258d2

Please sign in to comment.