aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com
diff options
context:
space:
mode:
authorGravatar juliexxia <juliexxia@google.com>2018-06-14 08:27:30 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-14 08:28:50 -0700
commit0c7e80c5491d3207181566c0b17b0d63fc415e14 (patch)
treed3af9ed7ca3e967d82319895b705bbc11e0173bf /src/test/java/com
parent3695591d4b40497380640d7886c55a00d4d3fd70 (diff)
Expose new methods in CcToolchainProvider to eventually replace skylark callables that depend on CToolchain in CppConfiguration.
PiperOrigin-RevId: 200559893
Diffstat (limited to 'src/test/java/com')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainProviderTest.java72
1 files changed, 71 insertions, 1 deletions
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 6835970d46..ce099c9628 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
@@ -14,14 +14,22 @@
package com.google.devtools.build.lib.rules.cpp;
+import static com.google.common.truth.Truth.assertThat;
+
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
import com.google.common.testing.EqualsTester;
import com.google.devtools.build.lib.actions.Artifact;
+import com.google.devtools.build.lib.analysis.ConfiguredTarget;
+import com.google.devtools.build.lib.analysis.util.AnalysisMock;
+import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder;
import com.google.devtools.build.lib.collect.nestedset.Order;
import com.google.devtools.build.lib.rules.cpp.FdoSupport.FdoMode;
import com.google.devtools.build.lib.vfs.PathFragment;
+import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig;
+import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.ToolPath;
+import java.util.List;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -30,7 +38,7 @@ import org.junit.runners.JUnit4;
* Unit tests for {@code CcToolchainProvider}
*/
@RunWith(JUnit4.class)
-public class CcToolchainProviderTest {
+public class CcToolchainProviderTest extends BuildViewTestCase {
@Test
public void equalityIsObjectIdentity() throws Exception {
CcToolchainProvider a =
@@ -112,4 +120,66 @@ public class CcToolchainProviderTest {
.addEqualityGroup(b)
.testEquals();
}
+
+ @Test
+ public void testSkylarkCallables() throws Exception {
+ AnalysisMock.get()
+ .ccSupport()
+ .setupCrosstool(
+ mockToolsConfig,
+ CrosstoolConfig.CToolchain.newBuilder()
+ .addCompilerFlag("-foo_compiler")
+ .addCxxFlag("-foo_cxx")
+ .setBuiltinSysroot("/usr/local/custom-sysroot")
+ .addToolPath(ToolPath.newBuilder().setName("ar").setPath("foo/ar/path").build())
+ .buildPartial());
+ useConfiguration("--cpu=k8");
+ scratch.file("test/rule.bzl",
+ "def _impl(ctx):",
+ " provider = ctx.attr._cc_toolchain[cc_common.CcToolchainInfo]",
+ " return struct(",
+ " dirs = provider.built_in_include_directories,",
+ " link_options = provider.link_options_do_not_use,",
+ " unfiltered_compiler_options = provider.unfiltered_compiler_options([]),",
+ " sysroot = provider.sysroot,",
+ " cpu = provider.cpu,",
+ " compiler_options = provider.compiler_options(),",
+ " cxx_options = provider.cxx_options(),",
+ " ar_executable = provider.ar_executable,",
+ " )",
+ "",
+ "my_rule = rule(",
+ " _impl,",
+ " attrs = {'_cc_toolchain': attr.label(default=Label('//test:toolchain')) }",
+ ")");
+
+ scratch.file("test/BUILD",
+ "load(':rule.bzl', 'my_rule')",
+ "cc_toolchain_alias(name = 'toolchain')",
+ "my_rule(name = 'target')");
+
+ ConfiguredTarget ct = getConfiguredTarget("//test:target");
+
+ @SuppressWarnings("unchecked")
+ List<String> compilerOptions = (List<String>) ct.get("compiler_options");
+ assertThat(compilerOptions).contains("-foo_compiler");
+
+ @SuppressWarnings("unchecked")
+ List<String> cxxOptions = (List<String>) ct.get("cxx_options");
+ assertThat(cxxOptions).contains("-foo_cxx");
+
+ assertThat((String) ct.get("ar_executable")).endsWith("foo/ar/path");
+
+ assertThat(ct.get("cpu")).isEqualTo("k8");
+
+ assertThat(ct.get("sysroot")).isEqualTo("/usr/local/custom-sysroot");
+
+ @SuppressWarnings("unchecked")
+ List<String> linkOptions = (List<String>) ct.get("link_options");
+ assertThat(linkOptions).contains("--sysroot=/usr/local/custom-sysroot");
+
+ @SuppressWarnings("unchecked")
+ List<String> unfilteredCompilerOptions = (List<String>) ct.get("unfiltered_compiler_options");
+ assertThat(unfilteredCompilerOptions).contains("--sysroot=/usr/local/custom-sysroot");
+ }
}