diff options
author | Dmitry Lomov <dslomov@google.com> | 2016-02-29 12:13:30 +0000 |
---|---|---|
committer | Kristina Chodorow <kchodorow@google.com> | 2016-02-29 17:40:17 +0000 |
commit | fa1d76f5485f898c285c68cf28eeed10e6a08b1e (patch) | |
tree | 9dc5f35acc7f60dc70a66abffe50b342cc141c98 /src/test/java/com/google/devtools/build/lib/skylark | |
parent | de54bca47ff6a902edef6b4e1730edafc35581af (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.java | 31 |
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'", "", "", ""); |