Create AnalysisFailureInfo for in-build failure testing.
This new object is tied to a new semantic flag, --experimental_analysis_testing_improvements
Progress toward #6237.
RELNOTES: None.
PiperOrigin-RevId: 215265415
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index 3dae2bc..ae89912 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -20,7 +20,11 @@
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.analysis.test.AnalysisFailure;
+import com.google.devtools.build.lib.analysis.test.AnalysisFailureInfo;
+import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
+import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.concurrent.ThreadSafety.Immutable;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.packages.NativeInfo;
@@ -2268,4 +2272,31 @@
"First argument of 'load' must be a label and start with either '//', ':', or '@'.",
"load(':foo.bzl', 'arg')");
}
+
+ @Test
+ public void testAnalysisFailureInfo() throws Exception {
+ AnalysisFailure cause = new AnalysisFailure(Label.create("test", "test"), "ErrorMessage");
+
+ AnalysisFailureInfo info = new AnalysisFailureInfo(
+ SkylarkNestedSet.of(
+ AnalysisFailure.class, NestedSetBuilder.create(Order.STABLE_ORDER, cause)));
+
+ new SkylarkTest("--experimental_analysis_testing_improvements=true")
+ .update("val", info)
+ .setUp(
+ "causes = val.causes",
+ "label = causes.to_list()[0].label",
+ "message = causes.to_list()[0].message")
+ .testLookup("label", Label.create("test", "test"))
+ .testLookup("message", "ErrorMessage");
+
+ new SkylarkTest()
+ .update("val", info)
+ .testIfErrorContains("'AnalysisFailureInfo' has no field 'causes'", "val.causes");
+
+ new SkylarkTest()
+ .update("val", cause)
+ .testIfErrorContains("'AnalysisFailure' has no field 'message'", "val.message")
+ .testIfErrorContains("'AnalysisFailure' has no field 'label'", "val.label");
+ }
}