diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-09-20 14:46:06 +0000 |
---|---|---|
committer | Laszlo Csomor <laszlocsomor@google.com> | 2016-09-21 07:06:00 +0000 |
commit | 63010255876a81cf2b0bc4fc5d95a0e1a99df58d (patch) | |
tree | 1a78efb227c11c524936c2bdf589d1ec8be0be1f /src/test | |
parent | 96d46280bc5a4803ba2242a4ad16939f85a3b212 (diff) |
Expose processor classpath and classnames to Skylark.
--
MOS_MIGRATED_REVID=133704700
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/BUILD | 4 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java | 82 |
2 files changed, 86 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD index efd0b6358c..68cd7d3769 100644 --- a/src/test/java/com/google/devtools/build/lib/BUILD +++ b/src/test/java/com/google/devtools/build/lib/BUILD @@ -879,9 +879,13 @@ java_test( ":testutil", "//src/main/java/com/google/devtools/build/lib:bazel-main", "//src/main/java/com/google/devtools/build/lib:bazel-rules", + "//src/main/java/com/google/devtools/build/lib:build-base", "//src/main/java/com/google/devtools/build/lib:java-compilation", "//src/main/java/com/google/devtools/build/lib:java-rules", + "//src/main/java/com/google/devtools/build/lib:packages-internal", "//src/main/java/com/google/devtools/build/lib:vfs", + "//src/main/java/com/google/devtools/build/lib/actions", + "//src/main/java/com/google/devtools/build/lib/cmdline", "//third_party:guava", "//third_party:guava-testlib", "//third_party:jsr305", diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java new file mode 100644 index 0000000000..453f47d1ad --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java @@ -0,0 +1,82 @@ +// Copyright 2016 The Bazel Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +package com.google.devtools.build.lib.rules.java; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.common.base.Function; +import com.google.common.collect.Iterables; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.SkylarkProviders; +import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.packages.SkylarkClassObject; +import com.google.devtools.build.lib.packages.SkylarkClassObjectConstructor.Key; +import java.util.List; +import javax.annotation.Nullable; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** + * Tests Skylark API for Java rules. + */ +@RunWith(JUnit4.class) +public class JavaSkylarkApiTest extends BuildViewTestCase { + @Test + public void testJavaPlugin() throws Exception { + scratch.file( + "java/test/extension.bzl", + "result = provider()", + "def impl(ctx):", + " depj = ctx.attr.dep.java", + " return [result(", + " processor_classpath = depj.annotation_processing.processor_classpath,", + " processor_classnames = depj.annotation_processing.processor_classnames,", + " )]", + "my_rule = rule(impl, attrs = { 'dep' : attr.label() })" + ); + scratch.file( + "java/test/BUILD", + "load(':extension.bzl', 'my_rule')", + "java_library(name = 'plugin_dep',", + " srcs = [ 'ProcessorDep.java'])", + "java_plugin(name = 'plugin',", + " srcs = ['AnnotationProcessor.java'],", + " processor_class = 'com.google.process.stuff',", + " deps = [ ':plugin_dep' ])", + "java_library(name = 'to_be_processed',", + " plugins = [':plugin'],", + " srcs = ['ToBeProcessed.java'])", + "my_rule(name = 'my', dep = ':to_be_processed')"); + ConfiguredTarget configuredTarget = getConfiguredTarget("//java/test:my"); + SkylarkProviders provider = configuredTarget.getProvider(SkylarkProviders.class); + SkylarkClassObject skylarkClassObject = provider + .getDeclaredProvider(new Key(Label.parseAbsolute("//java/test:extension.bzl"), "result")); + + assertThat(Iterables.transform((List<?>) skylarkClassObject.getValue("processor_classpath"), + new Function<Object, String>() { + @Nullable + @Override + public String apply(@Nullable Object o) { + return ((Artifact) o).getFilename(); + } + })) + .containsExactly("libplugin.jar", "libplugin_dep.jar"); + + assertThat((List<?>) skylarkClassObject.getValue("processor_classnames")) + .containsExactly("com.google.process.stuff"); + } +}
\ No newline at end of file |