From dc9b3cd9b3105f40a59cee33d4f05dc19fcd13e4 Mon Sep 17 00:00:00 2001 From: cparsons Date: Wed, 15 Aug 2018 12:42:12 -0700 Subject: Throw an EvalException when run_shell is passed both a command string sequence and arguments. Previously, this resulted in an uncaught UnsupportedOperationException. Closes #5892. RELNOTES: None. PiperOrigin-RevId: 208865301 --- .../lib/skylark/SkylarkRuleImplementationFunctionsTest.java | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java') diff --git a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java index 92e384a4b7..6ab6fe42dd 100644 --- a/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylark/SkylarkRuleImplementationFunctionsTest.java @@ -400,6 +400,16 @@ public class SkylarkRuleImplementationFunctionsTest extends SkylarkTestCase { " command = 'dummy_command')"); } + @Test + public void testRunShellArgumentsWithCommandSequence() throws Exception { + checkErrorContains( + createRuleContext("//foo:foo"), + "'arguments' must be empty if 'command' is a sequence of strings", + "ruleContext.actions.run_shell(outputs = ruleContext.files.srcs,", + " command = [\"echo\", \"'hello world'\", \"&&\", \"touch\"],", + " arguments = [ruleContext.files.srcs[0].path])"); + } + private void setupToolInInputsTest(String... ruleImpl) throws Exception { ImmutableList.Builder lines = ImmutableList.builder(); lines.add("def _main_rule_impl(ctx):"); -- cgit v1.2.3