diff options
author | lberki <lberki@google.com> | 2017-10-10 09:38:47 +0200 |
---|---|---|
committer | Marcel Hlopko <hlopko@google.com> | 2017-10-10 11:24:50 +0200 |
commit | 95ee9cb0f1eeb96787387e8dbdb35eb6172b665f (patch) | |
tree | 98106d14ac6c2e423409dc562488612f8c34826c /src/test/java/com/google/devtools/build/lib | |
parent | d8a5753a8ce1d9cb6604c325836683f3325e42eb (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.java | 31 |
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'"); |