aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
diff options
context:
space:
mode:
authorGravatar hlopko <hlopko@google.com>2017-04-26 15:16:24 +0200
committerGravatar Vladimir Moskva <vladmos@google.com>2017-04-26 18:04:46 +0200
commit98cfaa1c7b5f80dc64b9f2536f6b8bd58cc94ab2 (patch)
tree7a76cf772eb4aa9e26a57017a21f1a8c50a5dcd1 /src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java
parentd12fb7a4864ab0a192c3d47c3443824eccbb4c74 (diff)
Refactor ActionTester to pass BitSet to factories
When discussing readability review for unknown commit we realized that ActionTester api is not super readable and we could improve it using BitSet. This cl does just that. RELNOTES: None. PiperOrigin-RevId: 154289241
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java62
1 files changed, 46 insertions, 16 deletions
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 546f78fa66..a5358344ce 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
@@ -246,6 +246,15 @@ public class CppLinkActionTest extends BuildViewTestCase {
assertThat(linkAction.getEnvironment()).containsEntry("foo", "bar");
}
+ private enum NonStaticAttributes {
+ OUTPUT_FILE,
+ COMPILATION_INPUTS,
+ NATIVE_DEPS,
+ USE_TEST_ONLY_FLAGS,
+ FAKE,
+ RUNTIME_SOLIB_DIR
+ }
+
/**
* This mainly checks that non-static links don't have identical keys. Many options are only
* allowed on non-static links, and we test several of them here.
@@ -262,30 +271,39 @@ public class CppLinkActionTest extends BuildViewTestCase {
final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration();
ActionTester.runTest(
- 64,
- new ActionCombinationFactory() {
+ NonStaticAttributes.class,
+ new ActionCombinationFactory<NonStaticAttributes>() {
@Override
- public Action generate(int i) throws InterruptedException {
+ public Action generate(ImmutableSet<NonStaticAttributes> attributesToFlip)
+ throws InterruptedException {
CppLinkActionBuilder builder =
new CppLinkActionBuilder(
ruleContext,
- (i & 2) == 0 ? dynamicOutputFile : staticOutputFile,
+ attributesToFlip.contains(NonStaticAttributes.OUTPUT_FILE)
+ ? dynamicOutputFile
+ : staticOutputFile,
CppHelper.getToolchain(ruleContext, ":cc_toolchain"),
CppHelper.getFdoSupport(ruleContext, ":cc_toolchain")) {};
builder.addCompilationInputs(
- (i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2));
- if ((i & 2) == 0) {
+ attributesToFlip.contains(NonStaticAttributes.COMPILATION_INPUTS)
+ ? ImmutableList.of(oFile)
+ : ImmutableList.of(oFile2));
+ if (attributesToFlip.contains(NonStaticAttributes.OUTPUT_FILE)) {
builder.setLinkType(LinkTargetType.DYNAMIC_LIBRARY);
builder.setLibraryIdentifier("foo");
} else {
builder.setLinkType(LinkTargetType.EXECUTABLE);
}
builder.setLinkStaticness(LinkStaticness.DYNAMIC);
- builder.setNativeDeps((i & 4) == 0);
- builder.setUseTestOnlyFlags((i & 8) == 0);
- builder.setFake((i & 16) == 0);
- builder.setRuntimeSolibDir((i & 32) == 0 ? null : PathFragment.create("so1"));
+ builder.setNativeDeps(attributesToFlip.contains(NonStaticAttributes.NATIVE_DEPS));
+ builder.setUseTestOnlyFlags(
+ attributesToFlip.contains(NonStaticAttributes.USE_TEST_ONLY_FLAGS));
+ builder.setFake(attributesToFlip.contains(NonStaticAttributes.FAKE));
+ builder.setRuntimeSolibDir(
+ attributesToFlip.contains(NonStaticAttributes.RUNTIME_SOLIB_DIR)
+ ? null
+ : PathFragment.create("so1"));
builder.setFeatureConfiguration(featureConfiguration);
return builder.build();
@@ -293,6 +311,11 @@ public class CppLinkActionTest extends BuildViewTestCase {
});
}
+ private enum StaticKeyAttributes {
+ OUTPUT_FILE,
+ COMPILATION_INPUTS
+ }
+
/**
* This mainly checks that static library links don't have identical keys, and it also compares
* them with simple dynamic library links.
@@ -309,21 +332,28 @@ public class CppLinkActionTest extends BuildViewTestCase {
final FeatureConfiguration featureConfiguration = getMockFeatureConfiguration();
ActionTester.runTest(
- 4,
- new ActionCombinationFactory() {
+ StaticKeyAttributes.class,
+ new ActionCombinationFactory<StaticKeyAttributes>() {
@Override
- public Action generate(int i) throws InterruptedException {
+ public Action generate(ImmutableSet<StaticKeyAttributes> attributes)
+ throws InterruptedException {
CppLinkActionBuilder builder =
new CppLinkActionBuilder(
ruleContext,
- (i & 2) == 0 ? staticOutputFile : dynamicOutputFile,
+ attributes.contains(StaticKeyAttributes.OUTPUT_FILE)
+ ? staticOutputFile
+ : dynamicOutputFile,
CppHelper.getToolchain(ruleContext, ":cc_toolchain"),
CppHelper.getFdoSupport(ruleContext, ":cc_toolchain")) {};
builder.addCompilationInputs(
- (i & 1) == 0 ? ImmutableList.of(oFile) : ImmutableList.of(oFile2));
+ attributes.contains(StaticKeyAttributes.COMPILATION_INPUTS)
+ ? ImmutableList.of(oFile)
+ : ImmutableList.of(oFile2));
builder.setLinkType(
- (i & 2) == 0 ? LinkTargetType.STATIC_LIBRARY : LinkTargetType.DYNAMIC_LIBRARY);
+ attributes.contains(StaticKeyAttributes.OUTPUT_FILE)
+ ? LinkTargetType.STATIC_LIBRARY
+ : LinkTargetType.DYNAMIC_LIBRARY);
builder.setLibraryIdentifier("foo");
builder.setFeatureConfiguration(featureConfiguration);
return builder.build();