From f188dc23bff5edbe4c7b8f43cc66a8f1d07ba07b Mon Sep 17 00:00:00 2001 From: Dmitry Lomov Date: Tue, 19 Jul 2016 09:00:55 +0000 Subject: Prohibit duplicate addition of aspect to an attribute and improve diagnostics. -- MOS_MIGRATED_REVID=127808009 --- .../build/lib/skylark/SkylarkAspectsTest.java | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/skylark') 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 { -- cgit v1.2.3