diff --git a/plugins/kernel_v2/config/vm_provisioner.rb b/plugins/kernel_v2/config/vm_provisioner.rb index af4222f11..912106137 100644 --- a/plugins/kernel_v2/config/vm_provisioner.rb +++ b/plugins/kernel_v2/config/vm_provisioner.rb @@ -62,7 +62,7 @@ module VagrantPlugins current = @config_class.new current.set_options(options) if options - current.call(@config) if block + block.call(current) if block current = @config.merge(current) if @config @config = current end diff --git a/test/unit/plugins/kernel_v2/config/vm_test.rb b/test/unit/plugins/kernel_v2/config/vm_test.rb index e7af9921c..b24f3a363 100644 --- a/test/unit/plugins/kernel_v2/config/vm_test.rb +++ b/test/unit/plugins/kernel_v2/config/vm_test.rb @@ -8,22 +8,24 @@ describe VagrantPlugins::Kernel_V2::VMConfig do describe "#provision" do it "stores the provisioners" do subject.provision("shell", inline: "foo") - subject.provision("shell", inline: "bar") + subject.provision("shell", inline: "bar") { |s| s.path = "baz" } subject.finalize! r = subject.provisioners expect(r.length).to eql(2) expect(r[0].config.inline).to eql("foo") expect(r[1].config.inline).to eql("bar") + expect(r[1].config.path).to eql("baz") end it "allows provisioner settings to be overriden" do - subject.provision("shell", path: "foo", inline: "foo", id: "s") - subject.provision("shell", inline: "bar", id: "s") + subject.provision("shell", path: "foo", id: "s") { |s| s.inline = "foo" } + subject.provision("shell", inline: "bar", id: "s") { |s| s.args = "bar" } subject.finalize! r = subject.provisioners expect(r.length).to eql(1) + expect(r[0].config.args).to eql("bar") expect(r[0].config.inline).to eql("bar") expect(r[0].config.path).to eql("foo") end