aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-03-28 08:51:32 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-28 08:53:10 -0700
commitf6d2881825f8b42331263abfa47da9ebe5f951ba (patch)
treee0d6ee28af39489e3a865ced2a7dc1f7dd60ca13 /src/test
parent3a61eb654b2ee4da0a1a749ec48adbc06aa42aee (diff)
Make deprecated ObjcProvider fields return empty sets when --incompatible_disable_objc_provider_resources is true.
This involves propagating SkylarkSemantics to all ObjcProvider constructors. RELNOTES: Introduce --incompatible_disable_objc_provider_resources to turn off all resource-related fields of the Objc provider. PiperOrigin-RevId: 190778491
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProviderTest.java39
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java86
2 files changed, 103 insertions, 22 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProviderTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProviderTest.java
index 0996bb4318..5c1f6b7ba5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcProviderTest.java
@@ -20,6 +20,7 @@ import static com.google.common.truth.Truth.assertWithMessage;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.devtools.build.lib.rules.objc.ObjcProvider.Key;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
@@ -33,15 +34,19 @@ import org.junit.runners.JUnit4;
@RunWith(JUnit4.class)
public class ObjcProviderTest {
+ private static ObjcProvider.Builder objcProviderBuilder() {
+ return new ObjcProvider.Builder(SkylarkSemantics.DEFAULT_SEMANTICS);
+ }
+
@Test
public void emptyProvider() {
- ObjcProvider empty = new ObjcProvider.Builder().build();
+ ObjcProvider empty = objcProviderBuilder().build();
assertThat(empty.get(ObjcProvider.SDK_DYLIB)).isEmpty();
}
@Test
public void onlyPropagatesProvider() {
- ObjcProvider onlyPropagates = new ObjcProvider.Builder()
+ ObjcProvider onlyPropagates = objcProviderBuilder()
.add(ObjcProvider.SDK_DYLIB, "foo")
.build();
assertThat(onlyPropagates.get(ObjcProvider.SDK_DYLIB)).containsExactly("foo");
@@ -49,10 +54,10 @@ public class ObjcProviderTest {
@Test
public void onlyNonPropagatesProvider() {
- ObjcProvider dep = new ObjcProvider.Builder()
+ ObjcProvider dep = objcProviderBuilder()
.add(ObjcProvider.SDK_DYLIB, "foo")
.build();
- ObjcProvider notPropagates = new ObjcProvider.Builder()
+ ObjcProvider notPropagates = objcProviderBuilder()
.addTransitiveWithoutPropagating(ImmutableList.of(dep))
.build();
assertThat(notPropagates.get(ObjcProvider.SDK_DYLIB)).containsExactly("foo");
@@ -60,10 +65,10 @@ public class ObjcProviderTest {
@Test
public void propagatesAndNonPropagatesProvider() {
- ObjcProvider dep = new ObjcProvider.Builder()
+ ObjcProvider dep = objcProviderBuilder()
.add(ObjcProvider.SDK_DYLIB, "foo")
.build();
- ObjcProvider provider = new ObjcProvider.Builder()
+ ObjcProvider provider = objcProviderBuilder()
.addTransitiveWithoutPropagating(ImmutableList.of(dep))
.add(ObjcProvider.SDK_DYLIB, "bar")
.build();
@@ -72,14 +77,14 @@ public class ObjcProviderTest {
@Test
public void doesNotPropagate() {
- ObjcProvider dep = new ObjcProvider.Builder()
+ ObjcProvider dep = objcProviderBuilder()
.add(ObjcProvider.SDK_DYLIB, "foo")
.build();
- ObjcProvider provider = new ObjcProvider.Builder()
+ ObjcProvider provider = objcProviderBuilder()
.addTransitiveWithoutPropagating(ImmutableList.of(dep))
.add(ObjcProvider.SDK_DYLIB, "bar")
.build();
- ObjcProvider depender = new ObjcProvider.Builder()
+ ObjcProvider depender = objcProviderBuilder()
.addTransitiveAndPropagate(provider)
.build();
assertThat(depender.get(ObjcProvider.SDK_DYLIB)).containsExactly("bar");
@@ -91,17 +96,17 @@ public class ObjcProviderTest {
PathFragment propagatedInclude = PathFragment.create("propagated_path");
ObjcProvider strictDep =
- new ObjcProvider.Builder()
+ objcProviderBuilder()
.addForDirectDependents(ObjcProvider.INCLUDE, strictInclude)
.build();
ObjcProvider propagatedDep =
- new ObjcProvider.Builder().add(ObjcProvider.INCLUDE, propagatedInclude).build();
+ objcProviderBuilder().add(ObjcProvider.INCLUDE, propagatedInclude).build();
ObjcProvider provider =
- new ObjcProvider.Builder()
+ objcProviderBuilder()
.addTransitiveAndPropagate(ImmutableList.of(strictDep, propagatedDep))
.build();
- ObjcProvider depender = new ObjcProvider.Builder().addTransitiveAndPropagate(provider).build();
+ ObjcProvider depender = objcProviderBuilder().addTransitiveAndPropagate(provider).build();
assertThat(provider.get(ObjcProvider.INCLUDE))
.containsExactly(strictInclude, propagatedInclude);
@@ -114,17 +119,17 @@ public class ObjcProviderTest {
PathFragment propagatedInclude = PathFragment.create("propagated_path");
ObjcProvider strictDep =
- new ObjcProvider.Builder()
+ objcProviderBuilder()
.addForDirectDependents(ObjcProvider.INCLUDE, strictInclude)
.build();
ObjcProvider propagatedDep =
- new ObjcProvider.Builder().add(ObjcProvider.INCLUDE, propagatedInclude).build();
+ objcProviderBuilder().add(ObjcProvider.INCLUDE, propagatedInclude).build();
ObjcProvider provider =
- new ObjcProvider.Builder()
+ objcProviderBuilder()
.addTransitiveAndPropagate(ImmutableList.of(strictDep, propagatedDep))
.build();
- ObjcProvider depender = new ObjcProvider.Builder().addTransitiveAndPropagate(provider).build();
+ ObjcProvider depender = objcProviderBuilder().addTransitiveAndPropagate(provider).build();
assertThat(provider.include().toCollection())
.containsExactly(strictInclude.toString(), propagatedInclude.toString());
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 20a32ce795..7a63720693 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
@@ -30,6 +30,7 @@ import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.syntax.SkylarkDict;
import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+import com.google.devtools.build.lib.syntax.SkylarkSemantics;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.util.List;
import org.junit.Test;
@@ -41,6 +42,10 @@ import org.junit.runners.JUnit4;
*/
@RunWith(JUnit4.class)
public class ObjcSkylarkTest extends ObjcRuleTestCase {
+ private static ObjcProvider.Builder objcProviderBuilder() {
+ return new ObjcProvider.Builder(SkylarkSemantics.DEFAULT_SEMANTICS);
+ }
+
@Test
public void testSkylarkRuleCanDependOnNativeAppleRule() throws Exception {
scratch.file("examples/rule/BUILD");
@@ -855,9 +860,9 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
ObjcProvider skylarkProvider = skylarkTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
ObjcProvider skylarkProviderDirectDepender =
- new ObjcProvider.Builder().addTransitiveAndPropagate(skylarkProvider).build();
- ObjcProvider skylarkProviderIndirectDepender =
- new ObjcProvider.Builder().addTransitiveAndPropagate(skylarkProviderDirectDepender).build();
+ objcProviderBuilder().addTransitiveAndPropagate(skylarkProvider).build();
+ ObjcProvider skylarkProviderIndirectDepender =
+ objcProviderBuilder().addTransitiveAndPropagate(skylarkProviderDirectDepender).build();
assertThat(skylarkProvider.get(ObjcProvider.INCLUDE))
.containsExactly(PathFragment.create("path1"), PathFragment.create("path2"));
@@ -1347,7 +1352,7 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
}
@Test
- public void testDisableObjcProviderResources() throws Exception {
+ public void testDisableObjcProviderResourcesWrite() throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
@@ -1378,7 +1383,7 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
}
@Test
- public void testEnabledObjcProviderResources() throws Exception {
+ public void testEnabledObjcProviderResourcesWrite() throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(
"examples/rule/apple_rules.bzl",
@@ -1406,6 +1411,77 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
assertThat(objcProvider.get(ObjcProvider.XIB)).isNotNull();
}
+ @Test
+ public void testDisableObjcProviderResourcesRead() throws Exception {
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def my_rule_impl(ctx):",
+ " dep = ctx.attr.deps[0]",
+ " objc_provider = dep[apple_common.Objc]",
+ " return struct(strings=str(objc_provider.strings))",
+ "my_rule = rule(implementation = my_rule_impl,",
+ " attrs = {",
+ " 'deps': attr.label_list(providers = ['objc'])})");
+
+ scratch.file("examples/apple_skylark/foo.strings");
+ scratch.file("examples/apple_skylark/bar.a");
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'my_rule')",
+ "my_rule(",
+ " name='my_target',",
+ " deps=[':bundle_lib'],",
+ ")",
+ "objc_import(",
+ " name='bundle_lib',",
+ " archives = ['bar.a'],",
+ " strings=['foo.strings'],",
+ ")");
+
+ setSkylarkSemanticsOptions("--incompatible_disable_objc_provider_resources=true");
+ ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
+
+ assertThat(skylarkTarget.get("strings")).isEqualTo("depset([])");
+ }
+
+ @Test
+ public void testEnabledObjcProviderResourcesRead() throws Exception {
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def my_rule_impl(ctx):",
+ " dep = ctx.attr.deps[0]",
+ " objc_provider = dep[apple_common.Objc]",
+ " return struct(strings=str(objc_provider.strings))",
+ "my_rule = rule(implementation = my_rule_impl,",
+ " attrs = {",
+ " 'deps': attr.label_list(providers = ['objc'])})");
+
+ scratch.file("examples/apple_skylark/foo.strings");
+ scratch.file("examples/apple_skylark/bar.a");
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('//examples/rule:apple_rules.bzl', 'my_rule')",
+ "my_rule(",
+ " name='my_target',",
+ " deps=[':bundle_lib'],",
+ ")",
+ "objc_import(",
+ " name='bundle_lib',",
+ " archives = ['bar.a'],",
+ " strings=['foo.strings'],",
+ ")");
+
+ setSkylarkSemanticsOptions("--incompatible_disable_objc_provider_resources=false");
+ ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
+
+ assertThat(skylarkTarget.get("strings"))
+ .isEqualTo("depset([<source file examples/apple_skylark/foo.strings>])");
+ }
+
private void checkSkylarkRunMemleaksWithExpectedValue(boolean expectedValue) throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(