diff --git a/plugins/guests/omnios/cap/mount_nfs_folder.rb b/plugins/guests/omnios/cap/mount_nfs_folder.rb index 250f77992..0dc2c10ad 100644 --- a/plugins/guests/omnios/cap/mount_nfs_folder.rb +++ b/plugins/guests/omnios/cap/mount_nfs_folder.rb @@ -3,11 +3,17 @@ module VagrantPlugins module Cap class MountNFSFolder def self.mount_nfs_folder(machine, ip, folders) - su_cmd = machine.config.solaris.suexec_cmd - folders.each do |name, opts| - machine.communicate.execute("#{su_cmd} mkdir -p #{opts[:guestpath]}") - machine.communicate.execute("#{su_cmd} /sbin/mount '#{ip}:#{opts[:hostpath]}' '#{opts[:guestpath]}'") + comm = machine.communicate + commands = [] + + folders.each do |_, opts| + commands << <<-EOH.gsub(/^ {14}/, '') + mkdir -p '#{opts[:guestpath]}' + /sbin/mount '#{ip}:#{opts[:hostpath]}' '#{opts[:guestpath]}' + EOH end + + comm.sudo(commands.join("\n")) end end end diff --git a/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb b/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb new file mode 100644 index 000000000..ec5b2cf9f --- /dev/null +++ b/test/unit/plugins/guests/omnios/cap/mount_nfs_folder_test.rb @@ -0,0 +1,47 @@ +require_relative "../../../../base" + +describe "VagrantPlugins::GuestOmniOS::Cap:RSync" do + let(:caps) do + VagrantPlugins::GuestOmniOS::Plugin + .components + .guest_capabilities[:omnios] + end + + let(:machine) { double("machine") } + let(:comm) { VagrantTests::DummyCommunicator::Communicator.new(machine) } + + before do + allow(machine).to receive(:communicate).and_return(comm) + end + + after do + comm.verify_expectations! + end + + describe ".mount_nfs_folder" do + let(:cap) { caps.get(:mount_nfs_folder) } + + let(:ip) { "1.2.3.4" } + + let(:hostpath) { "/host" } + let(:guestpath) { "/guest" } + + it "mounts the folder" do + folders = { + "/vagrant-nfs" => { + type: :nfs, + guestpath: "/guest", + hostpath: "/host", + } + } + cap.mount_nfs_folder(machine, ip, folders) + + expect(comm.received_commands[0]).to match(/mkdir -p '#{guestpath}'/) + expect(comm.received_commands[0]).to match(/'1.2.3.4:#{hostpath}' '#{guestpath}'/) + end + + it "mounts with options" do + pending "not yet implemented" + end + end +end