diff options
author | 2017-11-14 08:30:01 -0800 | |
---|---|---|
committer | 2017-11-14 08:31:57 -0800 | |
commit | a9808c08c793b96fc9259efa06be5bdbbb9b0316 (patch) | |
tree | 9083de4dc2f9bf7f98ec1cce42bb3a346147f7b3 /src/test/java/com/google/devtools/build/lib/rules/cpp | |
parent | 4fd788115bdd3e4fa3861bcb4b9caab480543da5 (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.java | 52 |
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", |