diff options
-rw-r--r-- | it.class | 3 | ||||
-rwxr-xr-x | test/exec.t | 3 |
2 files changed, 5 insertions, 1 deletions
@@ -704,7 +704,8 @@ static function shell_command($cmd, ...$args) else { foreach ((array)$values[$key] as $value) - $parts[] = it::_exec_quotevalue($value, "cmd=$cmd key=$key val=$value"); + if ($value !== false) + $parts[] = it::_exec_quotevalue($value, "cmd=$cmd key=$key val=$value"); } $replacements[$tag] = implode(" ", $parts); diff --git a/test/exec.t b/test/exec.t index 5f78482..09e16da 100755 --- a/test/exec.t +++ b/test/exec.t @@ -9,6 +9,9 @@ is(it::exec("echo {0}", 'gna'), "gna\n", "exec with positional argument"); is(it::shell_command("echo {arg}", ['arg' => 'gna07,-:blah']), "echo gna07,-:blah", "don't quote arguments with only whitelistes characters"); is(it::shell_command("echo {arg}", ['arg' => '2>&1']), "echo '2>&1'", "quote arguments with dangerous characters"); is(it::shell_command("echo {arg}", ['arg' => '']), "echo ''", "quote empty arguments"); +is(it::shell_command("echo {arg}", ['arg' => null]), "echo ", "remove null values"); +is(it::shell_command("echo {arg}", ['arg' => false]), "echo ", "remove false values"); +is(it::shell_command("echo {arg}", ['arg' => []]), "echo ", "remove empty arrays"); is( |