aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/cpp
diff options
context:
space:
mode:
authorGravatar cpeyser <cpeyser@google.com>2017-11-14 08:30:01 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2017-11-14 08:31:57 -0800
commita9808c08c793b96fc9259efa06be5bdbbb9b0316 (patch)
tree9083de4dc2f9bf7f98ec1cce42bb3a346147f7b3 /src/test/java/com/google/devtools/build/lib/rules/cpp
parent4fd788115bdd3e4fa3861bcb4b9caab480543da5 (diff)
Move CppConfiguration#getBuiltinIncludeDirectories to CcToolchainProvider.
PiperOrigin-RevId: 175682806
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/cpp')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainTest.java52
1 files changed, 52 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 1a29eb551f..d0b6c04f53 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
@@ -15,6 +15,7 @@
package com.google.devtools.build.lib.rules.cpp;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.fail;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
@@ -84,6 +85,57 @@ public class CcToolchainTest extends BuildViewTestCase {
getConfiguredTarget("//a:a");
}
+ public void assertInvalidIncludeDirectoryMessage(String entry, String messageRegex)
+ throws Exception {
+ try {
+ scratch.overwriteFile(
+ "a/BUILD",
+ "filegroup(",
+ " name='empty')",
+ "cc_toolchain(",
+ " name = 'b',",
+ " cpu = 'k8',",
+ " all_files = ':banana',",
+ " compiler_files = ':empty',",
+ " dwp_files = ':empty',",
+ " linker_files = ':empty',",
+ " strip_files = ':empty',",
+ " objcopy_files = ':empty',",
+ " dynamic_runtime_libs = [':empty'],",
+ " static_runtime_libs = [':empty'])");
+
+ getAnalysisMock()
+ .ccSupport()
+ .setupCrosstool(
+ mockToolsConfig,
+ CrosstoolConfig.CToolchain.newBuilder()
+ .addCxxBuiltinIncludeDirectory(entry)
+ .buildPartial());
+
+ useConfiguration();
+
+ ConfiguredTarget target = getConfiguredTarget("//a:b");
+ CcToolchainProvider toolchainProvider =
+ (CcToolchainProvider) target.get(ToolchainInfo.PROVIDER);
+ // Must call this function to actually see if there's an error with the directories.
+ toolchainProvider.getBuiltInIncludeDirectories();
+
+ fail("C++ configuration creation succeeded unexpectedly");
+ } catch (AssertionError e) {
+ assertThat(e).hasMessageThat().containsMatch(messageRegex);
+ }
+ }
+
+ @Test
+ public void testInvalidIncludeDirectory() throws Exception {
+ assertInvalidIncludeDirectoryMessage("%package(//a", "has an unrecognized %prefix%");
+ assertInvalidIncludeDirectoryMessage("%package(//a@@a)%", "The package '//a@@a' is not valid");
+ assertInvalidIncludeDirectoryMessage(
+ "%package(//a)%foo", "The path in the package.*is not valid");
+ assertInvalidIncludeDirectoryMessage(
+ "%package(//a)%/../bar", "The include path.*is not normalized");
+ }
+
@Test
public void testModuleMapAttribute() throws Exception {
scratchConfiguredTarget("modules/map", "c",