aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
diff options
context:
space:
mode:
authorGravatar Cal Peyser <cpeyser@google.com>2016-07-28 14:11:07 +0000
committerGravatar Damien Martin-Guillerez <dmarting@google.com>2016-07-29 10:09:14 +0000
commitd9c8cc834c131c75028ff03ca263f29ee1d79b4f (patch)
treeb808837658cb0b7ed2ea023f90285991feef41fb /src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
parent95a54b98368a1c680c14e13d841b14a27aba01ca (diff)
If the toolchain defines an action_config for each type of CppLinkAction,
hardcoded action_configs are not used. -- MOS_MIGRATED_REVID=128695960
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java43
1 files changed, 39 insertions, 4 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
index a374dad06e..9842db86e0 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java
@@ -24,6 +24,7 @@ import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
+import com.google.common.base.Joiner;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
@@ -43,15 +44,13 @@ import com.google.devtools.build.lib.rules.test.InstrumentedFilesProvider;
import com.google.devtools.build.lib.testutil.TestConstants;
import com.google.devtools.build.lib.util.FileType;
import com.google.devtools.build.lib.vfs.PathFragment;
-
+import java.util.ArrayList;
+import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
-import java.util.ArrayList;
-import java.util.List;
-
/**
* "White-box" unit test of cc_library rule.
*/
@@ -242,6 +241,42 @@ public class CcLibraryConfiguredTargetTest extends BuildViewTestCase {
.containsExactlyElementsIn(action.getLinkCommandLine().getLinkopts());
}
+ /**
+ * Tests that if a given crosstool defines action configs for all link actions, that the link
+ * action will be configured from the crosstool instead of from hard-coded action_configs in
+ * {@code CppLinkActionConfigs}.
+ */
+ @Test
+ public void testUsesCrosstoolIfLinkActionDefined() throws Exception {
+ String completeBrokenActionConfigs =
+ Joiner.on("\n")
+ .join(
+ MockCcSupport.INCOMPLETE_EXECUTABLE_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_DYNAMIC_LIBRARY_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_STATIC_LIBRARY_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_PIC_STATIC_LIBRARY_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_ALWAYS_LINK_STATIC_LIBRARY_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_ALWAYS_LINK_PIC_STATIC_LIBRARY_EXECUTABLE_ACTION_CONFIG,
+ MockCcSupport.INCOMPLETE_INTERFACE_DYNAMIC_LIBRARY_ACTION_CONFIG);
+ AnalysisMock.get().ccSupport().setupCrosstool(mockToolsConfig, completeBrokenActionConfigs);
+
+ useConfiguration(
+ "--features=" + Link.LinkTargetType.EXECUTABLE.getActionName(),
+ "--features=" + Link.LinkTargetType.DYNAMIC_LIBRARY.getActionName(),
+ "--features=" + Link.LinkTargetType.STATIC_LIBRARY.getActionName(),
+ "--features=" + Link.LinkTargetType.PIC_STATIC_LIBRARY.getActionName(),
+ "--features=" + Link.LinkTargetType.ALWAYS_LINK_STATIC_LIBRARY.getActionName(),
+ "--features=" + Link.LinkTargetType.ALWAYS_LINK_PIC_STATIC_LIBRARY.getActionName(),
+ "--features=" + Link.LinkTargetType.INTERFACE_DYNAMIC_LIBRARY.getActionName());
+
+ ConfiguredTarget hello = getConfiguredTarget("//hello:hello_static");
+ Artifact archive =
+ FileType.filter(getFilesToBuild(hello), CppFileTypes.ARCHIVE).iterator().next();
+ CppLinkAction action = (CppLinkAction) getGeneratingAction(archive);
+
+ assertThat(Joiner.on(" ").join(action.getArgv())).doesNotContain("hello.pic.o");
+ }
+
@Test
public void testLinkActionCanConsumeArtifactExtensions() throws Exception {
AnalysisMock.get()