Cleanup: move remaining AnalysisFailureInfo tests into AnalysisFailureInfoTest.java
Followup to https://github.com/bazelbuild/bazel/commit/01183bcaae4a77b6c7577aedda02cd5aa4ef0755
PiperOrigin-RevId: 442099160
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureInfoTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureInfoTest.java
index 502ca63..6cf883e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureInfoTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AnalysisFailureInfoTest.java
@@ -17,6 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
import com.google.common.collect.ImmutableList;
+import com.google.common.truth.Correspondence;
import com.google.devtools.build.lib.analysis.test.AnalysisFailure;
import com.google.devtools.build.lib.analysis.test.AnalysisFailureInfo;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
@@ -37,7 +38,6 @@
* Tests verifying analysis failure propagation via {@link AnalysisFailureInfo} when {@code
* --allow_analysis_failures=true}.
*/
-// TODO(arostovtsev): move all other `--allow_analysis_failures`-related test cases here.
@RunWith(JUnit4.class)
public final class AnalysisFailureInfoTest extends BuildViewTestCase {
@@ -123,4 +123,220 @@
TestRuleClassProvider.addStandardRules(builder);
return builder.build();
}
+
+ private static final Correspondence<AnalysisFailure, AnalysisFailure>
+ analysisFailureCorrespondence =
+ Correspondence.from(
+ (actual, expected) ->
+ actual.getLabel().equals(expected.getLabel())
+ && actual.getMessage().contains(expected.getMessage()),
+ "is equivalent to");
+
+ @Test
+ public void starlarkRuleFailure() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_rule_impl(ctx):",
+ " fail('This Is My Failure Message')",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl)");
+
+ scratch.file(
+ "test/BUILD", "load('//test:extension.bzl', 'custom_rule')", "", "custom_rule(name = 'r')");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:r");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
+ assertThat(failure.getMessage()).contains("This Is My Failure Message");
+ assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
+ }
+
+ @Test
+ public void starlarkRuleFailure_forTest() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_rule_impl(ctx):",
+ " fail('This Is My Failure Message')",
+ "",
+ "custom_test = rule(implementation = custom_rule_impl,",
+ " test = True)");
+
+ scratch.file(
+ "test/BUILD", "load('//test:extension.bzl', 'custom_test')", "", "custom_test(name = 'r')");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:r");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
+ assertThat(failure.getMessage()).contains("This Is My Failure Message");
+ assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
+ }
+
+ @Test
+ public void starlarkRuleFailure_withOutput() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_rule_impl(ctx):",
+ " fail('This Is My Failure Message')",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl,",
+ " outputs = {'my_output': '%{name}.txt'})");
+
+ scratch.file(
+ "test/BUILD", "load('//test:extension.bzl', 'custom_rule')", "", "custom_rule(name = 'r')");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:r");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
+ assertThat(failure.getMessage()).contains("This Is My Failure Message");
+ assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
+ }
+
+ @Test
+ public void transitiveStarlarkRuleFailure() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_rule_impl(ctx):",
+ " fail('This Is My Failure Message')",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl)",
+ "",
+ "def depending_rule_impl(ctx):",
+ " return []",
+ "",
+ "depending_rule = rule(implementation = depending_rule_impl,",
+ " attrs = {'deps' : attr.label_list()})");
+
+ scratch.file(
+ "test/BUILD",
+ "load('//test:extension.bzl', 'custom_rule', 'depending_rule')",
+ "",
+ "custom_rule(name = 'one')",
+ "custom_rule(name = 'two')",
+ "depending_rule(name = 'failures_are_direct_deps',",
+ " deps = [':one', ':two'])",
+ "depending_rule(name = 'failures_are_indirect_deps',",
+ " deps = [':failures_are_direct_deps'])");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:failures_are_indirect_deps");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+
+ AnalysisFailure expectedOne =
+ new AnalysisFailure(
+ Label.parseAbsoluteUnchecked("//test:one"), "This Is My Failure Message");
+ AnalysisFailure expectedTwo =
+ new AnalysisFailure(
+ Label.parseAbsoluteUnchecked("//test:two"), "This Is My Failure Message");
+
+ assertThat(info.getCausesNestedSet().toList())
+ .comparingElementsUsing(analysisFailureCorrespondence)
+ .containsExactly(expectedOne, expectedTwo);
+ }
+
+ @Test
+ public void starlarkAspectFailure() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_aspect_impl(target, ctx):",
+ " fail('This Is My Aspect Failure Message')",
+ "",
+ "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
+ "",
+ "def custom_rule_impl(ctx):",
+ " return []",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl,",
+ " attrs = {'deps' : attr.label_list(aspects = [custom_aspect])})");
+ scratch.file(
+ "test/BUILD",
+ "load('//test:extension.bzl', 'custom_rule')",
+ "",
+ "custom_rule(name = 'one')",
+ "custom_rule(name = 'two', deps = [':one'])");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:two");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure expectedOne =
+ new AnalysisFailure(
+ Label.parseAbsoluteUnchecked("//test:one"), "This Is My Aspect Failure Message");
+
+ assertThat(info.getCausesNestedSet().toList())
+ .comparingElementsUsing(analysisFailureCorrespondence)
+ .containsExactly(expectedOne);
+ }
+
+ @Test
+ public void transitiveStarlarkAspectFailure() throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_aspect_impl(target, ctx):",
+ " if hasattr(ctx.rule.attr, 'kaboom') and ctx.rule.attr.kaboom:",
+ " fail('This Is My Aspect Failure Message')",
+ " return []",
+ "",
+ "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
+ "",
+ "def custom_rule_impl(ctx):",
+ " return []",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl,",
+ " attrs = {'deps' : attr.label_list(aspects = [custom_aspect]),",
+ " 'kaboom' : attr.bool()})");
+ scratch.file(
+ "test/BUILD",
+ "load('//test:extension.bzl', 'custom_rule')",
+ "",
+ "custom_rule(name = 'one', kaboom = True)",
+ "custom_rule(name = 'two', deps = [':one'])",
+ "custom_rule(name = 'three', deps = [':two'])");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:three");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure expectedOne =
+ new AnalysisFailure(
+ Label.parseAbsoluteUnchecked("//test:one"), "This Is My Aspect Failure Message");
+
+ assertThat(info.getCausesNestedSet().toList())
+ .comparingElementsUsing(analysisFailureCorrespondence)
+ .containsExactly(expectedOne);
+ }
+
+ @Test
+ public void starlarkAspectAndRuleFailure_analysisFailureInfoPropagatesOnlyFromRuleFailure()
+ throws Exception {
+ scratch.file(
+ "test/extension.bzl",
+ "def custom_aspect_impl(target, ctx):",
+ " fail('This Is My Aspect Failure Message')",
+ "",
+ "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
+ "",
+ "def custom_rule_impl(ctx):",
+ " fail('This Is My Rule Failure Message')",
+ "",
+ "custom_rule = rule(implementation = custom_rule_impl,",
+ " attrs = {'deps' : attr.label_list(aspects = [custom_aspect])})");
+ scratch.file(
+ "test/BUILD",
+ "load('//test:extension.bzl', 'custom_rule')",
+ "",
+ "custom_rule(name = 'one')",
+ "custom_rule(name = 'two', deps = [':one'])");
+
+ ConfiguredTarget target = getConfiguredTarget("//test:two");
+ AnalysisFailureInfo info =
+ (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
+ AnalysisFailure expectedRuleFailure =
+ new AnalysisFailure(
+ Label.parseAbsoluteUnchecked("//test:one"), "This Is My Rule Failure Message");
+
+ assertThat(info.getCausesNestedSet().toList())
+ .comparingElementsUsing(analysisFailureCorrespondence)
+ .containsExactly(expectedRuleFailure);
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/BUILD b/src/test/java/com/google/devtools/build/lib/starlark/BUILD
index f6c6625..3f23707 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/starlark/BUILD
@@ -41,15 +41,12 @@
"//src/main/java/com/google/devtools/build/lib/analysis:analysis_cluster",
"//src/main/java/com/google/devtools/build/lib/analysis:config/host_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:config/starlark_defined_config_transition",
- "//src/main/java/com/google/devtools/build/lib/analysis:config/toolchain_type_requirement",
"//src/main/java/com/google/devtools/build/lib/analysis:config/transitions/no_transition",
"//src/main/java/com/google/devtools/build/lib/analysis:configured_target",
"//src/main/java/com/google/devtools/build/lib/analysis:file_provider",
"//src/main/java/com/google/devtools/build/lib/analysis:resolved_toolchain_context",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/args",
"//src/main/java/com/google/devtools/build/lib/analysis:starlark/starlark_exec_group_collection",
- "//src/main/java/com/google/devtools/build/lib/analysis:test/analysis_failure",
- "//src/main/java/com/google/devtools/build/lib/analysis:test/analysis_failure_info",
"//src/main/java/com/google/devtools/build/lib/analysis:test/analysis_test_result_info",
"//src/main/java/com/google/devtools/build/lib/analysis:test/instrumented_files_info",
"//src/main/java/com/google/devtools/build/lib/analysis:transitive_info_collection",
diff --git a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
index 78ebdfd..c7ffc30 100644
--- a/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/starlark/StarlarkIntegrationTest.java
@@ -22,7 +22,6 @@
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
-import com.google.common.truth.Correspondence;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredRuleClassProvider;
@@ -36,8 +35,6 @@
import com.google.devtools.build.lib.analysis.configuredtargets.RuleConfiguredTarget;
import com.google.devtools.build.lib.analysis.starlark.StarlarkAttributeTransitionProvider;
import com.google.devtools.build.lib.analysis.starlark.StarlarkRuleTransitionProvider;
-import com.google.devtools.build.lib.analysis.test.AnalysisFailure;
-import com.google.devtools.build.lib.analysis.test.AnalysisFailureInfo;
import com.google.devtools.build.lib.analysis.test.AnalysisTestResultInfo;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesInfo;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
@@ -98,14 +95,6 @@
return (StructImpl) configuredTarget.get(key);
}
- private static final Correspondence<AnalysisFailure, AnalysisFailure>
- analysisFailureCorrespondence =
- Correspondence.from(
- (actual, expected) ->
- actual.getLabel().equals(expected.getLabel())
- && actual.getMessage().contains(expected.getMessage()),
- "is equivalent to");
-
@Test
public void testRemoteLabelAsDefaultAttributeValue() throws Exception {
scratch.file(
@@ -2142,231 +2131,6 @@
}
@Test
- public void testAnalysisFailureInfo() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_rule_impl(ctx):",
- " fail('This Is My Failure Message')",
- "",
- "custom_rule = rule(implementation = custom_rule_impl)");
-
- scratch.file(
- "test/BUILD",
- "load('//test:extension.bzl', 'custom_rule')",
- "",
- "custom_rule(name = 'r')");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:r");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
- assertThat(failure.getMessage()).contains("This Is My Failure Message");
- assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
- }
-
- @Test
- public void testAnalysisFailureInfo_forTest() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_rule_impl(ctx):",
- " fail('This Is My Failure Message')",
- "",
- "custom_test = rule(implementation = custom_rule_impl,",
- " test = True)");
-
- scratch.file(
- "test/BUILD", "load('//test:extension.bzl', 'custom_test')", "", "custom_test(name = 'r')");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:r");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
- assertThat(failure.getMessage()).contains("This Is My Failure Message");
- assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
- }
-
- @Test
- public void testAnalysisFailureInfoWithOutput() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_rule_impl(ctx):",
- " fail('This Is My Failure Message')",
- "",
- "custom_rule = rule(implementation = custom_rule_impl,",
- " outputs = {'my_output': '%{name}.txt'})");
-
- scratch.file(
- "test/BUILD", "load('//test:extension.bzl', 'custom_rule')", "", "custom_rule(name = 'r')");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:r");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure failure = info.getCauses().getSet(AnalysisFailure.class).toList().get(0);
- assertThat(failure.getMessage()).contains("This Is My Failure Message");
- assertThat(failure.getLabel()).isEqualTo(Label.parseAbsoluteUnchecked("//test:r"));
- }
-
- @Test
- public void testTransitiveAnalysisFailureInfo() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_rule_impl(ctx):",
- " fail('This Is My Failure Message')",
- "",
- "custom_rule = rule(implementation = custom_rule_impl)",
- "",
- "def depending_rule_impl(ctx):",
- " return []",
- "",
- "depending_rule = rule(implementation = depending_rule_impl,",
- " attrs = {'deps' : attr.label_list()})");
-
- scratch.file(
- "test/BUILD",
- "load('//test:extension.bzl', 'custom_rule', 'depending_rule')",
- "",
- "custom_rule(name = 'one')",
- "custom_rule(name = 'two')",
- "depending_rule(name = 'failures_are_direct_deps',",
- " deps = [':one', ':two'])",
- "depending_rule(name = 'failures_are_indirect_deps',",
- " deps = [':failures_are_direct_deps'])");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:failures_are_indirect_deps");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
-
- AnalysisFailure expectedOne =
- new AnalysisFailure(
- Label.parseAbsoluteUnchecked("//test:one"), "This Is My Failure Message");
- AnalysisFailure expectedTwo =
- new AnalysisFailure(
- Label.parseAbsoluteUnchecked("//test:two"), "This Is My Failure Message");
-
- assertThat(info.getCausesNestedSet().toList())
- .comparingElementsUsing(analysisFailureCorrespondence)
- .containsExactly(expectedOne, expectedTwo);
- }
-
- @Test
- public void analysisFailureInfo_fromFailingAspect() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_aspect_impl(target, ctx):",
- " fail('This Is My Aspect Failure Message')",
- "",
- "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
- "",
- "def custom_rule_impl(ctx):",
- " return []",
- "",
- "custom_rule = rule(implementation = custom_rule_impl,",
- " attrs = {'deps' : attr.label_list(aspects = [custom_aspect])})");
- scratch.file(
- "test/BUILD",
- "load('//test:extension.bzl', 'custom_rule')",
- "",
- "custom_rule(name = 'one')",
- "custom_rule(name = 'two', deps = [':one'])");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:two");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure expectedOne =
- new AnalysisFailure(
- Label.parseAbsoluteUnchecked("//test:one"), "This Is My Aspect Failure Message");
-
- assertThat(info.getCausesNestedSet().toList())
- .comparingElementsUsing(analysisFailureCorrespondence)
- .containsExactly(expectedOne);
- }
-
- @Test
- public void analysisFailureInfo_fromTransitivelyFailingAspect() throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_aspect_impl(target, ctx):",
- " if hasattr(ctx.rule.attr, 'kaboom') and ctx.rule.attr.kaboom:",
- " fail('This Is My Aspect Failure Message')",
- " return []",
- "",
- "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
- "",
- "def custom_rule_impl(ctx):",
- " return []",
- "",
- "custom_rule = rule(implementation = custom_rule_impl,",
- " attrs = {'deps' : attr.label_list(aspects = [custom_aspect]),",
- " 'kaboom' : attr.bool()})");
- scratch.file(
- "test/BUILD",
- "load('//test:extension.bzl', 'custom_rule')",
- "",
- "custom_rule(name = 'one', kaboom = True)",
- "custom_rule(name = 'two', deps = [':one'])",
- "custom_rule(name = 'three', deps = [':two'])");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:three");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure expectedOne =
- new AnalysisFailure(
- Label.parseAbsoluteUnchecked("//test:one"), "This Is My Aspect Failure Message");
-
- assertThat(info.getCausesNestedSet().toList())
- .comparingElementsUsing(analysisFailureCorrespondence)
- .containsExactly(expectedOne);
- }
-
- @Test
- public void analysisFailureInfo_withFailingAspectAndFailingRule_propagatesOnlyFromFailingRule()
- throws Exception {
- scratch.file(
- "test/extension.bzl",
- "def custom_aspect_impl(target, ctx):",
- " fail('This Is My Aspect Failure Message')",
- "",
- "custom_aspect = aspect(implementation = custom_aspect_impl, attr_aspects = ['deps'])",
- "",
- "def custom_rule_impl(ctx):",
- " fail('This Is My Rule Failure Message')",
- "",
- "custom_rule = rule(implementation = custom_rule_impl,",
- " attrs = {'deps' : attr.label_list(aspects = [custom_aspect])})");
- scratch.file(
- "test/BUILD",
- "load('//test:extension.bzl', 'custom_rule')",
- "",
- "custom_rule(name = 'one')",
- "custom_rule(name = 'two', deps = [':one'])");
-
- useConfiguration("--allow_analysis_failures=true");
-
- ConfiguredTarget target = getConfiguredTarget("//test:two");
- AnalysisFailureInfo info =
- (AnalysisFailureInfo) target.get(AnalysisFailureInfo.STARLARK_CONSTRUCTOR.getKey());
- AnalysisFailure expectedRuleFailure =
- new AnalysisFailure(
- Label.parseAbsoluteUnchecked("//test:one"), "This Is My Rule Failure Message");
-
- assertThat(info.getCausesNestedSet().toList())
- .comparingElementsUsing(analysisFailureCorrespondence)
- .containsExactly(expectedRuleFailure);
- }
-
- @Test
public void testTestResultInfo() throws Exception {
scratch.file(
"test/extension.bzl",