diff options
author | dslomov <dslomov@google.com> | 2017-05-08 08:47:44 -0400 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2017-05-08 09:50:19 -0400 |
commit | fa50c3ddd67d835a134ea8da0cb9ba02fed704d1 (patch) | |
tree | 4e1b00014069ee50029e8cab4349f2879fdbb385 /src/test/java/com/google/devtools/build/lib/skylark | |
parent | c5c9aced57681cce897f3286d41b935d33876caa (diff) |
Do not report errors when aspects try to attach to files.
Instead, silently ignore them in the same way we do for rules to which
aspects are not applicable.
In the future aspects will gain the ability to apply to, and propagate
through, files.
RELNOTES: None.
PiperOrigin-RevId: 155369925
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.java | 47 |
1 files changed, 34 insertions, 13 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 dec93cbf94..2ecdf0864d 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 @@ -151,7 +151,6 @@ public class SkylarkAspectsTest extends AnalysisTestCase { public List<Key> apply(AspectValue aspectValue) { return aspectValue .getConfiguredAspect() - .getProviders() .getProvider(SkylarkProviders.class) .getDeclaredProviderKeys() .asList(); @@ -784,20 +783,41 @@ public class SkylarkAspectsTest extends AnalysisTestCase { " deps = ['//external:yyy'],", ")"); - reporter.removeHandler(failFastHandler); - try { - AnalysisResult result = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); - assertThat(keepGoing()).isTrue(); - assertThat(result.hasError()).isTrue(); - } catch (ViewCreationFailedException expected) { - assertThat(expected.getMessage()) - .contains("Analysis of aspect '/test/aspect%MyAspect of //test:xxx' failed"); - } - assertContainsEvent("//test:aspect.bzl%MyAspect is attached to source file zzz.jar but " - + "aspects must be attached to rules"); + AnalysisResult result = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); + assertThat(result.hasError()).isFalse(); } @Test + public void aspectsDoNotAttachToTopLevelFiles() throws Exception { + FileSystemUtils.appendIsoLatin1(scratch.resolve("WORKSPACE"), + "bind(name = 'yyy', actual = '//test:zzz.jar')"); + scratch.file( + "test/aspect.bzl", + "p = provider()", + "def _impl(target, ctx):", + " return [p()]", + "", + "MyAspect = aspect(", + " implementation=_impl,", + " attr_aspects=['deps'],", + ")"); + scratch.file("test/zzz.jar"); + scratch.file( + "test/BUILD", + "exports_files(['zzz.jar'])", + "java_library(", + " name = 'xxx',", + " srcs = ['A.java'],", + " deps = ['//external:yyy'],", + ")"); + + AnalysisResult result = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:zzz.jar"); + assertThat(result.hasError()).isFalse(); + assertThat(Iterables.getOnlyElement(result.getAspects()).getConfiguredAspect()).isEmpty(); + } + + + @Test public void aspectFailingExecution() throws Exception { scratch.file( "test/aspect.bzl", @@ -1694,7 +1714,8 @@ public class SkylarkAspectsTest extends AnalysisTestCase { AnalysisResult analysisResult = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:file.txt"); assertThat(analysisResult.hasError()).isFalse(); - assertThat(analysisResult.getAspects()).isEmpty(); + assertThat(Iterables.getOnlyElement(analysisResult.getAspects()).getConfiguredAspect()) + .isEmpty(); } @Test |