diff options
author | hlopko <hlopko@google.com> | 2018-03-22 06:35:17 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-03-22 06:36:36 -0700 |
commit | c655f4ab6e899883946a181f244062c84434940c (patch) | |
tree | 0912e03173c83f6ac7652c3c017332a2e765ea69 | |
parent | bc4a0a2393768457f95ac0a54bfc641fede6032a (diff) |
Readd SkylarkCcToolchainConfigureTest after fix
This is "rollforward" of unknown commit.
RELNOTES: None.
PiperOrigin-RevId: 190055662
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java index f9539acaed..4bb3e6a7cd 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/SkylarkCcToolchainConfigureTest.java @@ -13,6 +13,7 @@ // limitations under the License. package com.google.devtools.build.lib.rules.cpp; +import com.google.common.base.Joiner; import com.google.devtools.build.lib.packages.util.ResourceLoader; import com.google.devtools.build.lib.syntax.SkylarkList.MutableList; import com.google.devtools.build.lib.syntax.util.EvaluationTestCase; @@ -27,6 +28,15 @@ import org.junit.runners.JUnit4; public class SkylarkCcToolchainConfigureTest extends EvaluationTestCase { @Test + public void testActionNames() throws Exception { + newTest() + .testStatement("COMPILE_ACTIONS", MutableList.copyOf(env, CcCommon.ALL_COMPILE_ACTIONS)) + .testStatement("LINK_ACTIONS", MutableList.copyOf(env, CcCommon.ALL_LINK_ACTIONS)) + .testStatement("ARCHIVE_ACTIONS", MutableList.copyOf(env, CcCommon.ALL_ARCHIVE_ACTIONS)) + .testStatement("OTHER_ACTIONS", MutableList.copyOf(env, CcCommon.ALL_OTHER_ACTIONS)); + } + + @Test public void testSplitEscaped() throws Exception { newTest() .testStatement("split_escaped('a:b:c', ':')", MutableList.of(env, "a", "b", "c")) @@ -48,6 +58,131 @@ public class SkylarkCcToolchainConfigureTest extends EvaluationTestCase { .testStatement("split_escaped('a%:', ':')", MutableList.of(env, "a:")); } + @Test + public void testActionConfig() throws Exception { + testStatementWithMultilineOutput( + "action_config('c++-compile', '/usr/bin/gcc')", + "", + " action_config {", + " config_name: 'c++-compile'", + " action_name: 'c++-compile'", + " tool {", + " tool_path: '/usr/bin/gcc'", + " }", + " }"); + } + + @Test + public void testFeature() throws Exception { + testStatementWithMultilineOutput( + "feature(" + + "'fully_static_link', " + + " [ " + + " flag_set(" + + " ['c++-link-dynamic-library', 'c++-link-nodeps-dynamic-library'], " + + " [flag_group([flag('-a'), flag('-b'), flag('-c')])])])", + "", + " feature {", + " name: 'fully_static_link'", + " enabled: true", + " flag_set {", + " action: 'c++-link-dynamic-library'", + " action: 'c++-link-nodeps-dynamic-library'", + " flag_group {", + " flag: '-a'", + " flag: '-b'", + " flag: '-c'", + " }", + " }", + " }"); + } + + @Test + public void testFeatureThoroughly() throws Exception { + testStatementWithMultilineOutput( + "feature(" + + "'fully_static_link', " + + " [ " + + " flag_set(" + + " ['c++-link-dynamic-library'], " + + " [flag_group([flag('-a')])])," + + " flag_set(" + + " ['c++-link-dynamic-library']," + + " [" + + " flag_group(" + + " [flag('-a')]," + + " iterate_over='a')," + + " flag_group(" + + " [flag('-c')]," + + " expand_if_all_available=['a','b']," + + " expand_if_none_available=['a']," + + " expand_if_true=['a','b']," + + " expand_if_false=['a']," + + " expand_if_equal=[['a','val']]," + + " )," + + " flag_group(" + + " [flag('-c')]," + + " iterate_over='a'," + + " expand_if_all_available=['a','b']," + + " expand_if_none_available=['a']," + + " expand_if_true=['a','b']," + + " expand_if_false=['a']," + + " expand_if_equal=[['a','val']]," + + " )" + + " ])," + + " flag_set(" + + " ['c++-link-dynamic-library'], " + + " [flag_group([flag_group([flag('-a')])])])" + + " ])", + "", + " feature {", + " name: 'fully_static_link'", + " enabled: true", + " flag_set {", + " action: 'c++-link-dynamic-library'", + " flag_group {", + " flag: '-a'", + " }", + " }", + " flag_set {", + " action: 'c++-link-dynamic-library'", + " flag_group {", + " iterate_over: 'a'", + " flag: '-a'", + " }", + " flag_group {", + " expand_if_all_available: 'a'", + " expand_if_all_available: 'b'", + " expand_if_none_available: 'a'", + " expand_if_true: 'a'", + " expand_if_true: 'b'", + " expand_if_false: 'a'", + " expand_if_equal { variable: 'a' value: 'val' }", + " flag: '-c'", + " }", + " flag_group {", + " expand_if_all_available: 'a'", + " expand_if_all_available: 'b'", + " expand_if_none_available: 'a'", + " expand_if_true: 'a'", + " expand_if_true: 'b'", + " expand_if_false: 'a'", + " expand_if_equal { variable: 'a' value: 'val' }", + " iterate_over: 'a'", + " flag: '-c'", + " }", + " }", + " flag_set {", + " action: 'c++-link-dynamic-library'", + " flag_group {", + " flag_group {", + " flag: '-a'", + " }", + " }", + " }", + " }"); + } + private ModalTestCase newTest(String... skylarkOptions) throws IOException { return new SkylarkTest(skylarkOptions) // A mock implementation of Label to be able to parse lib_cc_configure under default @@ -61,4 +196,9 @@ public class SkylarkCcToolchainConfigureTest extends EvaluationTestCase { ResourceLoader.readFromResources( TestConstants.BAZEL_REPO_PATH + "tools/cpp/crosstool_utils.bzl")); } + + private void testStatementWithMultilineOutput(String skylarkCode, String... expectedOutput) + throws IOException { + newTest(skylarkCode, Joiner.on(System.getProperty("line.separator")).join(expectedOutput)); + } } |