aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-11-18 14:02:54 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-11-21 19:33:03 +0000
commit51aafc123137108c2bccc80617f1dbf14310545f (patch)
treee10a20b097c202519adc76d9ab521633d183b0f8 /src/test/java/com/google/devtools/build
parent30ae806db34137c4ae7942ea5e8c58277f9f9123 (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.java133
-rw-r--r--src/test/java/com/google/devtools/build/lib/testutil/Scratch.java8
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.