diff options
author | hlopko <hlopko@google.com> | 2017-04-26 15:16:24 +0200 |
---|---|---|
committer | Vladimir Moskva <vladmos@google.com> | 2017-04-26 18:04:46 +0200 |
commit | 98cfaa1c7b5f80dc64b9f2536f6b8bd58cc94ab2 (patch) | |
tree | 7a76cf772eb4aa9e26a57017a21f1a8c50a5dcd1 /src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java | |
parent | d12fb7a4864ab0a192c3d47c3443824eccbb4c74 (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.java | 62 |
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(); |