aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/objc
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-01 15:16:46 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-01 15:18:45 -0800
commit99be8b417a95224f66b3e00c9103cbde460d3b07 (patch)
treecddd8696ba024c1122fb33a4f45424012e670061 /src/test/java/com/google/devtools/build/lib/rules/objc
parent1085ce935b68d51e6754148ef4c1e4e73e7dc2b6 (diff)
Create --incompatible_disable_objc_provider_resources to disable deprecated objc provider skylark fields.
This flag is not fully implemented -- there should also be a way to disable the provider getters using this flag, but, since @SkylarkCallable does not allow for evaluation of SkylarkSemantics, this is not yet possible. RELNOTES: None. PiperOrigin-RevId: 187542004
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/objc')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
index 9e6fe98db4..9638eac2bb 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
@@ -1263,6 +1263,66 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
.contains("ios_arm64");
}
+ @Test
+ public void testDisableObjcProviderResources() throws Exception {
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def my_rule_impl(ctx):",
+ " file = ctx.actions.declare_file('foo.ast')",
+ " ctx.actions.run_shell(outputs=[file], command='echo')",
+ " objc_provider = apple_common.new_objc_provider(xib=depset([file]))",
+ " return struct(objc=objc_provider)",
+ "my_rule = rule(implementation = my_rule_impl,",
+ " attrs = {})");
+
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'my_rule')",
+ "my_rule(",
+ " name='my_target',",
+ ")");
+
+ try {
+ setSkylarkSemanticsOptions("--incompatible_disable_objc_provider_resources=true");
+ getConfiguredTarget("//examples/apple_skylark:my_target");
+ } catch (AssertionError e) {
+ assertThat(e)
+ .hasMessageThat()
+ .contains("in call to new_objc_provider: Argument xib not a recognized key");
+ }
+ }
+
+ @Test
+ public void testEnabledObjcProviderResources() throws Exception {
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def my_rule_impl(ctx):",
+ " file = ctx.actions.declare_file('foo.ast')",
+ " ctx.actions.run_shell(outputs=[file], command='echo')",
+ " objc_provider = apple_common.new_objc_provider(xib=depset([file]))",
+ " return struct(objc=objc_provider)",
+ "my_rule = rule(implementation = my_rule_impl,",
+ " attrs = {})");
+
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'my_rule')",
+ "my_rule(",
+ " name='my_target',",
+ ")");
+
+ setSkylarkSemanticsOptions("--incompatible_disable_objc_provider_resources=false");
+ ConfiguredTarget binaryTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
+
+ ObjcProvider objcProvider = binaryTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+
+ assertThat(objcProvider.get(ObjcProvider.XIB)).isNotNull();
+ }
+
private void checkSkylarkRunMemleaksWithExpectedValue(boolean expectedValue) throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(