aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google
diff options
context:
space:
mode:
Diffstat (limited to 'src/test/java/com/google')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CcToolchainFeaturesTest.java230
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java32
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/LinkBuildVariablesTest.java4
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);
}