diff options
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(); |