diff options
author | 2016-10-19 09:56:43 +0000 | |
---|---|---|
committer | 2016-10-19 10:53:07 +0000 | |
commit | e6191f7209ebf3f67480bc7aa9db5ac58beb2156 (patch) | |
tree | 2cfbec84aeb326362061af66e6beba7f578ab9e5 /src/main/java/com/google/devtools/build | |
parent | 47fc5b3406c6106b3025534af18c122d7321b861 (diff) |
Rollback of commit a9f20b0d6459d395444c45cf5e94a899f3443633.
*** 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.html | 6 | ||||
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/bazel/rules/BazelRuleClassProvider.java | 26 |
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) { |