diff options
Diffstat (limited to 'src/test/java/com')
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"); - } } |