diff options
author | 2016-07-28 14:11:07 +0000 | |
---|---|---|
committer | 2016-07-29 10:09:14 +0000 | |
commit | d9c8cc834c131c75028ff03ca263f29ee1d79b4f (patch) | |
tree | b808837658cb0b7ed2ea023f90285991feef41fb /src/test/java/com/google/devtools/build/lib/rules/cpp/CcLibraryConfiguredTargetTest.java | |
parent | 95a54b98368a1c680c14e13d841b14a27aba01ca (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.java | 43 |
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() |