aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java23
-rw-r--r--src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java64
4 files changed, 83 insertions, 8 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
index 38266f3105..f1d52092a3 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/BazelMockCcSupport.java
@@ -93,48 +93,57 @@ public final class BazelMockCcSupport extends MockCcSupport {
" 'ppc|compiler': ':cc-compiler-ppc',",
" })",
"cc_toolchain(name = 'cc-compiler-k8', all_files = ':empty', compiler_files = ':empty',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'k8', compiler = 'compiler', libc = 'local', dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-ppc', all_files = ':empty', compiler_files = ':empty',",
- " cpu = 'ppc', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'ppc', compiler = 'compiler', libc = 'local', dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-piii', all_files = ':all-files-piii',",
" compiler_files = ':compiler-files-piii',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'piii', compiler = 'compiler', libc = 'local', dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-darwin', all_files = ':empty', ",
" compiler_files = ':empty',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'darwin', compiler = 'compiler', libc = 'macosx', dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-ios_x86_64', all_files = ':empty', ",
" compiler_files = ':empty',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'ios_x86_64', compiler = 'compiler', libc = 'local', dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-armeabi-v7a', all_files = ':empty', ",
" compiler_files = ':empty',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'armeabi-v7a', compiler = 'compiler', libc = 'armeabi-v7a', ",
+ " dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
")",
"cc_toolchain(name = 'cc-compiler-x64_windows', all_files = ':empty', ",
" compiler_files = ':empty',",
- " cpu = 'local', dwp_files = ':empty', dynamic_runtime_libs = [':empty'], ",
+ " cpu = 'x64_windows', compiler = 'windows_msys64', libc = 'local', ",
+ " dwp_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'], ",
" linker_files = ':empty',",
" module_map = 'crosstool.cppmap', supports_header_parsing = 1,",
" objcopy_files = ':empty', static_runtime_libs = [':empty'], strip_files = ':empty',",
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java b/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java
index 3642fda958..1f51043e49 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/Crosstool.java
@@ -139,6 +139,8 @@ final class Crosstool {
" output_licenses = ['unencumbered'],",
addModuleMap ? " module_map = 'crosstool.cppmap'," : "",
" cpu = '" + arch + "',",
+ " compiler = 'gcc-4.4.0',",
+ " libc = 'glibc-2.3.6-grte',",
" compiler_files = 'compile-" + arch + "',",
" dwp_files = 'dwp-" + arch + "',",
" linker_files = 'link-" + arch + "',",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java
index bc93ba92b2..89d0cbc8f0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java
@@ -37,6 +37,7 @@ public class CcToolchainProviderTest {
CcToolchainProvider a =
new CcToolchainProvider(
null,
+ null,
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
@@ -67,6 +68,7 @@ public class CcToolchainProviderTest {
CcToolchainProvider b =
new CcToolchainProvider(
null,
+ null,
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
NestedSetBuilder.<Artifact>emptySet(Order.STABLE_ORDER),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
index 588ff24842..8bb82384b8 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainSelectionTest.java
@@ -25,6 +25,7 @@ import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter;
import com.google.devtools.build.lib.cmdline.Label;
import com.google.devtools.build.lib.packages.util.MockPlatformSupport;
+import com.google.devtools.build.lib.testutil.MoreAsserts;
import com.google.devtools.build.lib.testutil.TestConstants;
import java.util.List;
import org.junit.Before;
@@ -51,7 +52,7 @@ public class CcToolchainSelectionTest extends BuildViewTestCase {
return compilationSteps.get(0);
}
- private static String CPP_TOOLCHAIN_TYPE =
+ private static final String CPP_TOOLCHAIN_TYPE =
TestConstants.TOOLS_REPOSITORY + "//tools/cpp:toolchain_category";
@Test
@@ -104,4 +105,65 @@ public class CcToolchainSelectionTest extends BuildViewTestCase {
providers.getForToolchainType(Label.parseAbsolute(CPP_TOOLCHAIN_TYPE));
assertThat(toolchain.getKeys()).isEmpty();
}
+
+ @Test
+ public void testCToolchainSelectionFromCcToolchainAttrs() throws Exception {
+ useConfiguration(
+ "--enabled_toolchain_types=" + CPP_TOOLCHAIN_TYPE,
+ "--experimental_platforms=//mock_platform:mock-piii-platform",
+ "--extra_toolchains=//mock_platform:toolchain_cc-compiler-piii");
+ ConfiguredTarget target =
+ ScratchAttributeWriter.fromLabelString(this, "cc_library", "//lib")
+ .setList("srcs", "a.cc")
+ .write();
+ ResolvedToolchainProviders providers =
+ (ResolvedToolchainProviders)
+ getRuleContext(target).getToolchainContext().getResolvedToolchainProviders();
+ CcToolchainProvider toolchain =
+ (CcToolchainProvider)
+ providers.getForToolchainType(Label.parseAbsolute(CPP_TOOLCHAIN_TYPE));
+ assertThat(toolchain.getToolchain().getTargetCpu()).isEqualTo("piii");
+ }
+
+ @Test
+ public void testErrorForIncompleteCcToolchain() throws Exception {
+ mockToolsConfig.create(
+ "incomplete_toolchain/BUILD",
+ "toolchain(",
+ " name = 'incomplete_toolchain_cc-compiler-piii',",
+ " toolchain_type = '" + CPP_TOOLCHAIN_TYPE + "',",
+ " toolchain = ':incomplete_cc-compiler-piii',",
+ " target_compatible_with = ['//mock_platform:mock_value']",
+ ")",
+ "cc_toolchain(",
+ " name = 'incomplete_cc-compiler-piii',",
+ " cpu = 'piii',",
+ " compiler_files = 'compile-piii',",
+ " dwp_files = 'dwp-piii',",
+ " linker_files = 'link-piii',",
+ " strip_files = ':dummy_filegroup',",
+ " objcopy_files = 'objcopy-piii',",
+ " all_files = ':dummy_filegroup',",
+ " static_runtime_libs = ['static-runtime-libs-piii'],",
+ " dynamic_runtime_libs = ['dynamic-runtime-libs-piii'],",
+ ")",
+ "filegroup(name = 'dummy_filegroup')");
+
+ useConfiguration(
+ "--enabled_toolchain_types=" + CPP_TOOLCHAIN_TYPE,
+ "--experimental_platforms=//mock_platform:mock-piii-platform",
+ "--extra_toolchains=//incomplete_toolchain:incomplete_toolchain_cc-compiler-piii");
+
+ AssertionError thrown =
+ MoreAsserts.expectThrows(
+ AssertionError.class,
+ () ->
+ ScratchAttributeWriter.fromLabelString(this, "cc_library", "//lib")
+ .setList("srcs", "a.cc")
+ .write());
+
+ assertThat(thrown)
+ .hasMessageThat()
+ .contains("Using cc_toolchain target requires the attribute 'compiler' to be present");
+ }
}