aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools
diff options
context:
space:
mode:
authorGravatar Googler <noreply@google.com>2018-05-30 10:09:02 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-05-30 10:10:19 -0700
commit547b43e3c41355377beaed703837ce19420d0e31 (patch)
tree024b59f15b954642924d002d3c1089b24544d2d0 /src/test/java/com/google/devtools
parentab259ee0dc6637030338f74823ce4aba7592cf95 (diff)
Add --apple_enable_auto_dsym_dbg flag
This new flag can be used to forcibly enable dSYM generation for dbg apple builds, which is especially useful for debugging in remote builds, which may require the use of dSYMs. RELNOTES: Added --apple_enable_auto_dsym_dbg flag. PiperOrigin-RevId: 198577541
Diffstat (limited to 'src/test/java/com/google/devtools')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleBinaryTest.java46
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java4
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java54
4 files changed, 69 insertions, 42 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 cc8fb258eb..412a4255b5 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
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.actions.CommandAction;
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.config.CompilationMode;
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;
@@ -596,21 +597,21 @@ public class AppleBinaryTest extends ObjcRuleTestCase {
")");
}
- /** Returns the bcsymbolmap artifact for given architecture. */
- protected Artifact bitcodeSymbol(String arch) throws Exception {
+ /** Returns the bcsymbolmap artifact for given architecture and compilation mode. */
+ protected Artifact bitcodeSymbol(String arch, CompilationMode mode) throws Exception {
SpawnAction lipoAction = (SpawnAction) lipoBinAction("//examples/apple_skylark:bin");
String bin =
- configurationBin(arch, ConfigurationDistinguisher.APPLEBIN_IOS)
+ configurationBin(arch, ConfigurationDistinguisher.APPLEBIN_IOS, null, mode)
+ "examples/apple_skylark/bin_bin";
Artifact binArtifact = getFirstArtifactEndingWith(lipoAction.getInputs(), bin);
CommandAction linkAction = (CommandAction) getGeneratingAction(binArtifact);
return getFirstArtifactEndingWith(linkAction.getOutputs(), "bcsymbolmap");
}
- /** Returns the path to the dSYM binary artifact for given architecture. */
- protected String dsymBinaryPath(String arch) throws Exception {
- return configurationBin(arch, ConfigurationDistinguisher.APPLEBIN_IOS)
+ /** Returns the path to the dSYM binary artifact for given architecture and compilation mode. */
+ protected String dsymBinaryPath(String arch, CompilationMode mode) throws Exception {
+ return configurationBin(arch, ConfigurationDistinguisher.APPLEBIN_IOS, null, mode)
+ "examples/apple_skylark/bin.app.dSYM/Contents/Resources/DWARF/bin_bin";
}
@@ -1192,22 +1193,26 @@ public class AppleBinaryTest extends ObjcRuleTestCase {
}
private void checkAppleDebugSymbolProvider_DsymEntries(
- SkylarkDict<String, SkylarkDict<String, Artifact>> outputMap) throws Exception {
+ SkylarkDict<String, SkylarkDict<String, Artifact>> outputMap, CompilationMode compilationMode)
+ throws Exception {
assertThat(outputMap).containsKey("arm64");
assertThat(outputMap).containsKey("armv7");
Map<String, Artifact> arm64 = outputMap.get("arm64");
- assertThat(arm64).containsEntry("bitcode_symbols", bitcodeSymbol("arm64"));
- assertThat(arm64.get("dsym_binary").getExecPathString()).isEqualTo(dsymBinaryPath("arm64"));
+ assertThat(arm64).containsEntry("bitcode_symbols", bitcodeSymbol("arm64", compilationMode));
+ String expectedArm64Path = dsymBinaryPath("arm64", compilationMode);
+ assertThat(arm64.get("dsym_binary").getExecPathString()).isEqualTo(expectedArm64Path);
Map<String, Artifact> armv7 = outputMap.get("armv7");
- assertThat(armv7).containsEntry("bitcode_symbols", bitcodeSymbol("armv7"));
- assertThat(armv7.get("dsym_binary").getExecPathString()).isEqualTo(dsymBinaryPath("armv7"));
+ assertThat(armv7).containsEntry("bitcode_symbols", bitcodeSymbol("armv7", compilationMode));
+ String expectedArmv7Path = dsymBinaryPath("armv7", compilationMode);
+ assertThat(armv7.get("dsym_binary").getExecPathString()).isEqualTo(expectedArmv7Path);
Map<String, Artifact> x8664 = outputMap.get("x86_64");
// Simulator build has bitcode disabled.
assertThat(x8664).doesNotContainKey("bitcode_symbols");
- assertThat(x8664.get("dsym_binary").getExecPathString()).isEqualTo(dsymBinaryPath("x86_64"));
+ String expectedx8664Path = dsymBinaryPath("x86_64", compilationMode);
+ assertThat(x8664.get("dsym_binary").getExecPathString()).isEqualTo(expectedx8664Path);
}
private void checkAppleDebugSymbolProvider_LinkMapEntries(
@@ -1229,7 +1234,20 @@ public class AppleBinaryTest extends ObjcRuleTestCase {
public void testAppleDebugSymbolProviderWithDsymsExposedToSkylark() throws Exception {
useConfiguration(
"--apple_bitcode=embedded", "--apple_generate_dsym", "--ios_multi_cpus=armv7,arm64,x86_64");
- checkAppleDebugSymbolProvider_DsymEntries(generateAppleDebugOutputsSkylarkProviderMap());
+ checkAppleDebugSymbolProvider_DsymEntries(
+ generateAppleDebugOutputsSkylarkProviderMap(), CompilationMode.FASTBUILD);
+ }
+
+ @Test
+ public void testAppleDebugSymbolProviderWithAutoDsymDbgAndDsymsExposedToSkylark()
+ throws Exception {
+ useConfiguration(
+ "--apple_bitcode=embedded",
+ "--compilation_mode=dbg",
+ "--apple_enable_auto_dsym_dbg",
+ "--ios_multi_cpus=armv7,arm64,x86_64");
+ checkAppleDebugSymbolProvider_DsymEntries(
+ generateAppleDebugOutputsSkylarkProviderMap(), CompilationMode.DBG);
}
@Test
@@ -1251,7 +1269,7 @@ public class AppleBinaryTest extends ObjcRuleTestCase {
SkylarkDict<String, SkylarkDict<String, Artifact>> outputMap =
generateAppleDebugOutputsSkylarkProviderMap();
- checkAppleDebugSymbolProvider_DsymEntries(outputMap);
+ checkAppleDebugSymbolProvider_DsymEntries(outputMap, CompilationMode.FASTBUILD);
checkAppleDebugSymbolProvider_LinkMapEntries(outputMap);
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
index 2649ebca97..2809f0477d 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleStaticLibraryTest.java
@@ -215,8 +215,8 @@ public class AppleStaticLibraryTest extends ObjcRuleTestCase {
"--crosstool_top=//tools/osx/crosstool:crosstool");
CommandAction action = (CommandAction) lipoLibAction("//package:test");
- String i386Prefix = configurationBin("i386", ConfigurationDistinguisher.APPLEBIN_IOS, null);
- String x8664Prefix = configurationBin("x86_64", ConfigurationDistinguisher.APPLEBIN_IOS, null);
+ String i386Prefix = configurationBin("i386", ConfigurationDistinguisher.APPLEBIN_IOS);
+ String x8664Prefix = configurationBin("x86_64", ConfigurationDistinguisher.APPLEBIN_IOS);
CommandAction i386BinAction =
(CommandAction)
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java
index 87f86666aa..0d3f945da7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/AppleToolchainSelectionTest.java
@@ -70,7 +70,7 @@ public class AppleToolchainSelectionTest extends ObjcRuleTestCase {
Action lipoAction = actionProducingArtifact("//a:bin", "_lipobin");
String x8664Bin =
- configurationBin("x86_64", ConfigurationDistinguisher.APPLEBIN_IOS, null) + "a/bin_bin";
+ configurationBin("x86_64", ConfigurationDistinguisher.APPLEBIN_IOS) + "a/bin_bin";
Artifact binArtifact = getFirstArtifactEndingWith(lipoAction.getInputs(), x8664Bin);
CppLinkAction linkAction = (CppLinkAction) getGeneratingAction(binArtifact);
CppLinkAction ccArchiveAction =
@@ -93,7 +93,7 @@ public class AppleToolchainSelectionTest extends ObjcRuleTestCase {
.write();
Action lipoAction = actionProducingArtifact("//a:bin", "_lipobin");
String armv7Bin =
- configurationBin("armv7", ConfigurationDistinguisher.APPLEBIN_IOS, null) + "a/bin_bin";
+ configurationBin("armv7", ConfigurationDistinguisher.APPLEBIN_IOS) + "a/bin_bin";
Artifact binArtifact = getFirstArtifactEndingWith(lipoAction.getInputs(), armv7Bin);
CppLinkAction linkAction = (CppLinkAction) getGeneratingAction(binArtifact);
CppLinkAction ccArchiveAction =
@@ -118,8 +118,7 @@ public class AppleToolchainSelectionTest extends ObjcRuleTestCase {
.write();
Action lipoAction = actionProducingArtifact("//a:bin", "_lipobin");
String armv64Bin =
- configurationBin("arm64", ConfigurationDistinguisher.APPLEBIN_IOS, null)
- + "a/bin_bin";
+ configurationBin("arm64", ConfigurationDistinguisher.APPLEBIN_IOS) + "a/bin_bin";
Artifact binArtifact = getFirstArtifactEndingWith(lipoAction.getInputs(), armv64Bin);
CppLinkAction linkAction = (CppLinkAction) getGeneratingAction(binArtifact);
CppLinkAction objcLibArchiveAction = (CppLinkAction) getGeneratingAction(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index 0783ad2cf3..3606cd1cc1 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -129,25 +129,28 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
*/
protected String configurationBin(
String arch, ConfigurationDistinguisher configurationDistinguisher) {
- return configurationBin(arch, configurationDistinguisher, null);
+ return configurationBin(arch, configurationDistinguisher, null, CompilationMode.FASTBUILD);
}
/**
- * Returns the bin dir for artifacts built for a given Apple architecture and minimum OS
- * version (as set by a configuration transition) and configuration distinguisher but the global
- * default for {@code --cpu}.
+ * Returns the bin dir for artifacts built for a given Apple architecture and minimum OS version
+ * (as set by a configuration transition) and configuration distinguisher but the global default
+ * for {@code --cpu}.
*
* @param arch the given Apple architecture which artifacts are built under this configuration.
* Note this will likely be different than the value of {@code --cpu}.
- * @param configurationDistinguisher the configuration distinguisher used to describe the
- * a configuration transition
- * @param minOsVersion the minimum os version for which to compile artifacts in the
- * configuration
+ * @param configurationDistinguisher the configuration distinguisher used to describe the a
+ * configuration transition
+ * @param minOsVersion the minimum os version for which to compile artifacts in the configuration
+ * @param compilationMode the compilation mode used during the build
*/
protected String configurationBin(
- String arch, ConfigurationDistinguisher configurationDistinguisher,
- DottedVersion minOsVersion) {
- return configurationDir(arch, configurationDistinguisher, minOsVersion) + "bin/";
+ String arch,
+ ConfigurationDistinguisher configurationDistinguisher,
+ DottedVersion minOsVersion,
+ CompilationMode compilationMode) {
+ return configurationDir(arch, configurationDistinguisher, minOsVersion, compilationMode)
+ + "bin/";
}
/**
@@ -165,10 +168,12 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
protected String configurationGenfiles(
String arch, ConfigurationDistinguisher configurationDistinguisher,
DottedVersion minOsVersion) {
- return configurationDir(arch, configurationDistinguisher, minOsVersion)
- + getTargetConfiguration().getGenfilesDirectory(RepositoryName.MAIN)
- .getExecPath().getBaseName();
-
+ return configurationDir(
+ arch, configurationDistinguisher, minOsVersion, CompilationMode.FASTBUILD)
+ + getTargetConfiguration()
+ .getGenfilesDirectory(RepositoryName.MAIN)
+ .getExecPath()
+ .getBaseName();
}
private static String toolExecutable(String toolSrcPath) {
@@ -177,26 +182,31 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
}
private String configurationDir(
- String arch, ConfigurationDistinguisher configurationDistinguisher,
- DottedVersion minOsVersion) {
+ String arch,
+ ConfigurationDistinguisher configurationDistinguisher,
+ DottedVersion minOsVersion,
+ CompilationMode compilationMode) {
String minOsSegment = minOsVersion == null ? "" : "-min" + minOsVersion;
+ String modeSegment = compilationModeFlag(compilationMode);
switch (configurationDistinguisher) {
case UNKNOWN:
- return String.format("%s-out/ios_%s-fastbuild/", TestConstants.PRODUCT_NAME, arch);
+ return String.format("%s-out/ios_%s-%s/", TestConstants.PRODUCT_NAME, arch, modeSegment);
case APPLEBIN_IOS:
return String.format(
- "%1$s-out/ios-%2$s%4$s-%3$s-ios_%2$s-fastbuild/",
+ "%1$s-out/ios-%2$s%4$s-%3$s-ios_%2$s-%5$s/",
TestConstants.PRODUCT_NAME,
arch,
configurationDistinguisher.toString().toLowerCase(Locale.US),
- minOsSegment);
+ minOsSegment,
+ modeSegment);
case APPLEBIN_WATCHOS:
return String.format(
- "%1$s-out/watchos-%2$s%4$s-%3$s-watchos_%2$s-fastbuild/",
+ "%1$s-out/watchos-%2$s%4$s-%3$s-watchos_%2$s-%5$s/",
TestConstants.PRODUCT_NAME,
arch,
configurationDistinguisher.toString().toLowerCase(Locale.US),
- minOsSegment);
+ minOsSegment,
+ modeSegment);
default:
throw new AssertionError();
}