aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar elenairina <elenairina@google.com>2017-07-18 13:25:27 +0200
committerGravatar Klaus Aehlig <aehlig@google.com>2017-07-19 10:18:57 +0200
commit1020668183c1f66928db8757f315505e5d66e454 (patch)
tree626e5ba30b01448542288b7e241b70962909425c /src/test/java/com
parent3e283a134eba11fd972fcb7362f45e74def39cbe (diff)
Add more unit tests for java_common.create_provider.
PiperOrigin-RevId: 162336470
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/java/JavaSkylarkApiTest.java99
1 files changed, 95 insertions, 4 deletions
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
index 9dae58811f..906331821b 100644
--- 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
@@ -244,6 +244,91 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
}
@Test
+ public void javaProviderFieldsAreCorrectAfterCreatingProvider() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "def _impl(ctx):",
+ " my_provider = java_common.create_provider(",
+ " compile_time_jars = ctx.files.compile_time_jars,",
+ " runtime_jars = ctx.files.runtime_jars,",
+ " transitive_compile_time_jars = ctx.files.transitive_compile_time_jars,",
+ " transitive_runtime_jars = ctx.files.transitive_runtime_jars,",
+ " source_jars = depset(ctx.files.source_jars))",
+ " return [my_provider]",
+ "my_rule = rule(_impl, ",
+ " attrs = { ",
+ " 'compile_time_jars' : attr.label_list(allow_files=['.jar']),",
+ " 'runtime_jars': attr.label_list(allow_files=['.jar']),",
+ " 'transitive_compile_time_jars': attr.label_list(allow_files=['.jar']),",
+ " 'transitive_runtime_jars': attr.label_list(allow_files=['.jar']),",
+ " 'source_jars': attr.label_list(allow_files=['.jar'])",
+ "})");
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "my_rule(name = 'myrule',",
+ " compile_time_jars = ['liba.jar'],",
+ " runtime_jars = ['libb.jar'],",
+ " transitive_compile_time_jars = ['libc.jar'],",
+ " transitive_runtime_jars = ['libd.jar'],",
+ ")");
+ ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
+ SkylarkClassObject skylarkClassObject = target.get(JavaProvider.JAVA_PROVIDER);
+
+ SkylarkNestedSet compileJars = (SkylarkNestedSet) skylarkClassObject.getValue("compile_jars");
+ assertThat(prettyJarNames(compileJars.getSet(Artifact.class))).containsExactly("foo/liba.jar");
+
+ SkylarkNestedSet transitiveCompileTimeJars =
+ (SkylarkNestedSet) skylarkClassObject.getValue("transitive_compile_time_jars");
+ assertThat(prettyJarNames(
+ transitiveCompileTimeJars.getSet(Artifact.class))).containsExactly("foo/libc.jar");
+
+ SkylarkNestedSet transitiveRuntimeJars =
+ (SkylarkNestedSet) skylarkClassObject.getValue("transitive_runtime_jars");
+ assertThat(prettyJarNames(
+ transitiveRuntimeJars.getSet(Artifact.class))).containsExactly("foo/libd.jar");
+ }
+
+ @Test
+ public void javaProviderFieldsAreCorrectAfterCreatingProviderSomeEmptyFields() throws Exception {
+ scratch.file(
+ "foo/extension.bzl",
+ "def _impl(ctx):",
+ " my_provider = java_common.create_provider(",
+ " compile_time_jars = ctx.files.compile_time_jars,",
+ " runtime_jars = [],",
+ " transitive_compile_time_jars = [],",
+ " transitive_runtime_jars = ctx.files.transitive_runtime_jars)",
+ " return [my_provider]",
+ "my_rule = rule(_impl, ",
+ " attrs = { ",
+ " 'compile_time_jars' : attr.label_list(allow_files=['.jar']),",
+ " 'transitive_runtime_jars': attr.label_list(allow_files=['.jar']),",
+ "})");
+ scratch.file(
+ "foo/BUILD",
+ "load(':extension.bzl', 'my_rule')",
+ "my_rule(name = 'myrule',",
+ " compile_time_jars = ['liba.jar'],",
+ " transitive_runtime_jars = ['libd.jar'],",
+ ")");
+ ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
+ SkylarkClassObject skylarkClassObject = target.get(JavaProvider.JAVA_PROVIDER);
+
+ SkylarkNestedSet compileJars = (SkylarkNestedSet) skylarkClassObject.getValue("compile_jars");
+ assertThat(prettyJarNames(compileJars.getSet(Artifact.class))).containsExactly("foo/liba.jar");
+
+ SkylarkNestedSet transitiveCompileTimeJars =
+ (SkylarkNestedSet) skylarkClassObject.getValue("transitive_compile_time_jars");
+ assertThat(prettyJarNames(transitiveCompileTimeJars.getSet(Artifact.class))).isEmpty();
+
+ SkylarkNestedSet transitiveRuntimeJars =
+ (SkylarkNestedSet) skylarkClassObject.getValue("transitive_runtime_jars");
+ assertThat(prettyJarNames(
+ transitiveRuntimeJars.getSet(Artifact.class))).containsExactly("foo/libd.jar");
+ }
+
+ @Test
public void constructJavaProvider() throws Exception {
scratch.file(
"foo/extension.bzl",
@@ -263,15 +348,14 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
" 'transitive_runtime_jars': attr.label_list(allow_files=['.jar']),",
" 'source_jars': attr.label_list(allow_files=['.jar'])",
"})");
- scratch.file("foo/liba.jar");
- scratch.file("foo/libb.jar");
- scratch.file("foo/liba-src.jar");
scratch.file(
"foo/BUILD",
"load(':extension.bzl', 'my_rule')",
"my_rule(name = 'myrule',",
" compile_time_jars = ['liba.jar'],",
" runtime_jars = ['libb.jar'],",
+ " transitive_compile_time_jars = ['libc.jar'],",
+ " transitive_runtime_jars = ['libd.jar'],",
" source_jars = ['liba-src.jar'],",
")");
ConfiguredTarget target = getConfiguredTarget("//foo:myrule");
@@ -281,10 +365,17 @@ public class JavaSkylarkApiTest extends BuildViewTestCase {
List<String> compileTimeJars =
prettyJarNames(provider.getJavaCompilationArgs().getCompileTimeJars());
assertThat(compileTimeJars).containsExactly("foo/liba.jar");
-
List<String> runtimeJars =
prettyJarNames(provider.getJavaCompilationArgs().getRuntimeJars());
assertThat(runtimeJars).containsExactly("foo/libb.jar");
+
+ List<String> transitiveCompileTimeJars =
+ prettyJarNames(provider.getRecursiveJavaCompilationArgs().getCompileTimeJars());
+ assertThat(transitiveCompileTimeJars).containsExactly("foo/libc.jar");
+ List<String> transitiveRuntimeJars =
+ prettyJarNames(provider.getRecursiveJavaCompilationArgs().getRuntimeJars());
+ assertThat(transitiveRuntimeJars).containsExactly("foo/libd.jar");
+
JavaSourceJarsProvider sourcesProvider =
JavaProvider.getProvider(JavaSourceJarsProvider.class, target);
List<String> sourceJars = prettyJarNames(sourcesProvider.getSourceJars());