diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-11-18 14:02:54 +0000 |
---|---|---|
committer | Dmitry Lomov <dslomov@google.com> | 2016-11-21 19:33:03 +0000 |
commit | 51aafc123137108c2bccc80617f1dbf14310545f (patch) | |
tree | e10a20b097c202519adc76d9ab521633d183b0f8 /src/test/java/com/google/devtools/build | |
parent | 30ae806db34137c4ae7942ea5e8c58277f9f9123 (diff) |
Allow labels in the '--aspects' parameter.
--
MOS_MIGRATED_REVID=139573590
Diffstat (limited to 'src/test/java/com/google/devtools/build')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java | 133 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/testutil/Scratch.java | 8 |
2 files changed, 82 insertions, 59 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 d053f05adf..53da165256 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 @@ -69,33 +69,80 @@ public class SkylarkAspectsTest extends AnalysisTestCase { AnalysisResult analysisResult = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); - assertThat( - transform( - analysisResult.getTargetsToBuild(), - new Function<ConfiguredTarget, String>() { - @Nullable - @Override - public String apply(ConfiguredTarget configuredTarget) { - return configuredTarget.getLabel().toString(); - } - })) - .containsExactly("//test:xxx"); - assertThat( - transform( - analysisResult.getAspects(), - new Function<AspectValue, String>() { - @Nullable - @Override - public String apply(AspectValue aspectValue) { - return String.format( - "%s(%s)", - aspectValue.getConfiguredAspect().getName(), - aspectValue.getLabel().toString()); - } - })) + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); + assertThat(getAspectDescriptions(analysisResult)) .containsExactly("//test:aspect.bzl%MyAspect(//test:xxx)"); } + private Iterable<String> getAspectDescriptions(AnalysisResult analysisResult) { + return transform( + analysisResult.getAspects(), + new Function<AspectValue, String>() { + @Nullable + @Override + public String apply(AspectValue aspectValue) { + return String.format( + "%s(%s)", + aspectValue.getConfiguredAspect().getName(), + aspectValue.getLabel().toString()); + } + }); + } + + @Test + public void testAspectCommandLineLabel() throws Exception { + scratch.file( + "test/aspect.bzl", + "def _impl(target, ctx):", + " print('This aspect does nothing')", + " return struct()", + "MyAspect = aspect(implementation=_impl)"); + scratch.file("test/BUILD", "java_library(name = 'xxx',)"); + + AnalysisResult analysisResult = + update(ImmutableList.of("//test:aspect.bzl%MyAspect"), "//test:xxx"); + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); + assertThat(getAspectDescriptions(analysisResult)) + .containsExactly("//test:aspect.bzl%MyAspect(//test:xxx)"); + } + + @Test + public void testAspectCommandLineRepoLabel() throws Exception { + scratch.overwriteFile( + "WORKSPACE", + scratch.readFile("WORKSPACE"), + "local_repository(name='local', path='local/repo')" + ); + scratch.file( + "local/repo/aspect.bzl", + "def _impl(target, ctx):", + " print('This aspect does nothing')", + " return struct()", + "MyAspect = aspect(implementation=_impl)"); + scratch.file("local/repo/BUILD"); + + scratch.file("test/BUILD", "java_library(name = 'xxx',)"); + + AnalysisResult analysisResult = + update(ImmutableList.of("@local//:aspect.bzl%MyAspect"), "//test:xxx"); + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); + assertThat(getAspectDescriptions(analysisResult)) + .containsExactly("@local//:aspect.bzl%MyAspect(//test:xxx)"); + } + + private Iterable<String> getLabelsToBuild(AnalysisResult analysisResult) { + return transform( + analysisResult.getTargetsToBuild(), + new Function<ConfiguredTarget, String>() { + @Nullable + @Override + public String apply(ConfiguredTarget configuredTarget) { + return configuredTarget.getLabel().toString(); + } + }); + } + + @Test public void testAspectAllowsFragmentsToBeSpecified() throws Exception { scratch.file( @@ -157,17 +204,7 @@ public class SkylarkAspectsTest extends AnalysisTestCase { AnalysisResult analysisResult = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); - assertThat( - transform( - analysisResult.getTargetsToBuild(), - new Function<ConfiguredTarget, String>() { - @Nullable - @Override - public String apply(ConfiguredTarget configuredTarget) { - return configuredTarget.getLabel().toString(); - } - })) - .containsExactly("//test:xxx"); + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); AspectValue aspectValue = analysisResult.getAspects().iterator().next(); SkylarkProviders skylarkProviders = aspectValue.getConfiguredAspect().getProvider(SkylarkProviders.class); @@ -270,17 +307,7 @@ public class SkylarkAspectsTest extends AnalysisTestCase { AnalysisResult analysisResult = update(ImmutableList.of("test/aspect.bzl%MyAspect"), "//test:xxx"); - assertThat( - transform( - analysisResult.getTargetsToBuild(), - new Function<ConfiguredTarget, String>() { - @Nullable - @Override - public String apply(ConfiguredTarget configuredTarget) { - return configuredTarget.getLabel().toString(); - } - })) - .containsExactly("//test:xxx"); + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); AspectValue aspectValue = analysisResult.getAspects().iterator().next(); OutputGroupProvider outputGroupProvider = aspectValue.getConfiguredAspect().getProvider(OutputGroupProvider.class); @@ -331,17 +358,7 @@ public class SkylarkAspectsTest extends AnalysisTestCase { ")"); AnalysisResult analysisResult = update("//test:xxx"); - assertThat( - transform( - analysisResult.getTargetsToBuild(), - new Function<ConfiguredTarget, String>() { - @Nullable - @Override - public String apply(ConfiguredTarget configuredTarget) { - return configuredTarget.getLabel().toString(); - } - })) - .containsExactly("//test:xxx"); + assertThat(getLabelsToBuild(analysisResult)).containsExactly("//test:xxx"); ConfiguredTarget target = analysisResult.getTargetsToBuild().iterator().next(); SkylarkProviders skylarkProviders = target.getProvider(SkylarkProviders.class); assertThat(skylarkProviders).isNotNull(); @@ -428,7 +445,7 @@ public class SkylarkAspectsTest extends AnalysisTestCase { assertThat(result.hasError()).isTrue(); } catch (ViewCreationFailedException expected) { assertThat(expected.getMessage()) - .contains("Analysis of aspect '/test/aspect.bzl%MyAspect of //test:xxx' failed"); + .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"); diff --git a/src/test/java/com/google/devtools/build/lib/testutil/Scratch.java b/src/test/java/com/google/devtools/build/lib/testutil/Scratch.java index 7179b37258..6004661321 100644 --- a/src/test/java/com/google/devtools/build/lib/testutil/Scratch.java +++ b/src/test/java/com/google/devtools/build/lib/testutil/Scratch.java @@ -14,13 +14,13 @@ package com.google.devtools.build.lib.testutil; +import com.google.common.io.ByteStreams; import com.google.devtools.build.lib.util.BlazeClock; import com.google.devtools.build.lib.vfs.FileSystem; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem; - import java.io.IOException; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; @@ -131,6 +131,12 @@ public final class Scratch { return file; } + public String readFile(String pathName) throws IOException { + return new String( + ByteStreams.toByteArray(resolve(pathName).getInputStream()), + DEFAULT_CHARSET); + } + /** * Like {@code scratch.file}, but the file is first deleted if it already * exists. |