aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
diff options
context:
space:
mode:
authorGravatar John Cater <jcater@google.com>2018-03-02 07:27:01 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-02 07:28:59 -0800
commit52ec7fb1c22afea1a172a5720ddca44d88bbdee8 (patch)
treed57046944b71e72504459b3ad84d852e6814867e /src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
parent3b446a28d210c83932e47df2452b4b6224a1834b (diff)
Allow cc_toolchain to have inline proto toolchain data, instead of using crosstool top.
Change-Id: I531034b0c991d18b05818db4b40cbd739535b565 PiperOrigin-RevId: 187617580
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java91
1 files changed, 91 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
index f6c0577ac8..2d98b517bf 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.platform.ToolchainInfo;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.packages.util.MockCcSupport;
import com.google.devtools.build.lib.rules.cpp.CppConfiguration.DynamicMode;
+import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig;
import com.google.devtools.common.options.OptionsParsingException;
import java.io.IOException;
@@ -40,6 +41,9 @@ import org.junit.runners.JUnit4;
*/
@RunWith(JUnit4.class)
public class CcToolchainTest extends BuildViewTestCase {
+ private static final String CPP_TOOLCHAIN_TYPE =
+ TestConstants.TOOLS_REPOSITORY + "//tools/cpp:toolchain_type";
+
@Test
public void testFilesToBuild() throws Exception {
scratch.file("a/BUILD",
@@ -787,4 +791,91 @@ public class CcToolchainTest extends BuildViewTestCase {
assertThat(getConfiguredTarget("//a:b")).isNull();
assertContainsEvent("--fdo_optimize points to a target that is not an input file");
}
+
+ @Test
+ public void testInlineCtoolchain_withoutToolchainResolution() throws Exception {
+ scratch.file(
+ "a/BUILD",
+ "filegroup(",
+ " name='empty')",
+ "cc_toolchain(",
+ " name = 'b',",
+ " cpu = 'banana',",
+ " all_files = ':empty',",
+ " compiler_files = ':empty',",
+ " dwp_files = ':empty',",
+ " linker_files = ':empty',",
+ " strip_files = ':empty',",
+ " objcopy_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'],",
+ " static_runtime_libs = [':empty'],",
+ " proto=\"\"\"",
+ " toolchain_identifier: \"banana\"",
+ " abi_version: \"banana\"",
+ " abi_libc_version: \"banana\"",
+ " compiler: \"banana\"",
+ " host_system_name: \"banana\"",
+ " target_system_name: \"banana\"",
+ " target_cpu: \"banana\"",
+ " target_libc: \"banana\"",
+ " \"\"\")");
+
+ getAnalysisMock()
+ .ccSupport()
+ .setupCrosstool(mockToolsConfig, CrosstoolConfig.CToolchain.newBuilder()
+ .setAbiVersion("orange")
+ .buildPartial());
+
+ useConfiguration();
+
+ ConfiguredTarget target = getConfiguredTarget("//a:b");
+ CcToolchainProvider toolchainProvider =
+ (CcToolchainProvider) target.get(ToolchainInfo.PROVIDER);
+
+ // Without toolchain resolution, this should get the toolchain from the CROSSTOOL, not the
+ // static version in the target.
+ assertThat(toolchainProvider.getAbi()).isEqualTo("orange");
+ }
+
+ @Test
+ public void testInlineCtoolchain_withToolchainResolution() throws Exception {
+ scratch.file(
+ "a/BUILD",
+ "filegroup(",
+ " name='empty')",
+ "cc_toolchain(",
+ " name = 'b',",
+ " cpu = 'banana',",
+ " all_files = ':empty',",
+ " compiler_files = ':empty',",
+ " dwp_files = ':empty',",
+ " linker_files = ':empty',",
+ " strip_files = ':empty',",
+ " objcopy_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'],",
+ " static_runtime_libs = [':empty'],",
+ " proto=\"\"\"",
+ " toolchain_identifier: \"banana\"",
+ " abi_version: \"banana\"",
+ " abi_libc_version: \"banana\"",
+ " compiler: \"banana\"",
+ " host_system_name: \"banana\"",
+ " target_system_name: \"banana\"",
+ " target_cpu: \"banana\"",
+ " target_libc: \"banana\"",
+ " \"\"\")");
+
+ getAnalysisMock()
+ .ccSupport()
+ .setupCrosstool(mockToolsConfig, CrosstoolConfig.CToolchain.newBuilder()
+ .setAbiVersion("orange")
+ .buildPartial());
+
+ useConfiguration("--enabled_toolchain_types=" + CPP_TOOLCHAIN_TYPE);
+
+ ConfiguredTarget target = getConfiguredTarget("//a:b");
+ CcToolchainProvider toolchainProvider =
+ (CcToolchainProvider) target.get(ToolchainInfo.PROVIDER);
+ assertThat(toolchainProvider.getAbi()).isEqualTo("banana");
+ }
}