aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcSkylarkTest.java51
1 files changed, 51 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 25c53ac660..2859878b69 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
@@ -20,10 +20,12 @@ import static com.google.devtools.build.lib.rules.objc.BundleableFile.BUNDLE_PAT
import static org.junit.Assert.fail;
import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.Iterables;
import com.google.common.collect.ObjectArrays;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.packages.SkylarkInfo;
import com.google.devtools.build.lib.rules.apple.AppleToolchain;
import com.google.devtools.build.lib.rules.apple.DottedVersion;
import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions.ObjcCrosstoolMode;
@@ -1257,6 +1259,55 @@ public class ObjcSkylarkTest extends ObjcRuleTestCase {
assertThat(skylarkTarget.get(ObjcProvider.SKYLARK_CONSTRUCTOR)).isNotNull();
}
+ @Test
+ public void testMultiArchSplitTransition() throws Exception {
+ scratch.file("examples/rule/BUILD");
+ scratch.file(
+ "examples/rule/apple_rules.bzl",
+ "def my_rule_impl(ctx):",
+ " return_kwargs = {}",
+ " for cpu_value in ctx.split_attr.deps:",
+ " for child_target in ctx.split_attr.deps[cpu_value]:",
+ " return_kwargs[cpu_value] = struct(objc=child_target.objc)",
+ " return struct(**return_kwargs)",
+ "my_rule = rule(implementation = my_rule_impl,",
+ " attrs = {",
+ " 'deps': attr.label_list(cfg=apple_common.multi_arch_split, providers=[['objc']]),",
+ " 'platform_type': attr.string(mandatory=True),",
+ " 'minimum_os_version': attr.string(mandatory=True)},",
+ " fragments = ['apple'],",
+ ")");
+ scratch.file("examples/apple_skylark/a.cc");
+ scratch.file(
+ "examples/apple_skylark/BUILD",
+ "package(default_visibility = ['//visibility:public'])",
+ "load('/examples/rule/apple_rules', 'my_rule')",
+ "my_rule(",
+ " name = 'my_target',",
+ " deps = [':lib'],",
+ " platform_type = 'ios',",
+ " minimum_os_version='2.2'",
+ ")",
+ "objc_library(",
+ " name = 'lib',",
+ " srcs = ['a.m'],",
+ " hdrs = ['a.h']",
+ ")");
+
+ useConfiguration("--ios_multi_cpus=armv7,arm64");
+ ConfiguredTarget skylarkTarget = getConfiguredTarget("//examples/apple_skylark:my_target");
+ ObjcProvider armv7Objc = ((SkylarkInfo) skylarkTarget.get("ios_armv7"))
+ .getValue("objc", ObjcProvider.class);
+ ObjcProvider arm64Objc = ((SkylarkInfo) skylarkTarget.get("ios_arm64"))
+ .getValue("objc", ObjcProvider.class);
+ assertThat(armv7Objc).isNotNull();
+ assertThat(arm64Objc).isNotNull();
+ assertThat(Iterables.getOnlyElement(armv7Objc.getObjcLibraries()).getExecPathString())
+ .contains("ios_armv7");
+ assertThat(Iterables.getOnlyElement(arm64Objc.getObjcLibraries()).getExecPathString())
+ .contains("ios_arm64");
+ }
+
private void checkSkylarkRunMemleaksWithExpectedValue(boolean expectedValue) throws Exception {
scratch.file("examples/rule/BUILD");
scratch.file(