aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Marian Lobur <loburm@google.com>2015-09-14 08:44:25 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2015-09-14 15:39:33 +0000
commitfc567b333e4bb6d2f5f64024c4adba1f446da3b4 (patch)
tree7bcc1b83883e454a632d8383d28624d78d43d264 /src/test/java/com/google/devtools/build
parentc9e52201d11765638101e570664b09eaf1357cbd (diff)
Fix a bug, when we have dependency from one aspect to another aspect1->aspect2 and aspect2 fails then aspect1 throws IllegalStateException.
-- MOS_MIGRATED_REVID=102976139
Diffstat (limited to 'src/test/java/com/google/devtools/build')
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java23
-rw-r--r--src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java2
2 files changed, 25 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
index 02b4f3e1dc..b051db1a8c 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/AspectTest.java
@@ -126,6 +126,29 @@ public class AspectTest extends AnalysisTestCase {
}
@Test
+ public void transitiveAspectInError() throws Exception {
+ setRules(new TestAspects.BaseRule(), new TestAspects.ErrorAspectRule(),
+ new TestAspects.SimpleRule());
+
+ pkg("a",
+ "error_aspect(name='a', foo=[':b'])",
+ "error_aspect(name='b', bar=[':c'])",
+ "error_aspect(name='c', bar=[':d'])",
+ "error_aspect(name='d')");
+
+ reporter.removeHandler(failFastHandler);
+ // getConfiguredTarget() uses a separate code path that does not hit
+ // SkyframeBuildView#configureTargets
+ try {
+ update("//a:a");
+ fail();
+ } catch (ViewCreationFailedException e) {
+ // expected
+ }
+ assertContainsEvent("Aspect error");
+ }
+
+ @Test
public void sameTargetInDifferentAttributes() throws Exception {
setRules(new TestAspects.BaseRule(), new TestAspects.AspectRequiringRule(),
new TestAspects.SimpleRule());
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
index 5f41e3d4ec..c0ee9111a0 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/TestAspects.java
@@ -237,6 +237,7 @@ public class TestAspects {
}
private static final AspectDefinition ERROR_ASPECT = new AspectDefinition.Builder("error")
+ .attributeAspect("bar", ErrorAspect.class)
.build();
/**
@@ -367,6 +368,7 @@ public class TestAspects {
return builder
.add(attr("foo", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE)
.aspect(ErrorAspect.class))
+ .add(attr("bar", LABEL_LIST).allowedFileTypes(FileTypeSet.ANY_FILE))
.build();
}