aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/skylark
diff options
context:
space:
mode:
authorGravatar Dmitry Lomov <dslomov@google.com>2016-02-29 12:13:30 +0000
committerGravatar Kristina Chodorow <kchodorow@google.com>2016-02-29 17:40:17 +0000
commitfa1d76f5485f898c285c68cf28eeed10e6a08b1e (patch)
tree9dc5f35acc7f60dc70a66abffe50b342cc141c98 /src/test/java/com/google/devtools/build/lib/skylark
parentde54bca47ff6a902edef6b4e1730edafc35581af (diff)
Fix the excepton when Skylark rule has 2 executable attributes pointing to the same artifact.
This fix is that we pick the random executable. Filed #987 for a better fix (the current behavior just crashes the build randomly and the real fix is involved). -- MOS_MIGRATED_REVID=115835198
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/skylark')
-rw-r--r--src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
index b8489b90e3..d37754897e 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkAspectsTest.java
@@ -580,6 +580,37 @@ public class SkylarkAspectsTest extends AnalysisTestCase {
}
@Test
+ public void multipleExecutablesInTarget() throws Exception {
+ scratch.file("foo/extension.bzl",
+ "def _aspect_impl(target, ctx):",
+ " return struct()",
+ "my_aspect = aspect(_aspect_impl)",
+ "def _main_rule_impl(ctx):",
+ " pass",
+ "my_rule = rule(_main_rule_impl,",
+ " attrs = { ",
+ " 'exe1' : attr.label(executable = True, allow_files = True),",
+ " 'exe2' : attr.label(executable = True, allow_files = True),",
+ " },",
+ ")"
+ );
+
+ scratch.file("foo/tool.sh", "#!/bin/bash");
+ scratch.file("foo/BUILD",
+ "load('extension', 'my_rule')",
+ "my_rule(name = 'main', exe1 = ':tool.sh', exe2 = ':tool.sh')"
+ );
+ AnalysisResult analysisResultOfRule =
+ update(ImmutableList.<String>of(), "//foo:main");
+ assertThat(analysisResultOfRule.hasError()).isFalse();
+
+ AnalysisResult analysisResultOfAspect =
+ update(ImmutableList.<String>of("/foo/extension.bzl%my_aspect"), "//foo:main");
+ assertThat(analysisResultOfAspect.hasError()).isFalse();
+ }
+
+
+ @Test
public void testAspectFragmentAccessSuccess() throws Exception {
getConfiguredTargetForAspectFragment(
"ctx.fragments.cpp.compiler", "'cpp'", "", "", "");