From 944d4f754446dba33a83b003035fbae32f855bd0 Mon Sep 17 00:00:00 2001 From: ajmichael Date: Thu, 30 Nov 2017 15:31:32 -0800 Subject: Automated rollback of commit a7a9d56539a467ef095d3003a16d33922d9505a5. *** Reason for rollback *** Breaks lots of web_test targets (b/69963706) *** Original change description *** Implemented fix for case when 'use_testrunner' attribute works interconnected with 'main_class' in java_test rule. for manual testing I used BUILD file: java_test( name = "mytest", srcs = glob(["*.java"]), main_class = "com.test.Test", use_testrunner = 1, ) RELNOTES: java_tests no complain when use_testrunner is explicitly set to 1 and main_class is set. PiperOrigin-RevId: 177517757 --- .../lib/bazel/rules/java/BazelJavaTestRule.java | 5 +---- .../devtools/build/lib/rules/java/JavaBinary.java | 10 ---------- .../build/lib/rules/java/JavaRuleClasses.java | 20 ++++---------------- 3 files changed, 5 insertions(+), 30 deletions(-) (limited to 'src/main/java/com/google/devtools/build') diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java index 179bbc12d7..e309112ca0 100644 --- a/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java +++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/java/BazelJavaTestRule.java @@ -31,7 +31,6 @@ import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.TriState; import com.google.devtools.build.lib.rules.java.JavaConfiguration; -import com.google.devtools.build.lib.rules.java.JavaRuleClasses; import com.google.devtools.build.lib.rules.java.JavaSemantics; import com.google.devtools.build.lib.rules.java.Jvm; @@ -59,9 +58,7 @@ public final class BazelJavaTestRule implements RuleDefinition { .add(attr(":proguard", LABEL).cfg(HOST).value(JavaSemantics.PROGUARD).exec()) .add(attr(":extra_proguard_specs", LABEL_LIST).value(JavaSemantics.EXTRA_PROGUARD_SPECS)) .override(attr("stamp", TRISTATE).value(TriState.NO)) - .override( - attr("use_testrunner", BOOLEAN) - .value(JavaRuleClasses.createUseTestrunnerComputedDefault())) + .override(attr("use_testrunner", BOOLEAN).value(true)) .override(attr(":java_launcher", LABEL).value(JavaSemantics.JAVA_LAUNCHER)) // Input files for test actions collecting code coverage .add( diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java index 80249e9f24..ed229fee77 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaBinary.java @@ -97,8 +97,6 @@ public class JavaBinary implements RuleConfiguredTargetFactory { } } - validateTestMainClass(ruleContext); - semantics.checkRule(ruleContext, common); semantics.checkForProtoLibraryAndJavaProtoLibraryOnSameProto(ruleContext, common); String mainClass = semantics.getMainClass(ruleContext, common.getSrcsArtifacts()); @@ -456,14 +454,6 @@ public class JavaBinary implements RuleConfiguredTargetFactory { .build(); } - private void validateTestMainClass(RuleContext ruleContext) { - boolean useTestrunner = ruleContext.attributes().get("use_testrunner", Type.BOOLEAN); - if (useTestrunner - && ruleContext.attributes().isAttributeValueExplicitlySpecified("main_class")) { - ruleContext.ruleError("cannot use use_testrunner with main_class specified."); - } - } - // Create the deploy jar and make it dependent on the runfiles middleman if an executable is // created. Do not add the deploy jar to files to build, so we will only build it when it gets // requested. diff --git a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java index 780f71ec12..3afa1f5c37 100644 --- a/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java +++ b/src/main/java/com/google/devtools/build/lib/rules/java/JavaRuleClasses.java @@ -21,18 +21,15 @@ import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.analysis.RuleDefinition; import com.google.devtools.build.lib.analysis.RuleDefinitionEnvironment; import com.google.devtools.build.lib.analysis.platform.ToolchainInfo; -import com.google.devtools.build.lib.packages.Attribute; -import com.google.devtools.build.lib.packages.Attribute.ComputedDefault; -import com.google.devtools.build.lib.packages.AttributeMap; import com.google.devtools.build.lib.packages.RuleClass; import com.google.devtools.build.lib.packages.RuleClass.Builder; import com.google.devtools.build.lib.packages.RuleClass.Builder.RuleClassType; import com.google.devtools.build.lib.packages.SkylarkProviderIdentifier; -/** Common rule class definitions for Java rules. */ -public final class JavaRuleClasses { - private JavaRuleClasses() {} - +/** + * Common rule class definitions for Java rules. + */ +public class JavaRuleClasses { /** * Common attributes for rules that depend on ijar. */ @@ -58,15 +55,6 @@ public final class JavaRuleClasses { } } - public static Attribute.ComputedDefault createUseTestrunnerComputedDefault() { - return new ComputedDefault() { - @Override - public Object getDefault(AttributeMap rule) { - return !rule.isAttributeValueExplicitlySpecified("main_class"); - } - }; - } - /** * Meant to be an element of {@code mandatoryProvidersLists} in order to accept rules providing a * {@link JavaInfo} through an attribute. Other providers can be included in {@code -- cgit v1.2.3