aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Philipp Wollermann <philwo@google.com>2016-10-19 09:56:43 +0000
committerGravatar Philipp Wollermann <philwo@google.com>2016-10-19 10:53:07 +0000
commite6191f7209ebf3f67480bc7aa9db5ac58beb2156 (patch)
tree2cfbec84aeb326362061af66e6beba7f578ab9e5 /src/main/java/com/google/devtools/build
parent47fc5b3406c6106b3025534af18c122d7321b861 (diff)
*** Reason for rollback *** Broke Bazel CI: ERROR: /home/ci/workspace/Bazel/JAVA_VERSION/1.8/PLATFORM_NAME/linux-x86_64/src/BUILD:284:1: in filegroup rule //src:srcs: non-test target '//src:srcs' depends on testonly target '//src/java_tools/junitrunner/java/com/google/testing/junit/junit4:srcs' and doesn't have testonly attribute set. ERROR: Analysis of target '//scripts/packages:packages' failed; build aborted. http://ci.bazel.io/view/Bazel%20bootstrap%20and%20maintenance/job/Bazel/JAVA_VERSION=1.8,PLATFORM_NAME=linux-x86_64/923/console *** Original change description *** Enforce that non test-only targets cannot depends on test-only targets This behavior was not enforced since we open-sourced Bazel even though this was documented and the attributed existed. Also removed the incorrect part from the documentations: we do not enforce restrictions on javatests package. Fixes #1923. RELNOTES[INC]: Non test-only targets can no longer depends on test-only targets. -- MOS_MIGRATED_REVID=136574806
Diffstat (limited to 'src/main/java/com/google/devtools/build')
-rw-r--r--src/main/java/com/google/devtools/build/docgen/templates/attributes/common/testonly.html6
-rw-r--r--src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java26
2 files changed, 6 insertions, 26 deletions
diff --git a/src/main/java/com/google/devtools/build/docgen/templates/attributes/common/testonly.html b/src/main/java/com/google/devtools/build/docgen/templates/attributes/common/testonly.html
index 8d3efe9b94..ed26e6198f 100644
--- a/src/main/java/com/google/devtools/build/docgen/templates/attributes/common/testonly.html
+++ b/src/main/java/com/google/devtools/build/docgen/templates/attributes/common/testonly.html
@@ -16,6 +16,12 @@ are <code>testonly</code> by default.
</p>
<p>
+By virtue of
+<a href="${link package.default_testonly}"><code>default_testonly</code></a>,
+targets under <code>javatests</code> are <code>testonly</code> by default.
+</p>
+
+<p>
This attribute is intended to mean that the target should not be
contained in binaries that are released to production.
</p>
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
index baafa05bb3..f0c96becfa 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java
@@ -78,7 +78,6 @@ import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.ideinfo.AndroidStudioInfoAspect;
import com.google.devtools.build.lib.ideinfo.BazelAndroidStudioInfoSemantics;
import com.google.devtools.build.lib.packages.Attribute;
-import com.google.devtools.build.lib.packages.NonconfigurableAttributeMapper;
import com.google.devtools.build.lib.packages.PackageGroup;
import com.google.devtools.build.lib.packages.Rule;
import com.google.devtools.build.lib.packages.Target;
@@ -155,7 +154,6 @@ import com.google.devtools.build.lib.rules.repository.BindRule;
import com.google.devtools.build.lib.rules.repository.LocalRepositoryRule;
import com.google.devtools.build.lib.rules.repository.NewLocalRepositoryRule;
import com.google.devtools.build.lib.rules.repository.WorkspaceBaseRule;
-import com.google.devtools.build.lib.syntax.Type;
import com.google.devtools.build.lib.util.ResourceFileLoader;
import java.io.IOException;
@@ -179,7 +177,6 @@ public class BazelRuleClassProvider {
public void validate(RuleContext.Builder context,
ConfiguredTarget prerequisite, Attribute attribute) {
validateDirectPrerequisiteVisibility(context, prerequisite, attribute.getName());
- validateDirectPrerequisiteForTestOnly(context, prerequisite);
DeprecationValidator.validateDirectPrerequisiteForDeprecation(
context, context.getRule(), prerequisite, context.forAspect());
}
@@ -228,29 +225,6 @@ public class BazelRuleClassProvider {
+ "(they are only allowed in the visibility attribute)");
}
}
-
- private void validateDirectPrerequisiteForTestOnly(
- RuleContext.Builder context, ConfiguredTarget prerequisite) {
- Rule rule = context.getRule();
- Target prerequisiteTarget = prerequisite.getTarget();
- Label prerequisiteLabel = prerequisiteTarget.getLabel();
- String thisPackage = rule.getLabel().getPackageName();
-
- if (isTestOnlyRule(prerequisiteTarget) && !isTestOnlyRule(rule)) {
- String message = "non-test target '" + rule.getLabel() + "' depends on testonly target '"
- + prerequisiteLabel + "' and doesn't have testonly attribute set";
- if (thisPackage.startsWith("experimental/")) {
- context.ruleWarning(message);
- } else {
- context.ruleError(message);
- }
- }
- }
-
- private static boolean isTestOnlyRule(Target target) {
- return (target instanceof Rule)
- && (NonconfigurableAttributeMapper.of((Rule) target)).get("testonly", Type.BOOLEAN);
- }
}
public static void setup(ConfiguredRuleClassProvider.Builder builder) {