diff options
Diffstat (limited to 'src/test/java/com/google')
3 files changed, 153 insertions, 113 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java index a697c6ec76..4d6109fe9a 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java @@ -40,7 +40,6 @@ import com.google.devtools.build.lib.testutil.TestUtils; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.build.lib.view.config.crosstool.CrosstoolConfig.CToolchain; import com.google.protobuf.TextFormat; -import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.Map; @@ -95,7 +94,7 @@ public class CcToolchainFeaturesTest { private Set<String> getEnabledFeatures(CcToolchainFeatures features, String... requestedFeatures) throws Exception { FeatureConfiguration configuration = - features.getFeatureConfiguration(Arrays.asList(requestedFeatures)); + features.getFeatureConfiguration(assumptionsFor(requestedFeatures)); ImmutableSet.Builder<String> enabledFeatures = ImmutableSet.builder(); for (String feature : features.getActivatableNames()) { if (configuration.isEnabled(feature)) { @@ -105,47 +104,61 @@ public class CcToolchainFeaturesTest { return enabledFeatures.build(); } + private FeatureSpecification assumptionsFor(String... requestedFeatures) { + return FeatureSpecification.create( + ImmutableSet.copyOf(requestedFeatures), ImmutableSet.<String>of()); + } + @Test public void testUnconditionalFeature() throws Exception { - assertThat(buildFeatures("").getFeatureConfiguration("a") - .isEnabled("a")).isFalse(); - assertThat(buildFeatures("feature { name: 'a' }").getFeatureConfiguration("b") - .isEnabled("a")).isFalse(); - assertThat(buildFeatures("feature { name: 'a' }").getFeatureConfiguration("a") - .isEnabled("a")).isTrue(); + assertThat(buildFeatures("").getFeatureConfiguration(assumptionsFor("a")).isEnabled("a")) + .isFalse(); + assertThat( + buildFeatures("feature { name: 'a' }") + .getFeatureConfiguration(assumptionsFor("b")) + .isEnabled("a")) + .isFalse(); + assertThat( + buildFeatures("feature { name: 'a' }") + .getFeatureConfiguration(assumptionsFor("a")) + .isEnabled("a")) + .isTrue(); } @Test public void testUnsupportedAction() throws Exception { - FeatureConfiguration configuration = buildFeatures("").getFeatureConfiguration(); + FeatureConfiguration configuration = + buildFeatures("").getFeatureConfiguration(assumptionsFor()); assertThat(configuration.getCommandLine("invalid-action", createVariables())).isEmpty(); } @Test public void testFlagOrderEqualsSpecOrder() throws Exception { - FeatureConfiguration configuration = buildFeatures( - "feature {", - " name: 'a'", - " flag_set {", - " action: 'c++-compile'", - " flag_group { flag: '-a-c++-compile' }", - " }", - " flag_set {", - " action: 'link'", - " flag_group { flag: '-a-c++-compile' }", - " }", - "}", - "feature {", - " name: 'b'", - " flag_set {", - " action: 'c++-compile'", - " flag_group { flag: '-b-c++-compile' }", - " }", - " flag_set {", - " action: 'link'", - " flag_group { flag: '-b-link' }", - " }", - "}").getFeatureConfiguration("a", "b"); + FeatureConfiguration configuration = + buildFeatures( + "feature {", + " name: 'a'", + " flag_set {", + " action: 'c++-compile'", + " flag_group { flag: '-a-c++-compile' }", + " }", + " flag_set {", + " action: 'link'", + " flag_group { flag: '-a-c++-compile' }", + " }", + "}", + "feature {", + " name: 'b'", + " flag_set {", + " action: 'c++-compile'", + " flag_group { flag: '-b-c++-compile' }", + " }", + " flag_set {", + " action: 'link'", + " flag_group { flag: '-b-link' }", + " }", + "}") + .getFeatureConfiguration(assumptionsFor("a", "b")); List<String> commandLine = configuration.getCommandLine( CppCompileAction.CPP_COMPILE, createVariables()); assertThat(commandLine).containsExactly("-a-c++-compile", "-b-c++-compile").inOrder(); @@ -153,33 +166,35 @@ public class CcToolchainFeaturesTest { @Test public void testEnvVars() throws Exception { - FeatureConfiguration configuration = buildFeatures( - "feature {", - " name: 'a'", - " env_set {", - " action: 'c++-compile'", - " env_entry { key: 'foo', value: 'bar' }", - " env_entry { key: 'cat', value: 'meow' }", - " }", - " flag_set {", - " action: 'c++-compile'", - " flag_group { flag: '-a-c++-compile' }", - " }", - "}", - "feature {", - " name: 'b'", - " env_set {", - " action: 'c++-compile'", - " env_entry { key: 'dog', value: 'woof' }", - " }", - "}", - "feature {", - " name: 'c'", - " env_set {", - " action: 'c++-compile'", - " env_entry { key: 'doNotInclude', value: 'doNotIncludePlease' }", - " }", - "}").getFeatureConfiguration("a", "b"); + FeatureConfiguration configuration = + buildFeatures( + "feature {", + " name: 'a'", + " env_set {", + " action: 'c++-compile'", + " env_entry { key: 'foo', value: 'bar' }", + " env_entry { key: 'cat', value: 'meow' }", + " }", + " flag_set {", + " action: 'c++-compile'", + " flag_group { flag: '-a-c++-compile' }", + " }", + "}", + "feature {", + " name: 'b'", + " env_set {", + " action: 'c++-compile'", + " env_entry { key: 'dog', value: 'woof' }", + " }", + "}", + "feature {", + " name: 'c'", + " env_set {", + " action: 'c++-compile'", + " env_entry { key: 'doNotInclude', value: 'doNotIncludePlease' }", + " }", + "}") + .getFeatureConfiguration(assumptionsFor("a", "b")); Map<String, String> env = configuration.getEnvironmentVariables( CppCompileAction.CPP_COMPILE, createVariables()); assertThat(env).containsExactly("foo", "bar", "cat", "meow", "dog", "woof").inOrder(); @@ -192,14 +207,16 @@ public class CcToolchainFeaturesTest { private List<String> getCommandLineForFlagGroups(String groups, Variables variables) throws Exception { - FeatureConfiguration configuration = buildFeatures( - "feature {", - " name: 'a'", - " flag_set {", - " action: 'c++-compile'", - " " + groups, - " }", - "}").getFeatureConfiguration("a"); + FeatureConfiguration configuration = + buildFeatures( + "feature {", + " name: 'a'", + " flag_set {", + " action: 'c++-compile'", + " " + groups, + " }", + "}") + .getFeatureConfiguration(assumptionsFor("a")); return configuration.getCommandLine(CppCompileAction.CPP_COMPILE, variables); } @@ -997,7 +1014,7 @@ public class CcToolchainFeaturesTest { " flag_group { flag: 'unconditional' }", " }", "}") - .getFeatureConfiguration("a"); + .getFeatureConfiguration(assumptionsFor("a")); assertThat(configuration.getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .containsExactly("unconditional"); @@ -1031,14 +1048,20 @@ public class CcToolchainFeaturesTest { "}", "feature { name: 'b' implies: 'a' }"); assertThat(getEnabledFeatures(features, "b")).containsExactly("a", "b"); - assertThat(features.getFeatureConfiguration("b").getCommandLine(CppCompileAction.CPP_COMPILE, - createVariables("v", "1"))).containsExactly("-f", "1"); + assertThat( + features + .getFeatureConfiguration(assumptionsFor("b")) + .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables("v", "1"))) + .containsExactly("-f", "1"); byte[] serialized = TestUtils.serializeObject(features); CcToolchainFeatures deserialized = (CcToolchainFeatures) TestUtils.deserializeObject(serialized); assertThat(getEnabledFeatures(deserialized, "b")).containsExactly("a", "b"); - assertThat(features.getFeatureConfiguration("b").getCommandLine(CppCompileAction.CPP_COMPILE, - createVariables("v", "1"))).containsExactly("-f", "1"); + assertThat( + features + .getFeatureConfiguration(assumptionsFor("b")) + .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables("v", "1"))) + .containsExactly("-f", "1"); } @Test @@ -1065,12 +1088,12 @@ public class CcToolchainFeaturesTest { "feature {name: 'b'}"); assertThat( features - .getFeatureConfiguration("a", "b") + .getFeatureConfiguration(assumptionsFor("a", "b")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .containsExactly("dummy_flag"); assertThat( features - .getFeatureConfiguration("a") + .getFeatureConfiguration(assumptionsFor("a")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .doesNotContain("dummy_flag"); } @@ -1093,17 +1116,17 @@ public class CcToolchainFeaturesTest { "feature {name: 'c'}"); assertThat( features - .getFeatureConfiguration("a", "b", "c") + .getFeatureConfiguration(assumptionsFor("a", "b", "c")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .containsExactly("dummy_flag"); assertThat( features - .getFeatureConfiguration("a", "b") + .getFeatureConfiguration(assumptionsFor("a", "b")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .doesNotContain("dummy_flag"); assertThat( features - .getFeatureConfiguration("a") + .getFeatureConfiguration(assumptionsFor("a")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .doesNotContain("dummy_flag"); } @@ -1129,17 +1152,17 @@ public class CcToolchainFeaturesTest { "feature {name: 'c2'}"); assertThat( features - .getFeatureConfiguration("a", "b1", "c1", "b2", "c2") + .getFeatureConfiguration(assumptionsFor("a", "b1", "c1", "b2", "c2")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .containsExactly("dummy_flag"); assertThat( features - .getFeatureConfiguration("a", "b1", "c1") + .getFeatureConfiguration(assumptionsFor("a", "b1", "c1")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .containsExactly("dummy_flag"); assertThat( features - .getFeatureConfiguration("a", "b1", "b2") + .getFeatureConfiguration(assumptionsFor("a", "b1", "b2")) .getCommandLine(CppCompileAction.CPP_COMPILE, createVariables())) .doesNotContain("dummy_flag"); } @@ -1162,7 +1185,7 @@ public class CcToolchainFeaturesTest { "}"); FeatureConfiguration featureConfiguration = - toolchainFeatures.getFeatureConfiguration("activates-action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("activates-action-a")); assertThat(featureConfiguration.actionIsConfigured("action-a")).isTrue(); } @@ -1185,11 +1208,11 @@ public class CcToolchainFeaturesTest { "}"); FeatureConfiguration featureConfigurationWithoutAction = - toolchainFeatures.getFeatureConfiguration("requires-action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("requires-action-a")); assertThat(featureConfigurationWithoutAction.isEnabled("requires-action-a")).isFalse(); FeatureConfiguration featureConfigurationWithAction = - toolchainFeatures.getFeatureConfiguration("action-a", "requires-action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("action-a", "requires-action-a")); assertThat(featureConfigurationWithAction.isEnabled("requires-action-a")).isTrue(); } @@ -1208,7 +1231,7 @@ public class CcToolchainFeaturesTest { " name: 'activates-action-a'", " implies: 'action-a'", "}") - .getFeatureConfiguration("activates-action-a"); + .getFeatureConfiguration(assumptionsFor("activates-action-a")); PathFragment crosstoolPath = PathFragment.create("crosstool/"); PathFragment toolPath = configuration.getToolForAction("action-a").getToolPath(crosstoolPath); assertThat(toolPath.toString()).isEqualTo("crosstool/toolchain/a"); @@ -1254,7 +1277,8 @@ public class CcToolchainFeaturesTest { PathFragment crosstoolPath = PathFragment.create("crosstool/"); FeatureConfiguration featureAConfiguration = - toolchainFeatures.getFeatureConfiguration("feature-a", "activates-action-a"); + toolchainFeatures.getFeatureConfiguration( + assumptionsFor("feature-a", "activates-action-a")); assertThat( featureAConfiguration .getToolForAction("action-a") @@ -1263,7 +1287,8 @@ public class CcToolchainFeaturesTest { .isEqualTo("crosstool/toolchain/feature-a"); FeatureConfiguration featureBConfiguration = - toolchainFeatures.getFeatureConfiguration("feature-b", "activates-action-a"); + toolchainFeatures.getFeatureConfiguration( + assumptionsFor("feature-b", "activates-action-a")); assertThat( featureBConfiguration .getToolForAction("action-a") @@ -1272,7 +1297,8 @@ public class CcToolchainFeaturesTest { .isEqualTo("crosstool/toolchain/feature-b"); FeatureConfiguration featureAAndBConfiguration = - toolchainFeatures.getFeatureConfiguration("feature-a", "feature-b", "activates-action-a"); + toolchainFeatures.getFeatureConfiguration( + assumptionsFor("feature-a", "feature-b", "activates-action-a")); assertThat( featureAAndBConfiguration .getToolForAction("action-a") @@ -1281,7 +1307,7 @@ public class CcToolchainFeaturesTest { .isEqualTo("crosstool/toolchain/features-a-and-b"); FeatureConfiguration noFeaturesConfiguration = - toolchainFeatures.getFeatureConfiguration("activates-action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("activates-action-a")); assertThat( noFeaturesConfiguration .getToolForAction("action-a") @@ -1313,7 +1339,7 @@ public class CcToolchainFeaturesTest { PathFragment crosstoolPath = PathFragment.create("crosstool/"); FeatureConfiguration noFeaturesConfiguration = - toolchainFeatures.getFeatureConfiguration("activates-action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("activates-action-a")); try { noFeaturesConfiguration.getToolForAction("action-a").getToolPath(crosstoolPath); @@ -1339,7 +1365,7 @@ public class CcToolchainFeaturesTest { "}"); FeatureConfiguration featureConfiguration = - toolchainFeatures.getFeatureConfiguration("action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("action-a")); assertThat(featureConfiguration.actionIsConfigured("action-a")).isTrue(); } @@ -1362,7 +1388,7 @@ public class CcToolchainFeaturesTest { "}"); FeatureConfiguration featureConfiguration = - toolchainFeatures.getFeatureConfiguration("action-a"); + toolchainFeatures.getFeatureConfiguration(assumptionsFor("action-a")); assertThat(featureConfiguration.isEnabled("activated-feature")).isTrue(); } @@ -1416,7 +1442,7 @@ public class CcToolchainFeaturesTest { " flag_group {flag: 'foo'}", " }", "}") - .getFeatureConfiguration("c++-compile"); + .getFeatureConfiguration(assumptionsFor("c++-compile")); List<String> commandLine = featureConfiguration.getCommandLine("c++-compile", createVariables()); assertThat(commandLine).contains("foo"); @@ -1435,7 +1461,7 @@ public class CcToolchainFeaturesTest { " flag_group {flag: 'foo'}", " }", "}") - .getFeatureConfiguration("c++-compile"); + .getFeatureConfiguration(assumptionsFor("c++-compile")); fail("Should throw InvalidConfigurationException"); } catch (InvalidConfigurationException e) { assertThat(e) @@ -1475,14 +1501,16 @@ public class CcToolchainFeaturesTest { public void testProvidesCollision() throws Exception { try { buildFeatures( - "feature {", - " name: 'a'", - " provides: 'provides_string'", - "}", - "feature {", - " name: 'b'", - " provides: 'provides_string'", - "}").getFeatureConfiguration("a", "b"); + "feature {", + " name: 'a'", + " provides: 'provides_string'", + "}", + "feature {", + " name: 'b'", + " provides: 'provides_string'", + "}") + .getFeatureConfiguration( + FeatureSpecification.create(ImmutableSet.of("a", "b"), ImmutableSet.<String>of())); fail("Should throw CollidingProvidesException on collision, instead did not throw."); } catch (Exception e) { assertThat(e).hasMessageThat().contains("a b"); diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java index 20814450e6..fb8ebbbe8f 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java @@ -89,12 +89,15 @@ public class CppLinkActionTest extends BuildViewTestCase { "dynamic_library_linker_tool", true)) .getFeatureConfiguration( - Link.LinkTargetType.EXECUTABLE.getActionName(), - Link.LinkTargetType.DYNAMIC_LIBRARY.getActionName(), - Link.LinkTargetType.STATIC_LIBRARY.getActionName(), - Link.LinkTargetType.PIC_STATIC_LIBRARY.getActionName(), - Link.LinkTargetType.ALWAYS_LINK_STATIC_LIBRARY.getActionName(), - Link.LinkTargetType.ALWAYS_LINK_PIC_STATIC_LIBRARY.getActionName()); + FeatureSpecification.create( + ImmutableSet.of( + Link.LinkTargetType.EXECUTABLE.getActionName(), + Link.LinkTargetType.DYNAMIC_LIBRARY.getActionName(), + Link.LinkTargetType.STATIC_LIBRARY.getActionName(), + Link.LinkTargetType.PIC_STATIC_LIBRARY.getActionName(), + Link.LinkTargetType.ALWAYS_LINK_STATIC_LIBRARY.getActionName(), + Link.LinkTargetType.ALWAYS_LINK_PIC_STATIC_LIBRARY.getActionName()), + ImmutableSet.<String>of())); } @Test @@ -115,7 +118,10 @@ public class CppLinkActionTest extends BuildViewTestCase { " tool_path: 'toolchain/mock_tool'", " }", "}") - .getFeatureConfiguration("a", Link.LinkTargetType.EXECUTABLE.getActionName()); + .getFeatureConfiguration( + FeatureSpecification.create( + ImmutableSet.of("a", Link.LinkTargetType.EXECUTABLE.getActionName()), + ImmutableSet.<String>of())); CppLinkAction linkAction = createLinkBuilder( @@ -233,7 +239,8 @@ public class CppLinkActionTest extends BuildViewTestCase { " env_entry { key: 'foo', value: 'bar' }", " }", "}") - .getFeatureConfiguration("a"); + .getFeatureConfiguration( + FeatureSpecification.create(ImmutableSet.of("a"), ImmutableSet.<String>of())); CppLinkAction linkAction = createLinkBuilder( @@ -568,9 +575,12 @@ public class CppLinkActionTest extends BuildViewTestCase { " implies: 'dynamic_library_linker_tool'", "}") .getFeatureConfiguration( - "build_interface_libraries", - "dynamic_library_linker_tool", - LinkTargetType.DYNAMIC_LIBRARY.getActionName()); + FeatureSpecification.create( + ImmutableSet.of( + "build_interface_libraries", + "dynamic_library_linker_tool", + LinkTargetType.DYNAMIC_LIBRARY.getActionName()), + ImmutableSet.<String>of())); CppLinkActionBuilder builder = createLinkBuilder( LinkTargetType.DYNAMIC_LIBRARY, diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java index 004347cdc9..fcdbdaf87b 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java @@ -16,6 +16,7 @@ package com.google.devtools.build.lib.rules.cpp; import static com.google.common.truth.Truth.assertThat; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.analysis.ConfiguredTarget; @@ -78,7 +79,8 @@ public class LinkBuildVariablesTest extends BuildViewTestCase { " }", " }", "}") - .getFeatureConfiguration("a"); + .getFeatureConfiguration( + FeatureSpecification.create(ImmutableSet.of("a"), ImmutableSet.<String>of())); return mockFeatureConfiguration.getCommandLine("foo", variables); } |