aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java78
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java13
-rw-r--r--src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java10
3 files changed, 77 insertions, 24 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 0086a3f89d..f8d056ad9e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -17,6 +17,7 @@ package com.google.devtools.build.lib.rules.objc;
import static com.google.common.truth.Truth.assertThat;
import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.getFirstArtifactEndingWith;
import static com.google.devtools.build.lib.rules.objc.ObjcRuleClasses.LIPO;
+import static com.google.devtools.build.lib.testutil.MoreAsserts.assertThrows;
import com.google.common.base.Joiner;
import com.google.common.collect.ImmutableList;
@@ -482,7 +483,7 @@ public class AppleStaticLibraryTest extends ObjcRuleTestCase {
}
@Test
- public void testAppleStaticLibraryProvider() throws Exception {
+ public void testAppleStaticLibraryInfo() throws Exception {
RULE_TYPE.scratchTarget(scratch, "platform_type", "'ios'");
ConfiguredTarget binTarget = getConfiguredTarget("//x:x");
AppleStaticLibraryInfo provider =
@@ -654,4 +655,79 @@ public class AppleStaticLibraryTest extends ObjcRuleTestCase {
assertThat(compileArgs2).contains("FLAG_1_ON");
assertThat(compileArgs2).contains("FLAG_2_ON");
}
+
+ @Test
+ public void testAppleStaticLibraryProvider() throws Exception {
+ RULE_TYPE.scratchTarget(scratch, "platform_type", "'ios'");
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def skylark_static_lib_impl(ctx):",
+ " dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
+ " my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
+ " objc = dep_provider.objc)",
+ " return struct(",
+ " providers = [my_provider]",
+ " )",
+ "",
+ "skylark_static_lib = rule(",
+ " implementation = skylark_static_lib_impl,",
+ " attrs = {'proxy': attr.label()},",
+ ")");
+
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'skylark_static_lib')",
+ "skylark_static_lib(",
+ " name='my_target',",
+ " proxy='//x:x'",
+ ")");
+
+ ConfiguredTarget binTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
+
+ AppleStaticLibraryInfo provider =
+ binTarget.get(AppleStaticLibraryInfo.SKYLARK_CONSTRUCTOR);
+ assertThat(provider).isNotNull();
+ assertThat(provider.getMultiArchArchive()).isNotNull();
+ assertThat(provider.getDepsObjcProvider()).isNotNull();
+ assertThat(provider.getMultiArchArchive()).isEqualTo(
+ Iterables.getOnlyElement(
+ provider.getDepsObjcProvider().get(ObjcProvider.MULTI_ARCH_LINKED_ARCHIVES)));
+ }
+
+ @Test
+ public void testAppleStaticLibraryProvider_invalidArgs() throws Exception {
+ RULE_TYPE.scratchTarget(scratch, "platform_type", "'ios'");
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def skylark_static_lib_impl(ctx):",
+ " dep_provider = ctx.attr.proxy[apple_common.AppleStaticLibrary]",
+ " my_provider = apple_common.AppleStaticLibrary(archive = dep_provider.archive,",
+ " objc = dep_provider.objc, foo = 'bar')",
+ " return struct(",
+ " providers = [my_provider]",
+ " )",
+ "",
+ "skylark_static_lib = rule(",
+ " implementation = skylark_static_lib_impl,",
+ " attrs = {'proxy': attr.label()},",
+ ")");
+
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'skylark_static_lib')",
+ "skylark_static_lib(",
+ " name='my_target',",
+ " proxy='//x:x'",
+ ")");
+
+ AssertionError expected =
+ assertThrows(AssertionError.class, () ->
+ getConfiguredTarget("//examples/apple_skylark:my_target"));
+ assertThat(expected).hasMessageThat()
+ .contains("unexpected keyword 'foo' in call");
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
index cb09f8d103..36100727bf 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkEvaluationTest.java
@@ -485,10 +485,6 @@ public class SkylarkEvaluationTest extends EvaluationTest {
public Boolean isEmptyInterface(String str) {
return str.isEmpty();
}
- @SkylarkCallable(documented = false)
- public Boolean isEmptyClassNotAnnotated(String str) {
- return str.isEmpty();
- }
}
@SkylarkModule(name = "MockClassObject", documented = false, doc = "")
@@ -1188,15 +1184,6 @@ public class SkylarkEvaluationTest extends EvaluationTest {
}
@Test
- public void testNoJavaCallsIfClassNotAnnotated() throws Exception {
- new SkylarkTest()
- .update("mock", new MockSubClass())
- .testIfExactError(
- "type 'Mock' has no method is_empty_class_not_annotated(string)",
- "b = mock.is_empty_class_not_annotated('a')");
- }
-
- @Test
public void testStructAccess() throws Exception {
new SkylarkTest()
.update("mock", new Mock())
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
index 12aaf0ba58..6479f58041 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/syntax/SkylarkInterfaceUtilsTest.java
@@ -201,14 +201,4 @@ public class SkylarkInterfaceUtilsTest {
assertThat(ann).isNotNull();
assertThat(ann.doc()).isEqualTo("MockInterfaceB2#qux");
}
-
- @Test
- public void testGetSkylarkCallableIgnoreNonModules() throws Exception {
- // Don't return SkylarkCallable annotations in classes and interfaces
- // not marked @SkylarkModule.
- Method method = MockClassD.class.getMethod("foo");
- SkylarkCallable ann = SkylarkInterfaceUtils.getSkylarkCallable(method);
- assertThat(ann).isNotNull();
- assertThat(ann.doc()).isEqualTo("MockClassC#foo");
- }
}