diff options
author | 2017-07-07 09:39:11 -0400 | |
---|---|---|
committer | 2017-07-07 13:37:35 -0400 | |
commit | 7d58bdcf651bbb3f2a879a547d872a03df5ad306 (patch) | |
tree | d6bc0321d4f010cbb0fac00e3d7019e48b2fb41b /src/test/java/com/google/devtools/build/lib/rules/cpp/CppLinkActionTest.java | |
parent | 2936047ae407fdba9ac432694ae8b72ebee4f488 (diff) |
Do not NPE crash when C++ actions are not configured in crosstool
Show meaningful message instead.
RELNOTES: None.
PiperOrigin-RevId: 161196096
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 | 43 |
1 files changed, 21 insertions, 22 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 55fd396b87..48debc1ea7 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 @@ -36,6 +36,7 @@ import com.google.devtools.build.lib.analysis.util.BuildViewTestCase; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; +import com.google.devtools.build.lib.packages.util.MockCcSupport; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.FeatureConfiguration; import com.google.devtools.build.lib.rules.cpp.CcToolchainFeatures.Variables.VariableValue; import com.google.devtools.build.lib.rules.cpp.CppActionConfigs.CppPlatform; @@ -105,19 +106,13 @@ public class CppLinkActionTest extends BuildViewTestCase { public void testToolchainFeatureFlags() throws Exception { FeatureConfiguration featureConfiguration = CcToolchainFeaturesTest.buildFeatures( + MockCcSupport.INCOMPLETE_EXECUTABLE_ACTION_CONFIG, "feature {", " name: 'a'", " flag_set {", " action: '" + Link.LinkTargetType.EXECUTABLE.getActionName() + "'", " flag_group { flag: 'some_flag' }", " }", - "}", - "action_config {", - " config_name: '" + Link.LinkTargetType.EXECUTABLE.getActionName() + "'", - " action_name: '" + Link.LinkTargetType.EXECUTABLE.getActionName() + "'", - " tool {", - " tool_path: 'toolchain/mock_tool'", - " }", "}") .getFeatureConfiguration( FeatureSpecification.create( @@ -233,6 +228,7 @@ public class CppLinkActionTest extends BuildViewTestCase { public void testToolchainFeatureEnv() throws Exception { FeatureConfiguration featureConfiguration = CcToolchainFeaturesTest.buildFeatures( + MockCcSupport.INCOMPLETE_EXECUTABLE_ACTION_CONFIG, "feature {", " name: 'a'", " env_set {", @@ -241,7 +237,9 @@ public class CppLinkActionTest extends BuildViewTestCase { " }", "}") .getFeatureConfiguration( - FeatureSpecification.create(ImmutableSet.of("a"), ImmutableSet.<String>of())); + FeatureSpecification.create( + ImmutableSet.of(Link.LinkTargetType.EXECUTABLE.getActionName(), "a"), + ImmutableSet.<String>of())); CppLinkAction linkAction = createLinkBuilder( @@ -292,7 +290,8 @@ public class CppLinkActionTest extends BuildViewTestCase { ? dynamicOutputFile : staticOutputFile, CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext), - CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext)) {}; + CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext), + featureConfiguration) {}; builder.addCompilationInputs( attributesToFlip.contains(NonStaticAttributes.COMPILATION_INPUTS) ? ImmutableList.of(oFile) @@ -312,7 +311,6 @@ public class CppLinkActionTest extends BuildViewTestCase { attributesToFlip.contains(NonStaticAttributes.RUNTIME_SOLIB_DIR) ? null : PathFragment.create("so1")); - builder.setFeatureConfiguration(featureConfiguration); return builder.build(); } @@ -353,7 +351,8 @@ public class CppLinkActionTest extends BuildViewTestCase { ? staticOutputFile : dynamicOutputFile, CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext), - CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext)) {}; + CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext), + featureConfiguration) {}; builder.addCompilationInputs( attributes.contains(StaticKeyAttributes.COMPILATION_INPUTS) ? ImmutableList.of(oFile) @@ -363,7 +362,6 @@ public class CppLinkActionTest extends BuildViewTestCase { ? LinkTargetType.STATIC_LIBRARY : LinkTargetType.DYNAMIC_LIBRARY); builder.setLibraryIdentifier("foo"); - builder.setFeatureConfiguration(featureConfiguration); return builder.build(); } }); @@ -385,7 +383,8 @@ public class CppLinkActionTest extends BuildViewTestCase { ruleContext, output, CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext), - CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext)); + CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext), + new FeatureConfiguration()); builder.setLinkType(LinkTargetType.STATIC_LIBRARY); assertThat(builder.canSplitCommandLine()).isTrue(); @@ -427,11 +426,11 @@ public class CppLinkActionTest extends BuildViewTestCase { CppLinkAction linkAction = createLinkBuilder( - Link.LinkTargetType.EXECUTABLE, - "dummyRuleContext/binary2", - objects.build(), - ImmutableList.<LibraryToLink>of(), - new FeatureConfiguration()) + Link.LinkTargetType.EXECUTABLE, + "dummyRuleContext/binary2", + objects.build(), + ImmutableList.<LibraryToLink>of(), + getMockFeatureConfiguration()) .setFake(true) .build(); @@ -477,7 +476,8 @@ public class CppLinkActionTest extends BuildViewTestCase { .getBinDirectory(ruleContext.getRule().getRepository())), ruleContext.getConfiguration(), CppHelper.getToolchainUsingDefaultCcToolchainAttribute(ruleContext), - CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext)) + CppHelper.getFdoSupportUsingDefaultCcToolchainAttribute(ruleContext), + featureConfiguration) .addObjectFiles(nonLibraryInputs) .addLibraries(NestedSetBuilder.wrap(Order.LINK_ORDER, libraryInputs)) .setLinkType(type) @@ -485,8 +485,7 @@ public class CppLinkActionTest extends BuildViewTestCase { .setLinkStaticness( type.staticness() == Staticness.STATIC ? LinkStaticness.FULLY_STATIC - : LinkStaticness.MOSTLY_STATIC) - .setFeatureConfiguration(featureConfiguration); + : LinkStaticness.MOSTLY_STATIC); return builder; } @@ -497,7 +496,7 @@ public class CppLinkActionTest extends BuildViewTestCase { output.getPathString(), ImmutableList.<Artifact>of(), ImmutableList.<LibraryToLink>of(), - new FeatureConfiguration()); + getMockFeatureConfiguration()); } public Artifact getOutputArtifact(String relpath) { |