aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-07-19 09:00:55 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-07-19 18:11:29 +0000
commitf188dc23bff5edbe4c7b8f43cc66a8f1d07ba07b (patch)
tree741196bcbcd627be7f4e38a94aff1dd6445004b7 /src/test/java/com/google/devtools/build/lib/skylark
parent25e5995fc418a6430c822f71ac0e0418dfc1f34a (diff)
Prohibit duplicate addition of aspect to an attribute and improve diagnostics.
-- MOS_MIGRATED_REVID=127808009
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
index 0b61f3f277..6746341eae 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.analysis.SkylarkProviders;
import com.google.devtools.build.lib.analysis.ViewCreationFailedException;
import com.google.devtools.build.lib.analysis.util.AnalysisTestCase;
import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.cmdline.TargetParsingException;
import com.google.devtools.build.lib.collect.nestedset.NestedSet;
import com.google.devtools.build.lib.packages.AspectDefinition;
import com.google.devtools.build.lib.packages.Attribute.ConfigurationTransition;
@@ -1071,6 +1072,34 @@ public class SkylarkAspectsTest extends AnalysisTestCase {
assertThat(analysisResult.hasError()).isFalse();
}
+ @Test
+ public void multipleAspects() throws Exception {
+ scratch.file(
+ "test/aspect.bzl",
+ "def _aspect_impl(target,ctx):",
+ " return struct()",
+ "my_aspect = aspect(implementation = _aspect_impl)",
+ "def _dummy_impl(ctx):",
+ " pass",
+ "r1 = rule(_dummy_impl, ",
+ " attrs = { 'deps' : attr.label_list(aspects = [my_aspect, my_aspect]) })"
+ );
+
+ scratch.file(
+ "test/BUILD",
+ "load(':aspect.bzl', 'r1')",
+ "r1(name = 't1')"
+ );
+ reporter.removeHandler(failFastHandler);
+ try {
+ AnalysisResult result = update("//test:r1");
+ assertThat(keepGoing()).isTrue();
+ assertThat(result.hasError()).isTrue();
+ } catch (TargetParsingException | ViewCreationFailedException expected) {
+ // expected.
+ }
+ assertContainsEvent("Aspect //test:aspect.bzl%my_aspect added more than once");
+ }
@RunWith(JUnit4.class)
public static final class WithKeepGoing extends SkylarkAspectsTest {