diff options
author | 2018-03-01 15:16:46 -0800 | |
---|---|---|
committer | 2018-03-01 15:18:45 -0800 | |
commit | 99be8b417a95224f66b3e00c9103cbde460d3b07 (patch) | |
tree | cddd8696ba024c1122fb33a4f45424012e670061 /src/test/java/com | |
parent | 1085ce935b68d51e6754148ef4c1e4e73e7dc2b6 (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')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java | 2 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java | 60 |
2 files changed, 62 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java index 925b477996..0eb5f2df54 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/SkylarkSemanticsConsistencyTest.java @@ -123,6 +123,7 @@ public class SkylarkSemanticsConsistencyTest { "--incompatible_depset_is_not_iterable=" + rand.nextBoolean(), "--incompatible_depset_union=" + rand.nextBoolean(), "--incompatible_disable_glob_tracking=" + rand.nextBoolean(), + "--incompatible_disable_objc_provider_resources=" + rand.nextBoolean(), "--incompatible_disallow_dict_plus=" + rand.nextBoolean(), "--incompatible_disallow_toplevel_if_statement=" + rand.nextBoolean(), "--incompatible_disallow_uncalled_set_constructor=" + rand.nextBoolean(), @@ -146,6 +147,7 @@ public class SkylarkSemanticsConsistencyTest { .incompatibleDepsetIsNotIterable(rand.nextBoolean()) .incompatibleDepsetUnion(rand.nextBoolean()) .incompatibleDisableGlobTracking(rand.nextBoolean()) + .incompatibleDisableObjcProviderResources(rand.nextBoolean()) .incompatibleDisallowDictPlus(rand.nextBoolean()) .incompatibleDisallowToplevelIfStatement(rand.nextBoolean()) .incompatibleDisallowUncalledSetConstructor(rand.nextBoolean()) 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( |