(#10104) Ensure trigger run args are an array prior to join

Prior to this commit, if the args key was a string rather than an array
of strings, the `join` command would fail when appending the arguments
to the run command for a given script. This commit updates that by
ensuring the `args` option is an array prior to joining the arguments.
This commit is contained in:
Brian Cain 2018-08-14 10:26:57 -07:00
parent 64acd68c64
commit 29aba535ce
No known key found for this signature in database
GPG Key ID: 43D51080D357A001
2 changed files with 4 additions and 3 deletions

View File

@ -158,7 +158,8 @@ module Vagrant
@machine.ui.detail(I18n.t("vagrant.trigger.run.inline", command: config.inline)) @machine.ui.detail(I18n.t("vagrant.trigger.run.inline", command: config.inline))
else else
cmd = File.expand_path(config.path, @env.root_path) cmd = File.expand_path(config.path, @env.root_path)
cmd << " #{config.args.join(' ' )}" if config.args args = Array(config.args)
cmd << " #{args.join(' ')}" if !args.empty?
cmd = Shellwords.split(cmd) cmd = Shellwords.split(cmd)
@machine.ui.detail(I18n.t("vagrant.trigger.run.script", path: config.path)) @machine.ui.detail(I18n.t("vagrant.trigger.run.script", path: config.path))

View File

@ -131,11 +131,11 @@ describe Vagrant::Plugin::V2::Trigger do
{info: "hi", run: {inline: "echo 'hi'", env: {"KEY"=>"VALUE"}}, {info: "hi", run: {inline: "echo 'hi'", env: {"KEY"=>"VALUE"}},
exit_codes: [0,50]} } exit_codes: [0,50]} }
let(:path_block) { {warn: "bye", let(:path_block) { {warn: "bye",
run: {path: "script.sh", env: {"KEY"=>"VALUE"}}, run: {path: "script.sh", args: "HELLO", env: {"KEY"=>"VALUE"}},
on_error: :continue} } on_error: :continue} }
let(:path_block_ps1) { {warn: "bye", let(:path_block_ps1) { {warn: "bye",
run: {path: "script.ps1", env: {"KEY"=>"VALUE"}}, run: {path: "script.ps1", args: ["HELLO", "THERE"], env: {"KEY"=>"VALUE"}},
on_error: :continue} } on_error: :continue} }
let(:exit_code) { 0 } let(:exit_code) { 0 }