aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib
diff options
context:
space:
mode:
authorGravatar lberki <lberki@google.com>2017-10-10 09:38:47 +0200
committerGravatar Marcel Hlopko <hlopko@google.com>2017-10-10 11:24:50 +0200
commit95ee9cb0f1eeb96787387e8dbdb35eb6172b665f (patch)
tree98106d14ac6c2e423409dc562488612f8c34826c /src/test/java/com/google/devtools/build/lib
parentd8a5753a8ce1d9cb6604c325836683f3325e42eb (diff)
if --experimental_apple_mandatory_minimum_version is specified, make Apple rules only add the minimum version of the OS to the output directory name if the configuration is behind an AppleBinaryTransition, or if a minimum_os flag (such as --ios_minimum_os) is specified on the command line.
This is necessary so that the only time the minimum OS version affects the output directory name is when it's explicitly specified and therefore is accessible without looking at the xcode_config rule. Progress towards #3424. RELNOTES: None. PiperOrigin-RevId: 171641295
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
index d6f4b372de..698f33423c 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java
@@ -28,6 +28,7 @@ import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.actions.SpawnAction;
import com.google.devtools.build.lib.analysis.actions.SymlinkAction;
import com.google.devtools.build.lib.analysis.test.InstrumentedFilesProvider;
+import com.google.devtools.build.lib.cmdline.RepositoryName;
import com.google.devtools.build.lib.rules.apple.AppleConfiguration.ConfigurationDistinguisher;
import com.google.devtools.build.lib.rules.apple.ApplePlatform;
import com.google.devtools.build.lib.rules.apple.ApplePlatform.PlatformType;
@@ -37,6 +38,7 @@ import com.google.devtools.build.lib.rules.objc.CompilationSupport.ExtraLinkArgs
import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions.ObjcCrosstoolMode;
import com.google.devtools.build.lib.syntax.SkylarkDict;
import com.google.devtools.build.lib.testutil.Scratch;
+import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
@@ -81,6 +83,35 @@ public class AppleBinaryTest extends ObjcRuleTestCase {
ImmutableSet.of(COCOA_FRAMEWORK_FLAG);
@Test
+ public void testOutputDirectoryWithMandatoryMinimumVersion() throws Exception {
+ scratch.file("a/BUILD",
+ "apple_binary(name='a', platform_type='ios', deps=['b'], minimum_os_version='7.0')",
+ "objc_library(name='b', srcs=['b.c'])");
+
+ useConfiguration(
+ "--experimental_apple_mandatory_minimum_version",
+ "ios_cpus=i386");
+ ConfiguredTarget a = getConfiguredTarget("//a:a");
+ ConfiguredTarget b = getDirectPrerequisite(a, "//a:b");
+
+ PathFragment aPath = a.getConfiguration().getOutputDirectory(RepositoryName.MAIN).getExecPath();
+ PathFragment bPath = b.getConfiguration().getOutputDirectory(RepositoryName.MAIN).getExecPath();
+
+ assertThat(aPath.getPathString()).doesNotMatch("-min[0-9]");
+ assertThat(bPath.getPathString()).contains("-min7.0-");
+ }
+
+ @Test
+ public void testMandatoryMinimumVersionEnforced() throws Exception {
+ scratch.file("a/BUILD", "apple_binary(name='a', platform_type='ios')");
+
+ useConfiguration("--experimental_apple_mandatory_minimum_version");
+ reporter.removeHandler(failFastHandler);
+ getConfiguredTarget("//a:a");
+ assertContainsEvent("This attribute must be explicitly specified");
+ }
+
+ @Test
public void testMandatoryMinimumOsVersionUnset() throws Exception {
RULE_TYPE.scratchTarget(scratch,
"platform_type", "'watchos'");