vagrant-sshfs 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5dfa628705000436923d10ab6c28c81b0a0224f0
4
- data.tar.gz: dcbd353a54a12bfbc5fe3c44673b027213d7873b
3
+ metadata.gz: e143084a7768bace31ec459ae109ee5ccf28c7d2
4
+ data.tar.gz: 3e24221afc2606cbee0bde74375533a5f4e9e753
5
5
  SHA512:
6
- metadata.gz: 93ef3f2a946e095d197cd49a9af02cbbc83970905a867f1a5092a71e13c10e313392337f373396058f391830b49fa0120b2bde0e8a442d900c168a781c8cbe2e
7
- data.tar.gz: 74aad85b4d51019b5af792be1feebf4e99f6c59edab6d8299f723dd12bcd1ccfd288a4b205aef733f732fbd2a224c97b52af46dcd5c09e20751673e5942956b4
6
+ metadata.gz: 41a384e958c32f8dff2d5382ae2e98ceced18af213967f3709d8310fc103ea08b00394a5c5e20ed83cb7399739caca4d5227e8ec199fa6ab2f4daf5949cfbb46
7
+ data.tar.gz: 313b0fa48db0015bb8862918975a5d090af0e42324ce93aff202d1cd5a840b759f5e331f74ad24495e5a6f2ab3ebc2cf569d3dfd0ed1995e173f5ce89b2eb993
data/README.adoc CHANGED
@@ -50,8 +50,8 @@ folder plugin from the Vagrant core code and molding it to fit SSHFS.
50
50
  [[modes-of-operation]]
51
51
  == Modes of Operation
52
52
 
53
- [[sharing-vagrant-host-directory-to-vagrant-guest---98-of-users]]
54
- === Sharing Vagrant Host Directory to Vagrant Guest - 98% of users
53
+ [[sharing-vagrant-host-directory-to-vagrant-guest---94-of-users]]
54
+ === Sharing Vagrant Host Directory to Vagrant Guest - 94% of users
55
55
 
56
56
  This plugin uses SSHFS slave mounts (see
57
57
  https://github.com/dustymabe/vagrant-sshfs/issues/11[link]) to mount a
@@ -75,8 +75,8 @@ See link:#options-specific-to-arbitrary-host-mounting[Options] and
75
75
  link:#appendix-a-using-keys-and-forwarding-ssh-agent[Appendix A] for
76
76
  more information.
77
77
 
78
- [[sharing-vagrant-guest-directory-to-vagrant-host---1-of-users]]
79
- === Sharing Vagrant Guest Directory to Vagrant Host - 1% of users
78
+ [[sharing-vagrant-guest-directory-to-vagrant-host---5-of-users]]
79
+ === Sharing Vagrant Guest Directory to Vagrant Host - 5% of users
80
80
 
81
81
  _NOTE:_ This option is dangerous as data will be destroyed upon
82
82
  `vagrant destroy`
data/RELEASE.txt CHANGED
@@ -1,9 +1,16 @@
1
1
 
2
- Make sure to bump version and commit
3
2
 
4
- Install git-evtag
3
+ # Run viv tests
4
+ cd /guests/sharedfolder/code/github.com/dustymabe/vagrant-sshfs/test/libvirt
5
+ vagrant up
6
+ follow README for running tests
5
7
 
6
- git-evtag sign v1.2.0
8
+ # Make sure to bump version in lib/vagrant-sshfs/version.rb and commit
9
+ # DO NOT TAG YET
10
+
11
+
12
+ # Craft a commit message for the tag. View the commit message for
13
+ a previous tag by running: git tag -l -n100 v1.2.1
7
14
 
8
15
  -> In vim add thanks to contributors - grab info with
9
16
  git log --no-merges --pretty=format:"%h - %an - %s"
@@ -16,6 +23,11 @@ git-evtag sign v1.2.0
16
23
 
17
24
  -> In vim add release message - see previous tag for example
18
25
 
26
+ # After crafting message then install git-evtag and sign
27
+
28
+ git-evtag sign vX.X.X
29
+
30
+
19
31
  close and type in password for signing
20
32
 
21
33
  verify with git-evtag verify v1.2.0
@@ -18,13 +18,23 @@ module VagrantPlugins
18
18
 
19
19
  def self.sshfs_forward_is_folder_mounted(machine, opts)
20
20
  mounted = false
21
- # expand the guest path so we can handle things like "~/vagrant"
22
- expanded_guest_path = machine.guest.capability(
23
- :shell_expand_guest_path, opts[:guestpath])
21
+ guest_path = opts[:guestpath]
22
+
23
+ # If the path doesn't exist at all in the machine then we
24
+ # can safely say it is not mounted
25
+ exists = machine.communicate.test("test -e #{guest_path}")
26
+ return false unless exists
27
+
28
+ # find the absolute path so that we can properly check if it is mounted
29
+ # https://github.com/dustymabe/vagrant-sshfs/issues/44
30
+ absolute_guest_path = machine.guest.capability(
31
+ :sshfs_get_absolute_path, guest_path)
32
+
33
+ # consult /proc/mounts to see if it is mounted or not
24
34
  machine.communicate.execute("cat /proc/mounts") do |type, data|
25
35
  if type == :stdout
26
36
  data.each_line do |line|
27
- if line.split()[1] == expanded_guest_path
37
+ if line.split()[1] == absolute_guest_path
28
38
  mounted = true
29
39
  break
30
40
  end
@@ -105,7 +115,7 @@ module VagrantPlugins
105
115
 
106
116
  protected
107
117
 
108
- def self.windows_uninherit_handles
118
+ def self.windows_uninherit_handles(machine)
109
119
  # For win32-process Process.create, if we pass any file handles to the
110
120
  # underlying process for stdin/stdout/stderr then all file handles are
111
121
  # inherited by default. We'll explicitly go through and set all Handles
@@ -114,12 +124,27 @@ module VagrantPlugins
114
124
  # https://github.com/djberg96/win32-process/blob/6b380f450aebb69d44bb7accd958ecb6b9e1d246/lib/win32/process.rb#L445-L447
115
125
  # bInheritHandles from https://msdn.microsoft.com/en-us/library/windows/desktop/ms682425(v=vs.85).aspx
116
126
  #
127
+ # In 6f285cd we made it so that we would uninherit all filehandles by
128
+ # default on windows. Some users have reported that this operation
129
+ # is erroring because `The parameter is incorrect.`. See #52
130
+ # We will make the uninheriting operation best effort. The rationale
131
+ # is that if a file handle was not able to be set to uninheritable
132
+ # then it probably wasn't one that would get inherited in the first place.
133
+ #
117
134
  # For each open IO object
118
135
  ObjectSpace.each_object(IO) do |io|
119
136
  if !io.closed?
120
137
  fileno = io.fileno
121
138
  @@logger.debug("Setting file handle #{fileno} to not be inherited")
122
- self.windows_uninherit_handle(fileno)
139
+ begin
140
+ self.windows_uninherit_handle(fileno)
141
+ rescue SystemCallError => error
142
+ msg = "Warning: couldn't set file handle #{fileno} to not be inherited\n"
143
+ msg+= "Message: " + error.message + "\n"
144
+ msg+= "Continuing in best effort...."
145
+ machine.ui.warn(msg)
146
+ @@logger.warn(msg)
147
+ end
123
148
  end
124
149
  end
125
150
  end
@@ -129,7 +154,8 @@ module VagrantPlugins
129
154
  # module by calling For each open IO object. Much of this code was copied from
130
155
  # that module. We access the private methods by using the object.send(:method, args)
131
156
  # technique. In the future we want to get a patch upstream so we don't need to
132
- # access privat methods.
157
+ # access private methods. Upstream request is here:
158
+ # https://github.com/djberg96/win32-process/pulls
133
159
 
134
160
  # Get the windows IO handle and make sure we were successful getting it
135
161
  handle = Process.send(:get_osfhandle, fileno)
@@ -147,8 +173,8 @@ module VagrantPlugins
147
173
  # won't get shared by default. See:
148
174
  # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724935(v=vs.85).aspx
149
175
  #
150
- bool = Process.send(:SetHandleInformation,
151
- handle, Process::Constants::HANDLE_FLAG_INHERIT, 0)
176
+ bool = Process.send(:SetHandleInformation, handle,
177
+ Process::Constants::HANDLE_FLAG_INHERIT, 0)
152
178
  raise SystemCallError.new("SetHandleInformation", FFI.errno) unless bool
153
179
  end
154
180
 
@@ -224,7 +250,7 @@ module VagrantPlugins
224
250
  # For windows we need to set it so not all file handles are inherited
225
251
  # by default. See https://github.com/dustymabe/vagrant-sshfs/issues/41
226
252
  # The r1,r2,w1,w2,f1,f2 we pass below will get set back to be shared
227
- self.windows_uninherit_handles
253
+ self.windows_uninherit_handles(machine)
228
254
  # For windows, we are using win32-process' Process.create because ruby
229
255
  # doesn't properly detach processes. See https://github.com/dustymabe/vagrant-sshfs/issues/31
230
256
  Process.create(:command_line => sftp_server_cmd,
@@ -0,0 +1,25 @@
1
+ module VagrantPlugins
2
+ module GuestLinux
3
+ module Cap
4
+ class SSHFSGetAbsolutePath
5
+ def self.sshfs_get_absolute_path(machine, path)
6
+ abs_path = ""
7
+ machine.communicate.execute("readlink -f #{path}") do |type, data|
8
+ if type == :stdout
9
+ abs_path = data
10
+ end
11
+ end
12
+
13
+ if ! abs_path
14
+ # If no real absolute path was detected then error out
15
+ error_class = VagrantPlugins::SyncedFolderSSHFS::Errors::SSHFSGetAbsolutePathFailed
16
+ raise error_class, path: path
17
+ end
18
+
19
+ # Chomp the string so that any trailing newlines are killed
20
+ return abs_path.chomp
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,171 @@
1
+ require "log4r"
2
+ require "vagrant/util/retryable"
3
+ require "tempfile"
4
+
5
+ module VagrantPlugins
6
+ module HostDarwin
7
+ module Cap
8
+ class MountSSHFS
9
+ extend Vagrant::Util::Retryable
10
+ @@logger = Log4r::Logger.new("vagrant::synced_folders::sshfs_reverse_mount")
11
+
12
+ def self.sshfs_reverse_is_folder_mounted(env, opts)
13
+ mounted = false
14
+ hostpath = opts[:hostpath].dup
15
+ hostpath.gsub!("'", "'\\\\''")
16
+ hostpath = hostpath.chomp('/') # remove trailing / if exists
17
+ hostpath = File.expand_path(hostpath) # get the absolute path of the file
18
+ mount_cmd = Vagrant::Util::Which.which('mount')
19
+ result = Vagrant::Util::Subprocess.execute(mount_cmd)
20
+ result.stdout.each_line do |line|
21
+ if line.split()[2] == hostpath
22
+ mounted = true
23
+ break
24
+ end
25
+ end
26
+ return mounted
27
+ end
28
+
29
+ def self.sshfs_reverse_mount_folder(env, machine, opts)
30
+ # opts contains something like:
31
+ # { :type=>:sshfs,
32
+ # :guestpath=>"/sharedfolder",
33
+ # :hostpath=>"/guests/sharedfolder",
34
+ # :disabled=>false
35
+ # :ssh_host=>"192.168.1.1"
36
+ # :ssh_port=>"22"
37
+ # :ssh_username=>"username"
38
+ # :ssh_password=>"password"
39
+ # }
40
+ self.sshfs_mount(machine, opts)
41
+ end
42
+
43
+ def self.sshfs_reverse_unmount_folder(env, machine, opts)
44
+ self.sshfs_unmount(machine, opts)
45
+ end
46
+
47
+ protected
48
+
49
+ # Perform a mount by running an sftp-server on the vagrant host
50
+ # and piping stdin/stdout to sshfs running inside the guest
51
+ def self.sshfs_mount(machine, opts)
52
+
53
+ sshfs_path = Vagrant::Util::Which.which('sshfs')
54
+
55
+ # expand the guest path so we can handle things like "~/vagrant"
56
+ expanded_guest_path = machine.guest.capability(
57
+ :shell_expand_guest_path, opts[:guestpath])
58
+
59
+ # Mount path information
60
+ hostpath = opts[:hostpath].dup
61
+ hostpath.gsub!("'", "'\\\\''")
62
+
63
+ # Add in some sshfs/fuse options that are common to both mount methods
64
+ opts[:sshfs_opts] = ' -o noauto_cache '# disable caching based on mtime
65
+
66
+ # Add in some ssh options that are common to both mount methods
67
+ opts[:ssh_opts] = ' -o StrictHostKeyChecking=no '# prevent yes/no question
68
+ opts[:ssh_opts]+= ' -o ServerAliveInterval=30 ' # send keepalives
69
+
70
+ # SSH connection options
71
+ # Note the backslash escapes for IdentityFile - handles spaces in key path
72
+ ssh_opts = opts[:ssh_opts]
73
+ ssh_opts+= ' -o Port=' + machine.ssh_info[:port].to_s
74
+ ssh_opts+= ' -o "IdentityFile=\"' + machine.ssh_info[:private_key_path][0] + '\""'
75
+ ssh_opts+= ' -o UserKnownHostsFile=/dev/null '
76
+ ssh_opts+= ' -F /dev/null ' # Don't pick up options from user's config
77
+
78
+ ssh_opts_append = opts[:ssh_opts_append].to_s # provided by user
79
+
80
+ # SSHFS executable options
81
+ sshfs_opts = opts[:sshfs_opts]
82
+ sshfs_opts_append = opts[:sshfs_opts_append].to_s # provided by user
83
+
84
+ username = machine.ssh_info[:username]
85
+ host = machine.ssh_info[:host]
86
+
87
+
88
+ # The sshfs command to mount the guest directory on the host
89
+ sshfs_cmd = "#{sshfs_path} #{ssh_opts} #{ssh_opts_append} "
90
+ sshfs_cmd+= "#{sshfs_opts} #{sshfs_opts_append} "
91
+ sshfs_cmd+= "#{username}@#{host}:#{expanded_guest_path} #{hostpath}"
92
+
93
+ # Log some information
94
+ @@logger.debug("sshfs cmd: #{sshfs_cmd}")
95
+
96
+ machine.ui.info(I18n.t("vagrant.sshfs.actions.reverse_mounting_folder",
97
+ hostpath: hostpath, guestpath: expanded_guest_path))
98
+
99
+ # Log STDERR to predictable files so that we can inspect them
100
+ # later in case things go wrong. We'll use the machines data
101
+ # directory (i.e. .vagrant/machines/default/virtualbox/) for this
102
+ f1path = machine.data_dir.join('vagrant_sshfs_sshfs_stderr.txt')
103
+ f1 = File.new(f1path, 'w+')
104
+
105
+ # Launch sshfs command to mount guest dir into the host
106
+ if Vagrant::Util::Platform.windows?
107
+ # Need to handle Windows differently. Kernel.spawn fails to work,
108
+ # if the shell creating the process is closed.
109
+ # See https://github.com/dustymabe/vagrant-sshfs/issues/31
110
+ Process.create(:command_line => ssh_cmd,
111
+ :creation_flags => Process::DETACHED_PROCESS,
112
+ :process_inherit => false,
113
+ :thread_inherit => true,
114
+ :startup_info => {:stdin => w2, :stdout => r1, :stderr => f1})
115
+ else
116
+ p1 = spawn(sshfs_cmd, :out => f1, :err => f1, :pgroup => true)
117
+ Process.detach(p1) # Detach so process will keep running
118
+ end
119
+
120
+ # Check that the mount made it
121
+ mounted = false
122
+ for i in 0..6
123
+ machine.ui.info("Checking Mount..")
124
+ if self.sshfs_reverse_is_folder_mounted(machine, opts)
125
+ mounted = true
126
+ break
127
+ end
128
+ sleep(2)
129
+ end
130
+ if !mounted
131
+ f1.rewind # Seek to beginning of the file
132
+ error_class = VagrantPlugins::SyncedFolderSSHFS::Errors::SSHFSReverseMountFailed
133
+ raise error_class, sshfs_output: f1.read
134
+ end
135
+ machine.ui.info("Folder Successfully Mounted!")
136
+ end
137
+
138
+ def self.sshfs_unmount(machine, opts)
139
+ # opts contains something like:
140
+ # { :type=>:sshfs,
141
+ # :guestpath=>"/sharedfolder",
142
+ # :hostpath=>"/guests/sharedfolder",
143
+ # :disabled=>false
144
+ # :ssh_host=>"192.168.1.1"
145
+ # :ssh_port=>"22"
146
+ # :ssh_username=>"username"
147
+ # :ssh_password=>"password"
148
+ # }
149
+
150
+ # Mount path information
151
+ hostpath = opts[:hostpath].dup
152
+ hostpath.gsub!("'", "'\\\\''")
153
+
154
+ # Log some information
155
+ machine.ui.info(I18n.t("vagrant.sshfs.actions.reverse_unmounting_folder",
156
+ hostpath: hostpath))
157
+
158
+ # Build up the command and connect
159
+ # on linux it is fusermount -u, on mac it is just umount
160
+ error_class = VagrantPlugins::SyncedFolderSSHFS::Errors::SSHFSUnmountFailed
161
+ umount_cmd = Vagrant::Util::Which.which('umount')
162
+ cmd = "#{umount_cmd} #{hostpath}"
163
+ result = Vagrant::Util::Subprocess.execute(*cmd.split())
164
+ if result.exit_code != 0
165
+ raise error_class, command: cmd, stdout: result.stdout, stderr: result.stderr
166
+ end
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
@@ -2,13 +2,6 @@ require "log4r"
2
2
  require "vagrant/util/retryable"
3
3
  require "tempfile"
4
4
 
5
- # This is already done for us in lib/vagrant-sshfs.rb. We needed to
6
- # do it there before Process.uid is called the first time by Vagrant
7
- # This provides a new Process.create() that works on Windows.
8
- if Vagrant::Util::Platform.windows?
9
- require 'win32/process'
10
- end
11
-
12
5
  module VagrantPlugins
13
6
  module HostLinux
14
7
  module Cap
@@ -21,8 +14,7 @@ module VagrantPlugins
21
14
  hostpath = opts[:hostpath].dup
22
15
  hostpath.gsub!("'", "'\\\\''")
23
16
  hostpath = hostpath.chomp('/') # remove trailing / if exists
24
- cat_cmd = Vagrant::Util::Which.which('cat')
25
- result = Vagrant::Util::Subprocess.execute(cat_cmd, '/proc/mounts')
17
+ hostpath = File.expand_path(hostpath) # get the absolute path of the file
26
18
  mounts = File.open('/proc/mounts', 'r')
27
19
  mounts.each_line do |line|
28
20
  if line.split()[1] == hostpath
@@ -33,6 +33,10 @@ module VagrantPlugins
33
33
  class SSHFSExeNotAvailable < SSHFSError
34
34
  error_key(:exe_not_in_host)
35
35
  end
36
+
37
+ class SSHFSGetAbsolutePathFailed < SSHFSError
38
+ error_key(:get_absolute_path_failed)
39
+ end
36
40
  end
37
41
  end
38
42
  end
@@ -35,6 +35,21 @@ module VagrantPlugins
35
35
  VagrantPlugins::HostLinux::Cap::MountSSHFS
36
36
  end
37
37
 
38
+ host_capability("darwin", "sshfs_reverse_mount_folder") do
39
+ require_relative "cap/host/darwin/sshfs_reverse_mount"
40
+ VagrantPlugins::HostDarwin::Cap::MountSSHFS
41
+ end
42
+
43
+ host_capability("darwin", "sshfs_reverse_unmount_folder") do
44
+ require_relative "cap/host/darwin/sshfs_reverse_mount"
45
+ VagrantPlugins::HostDarwin::Cap::MountSSHFS
46
+ end
47
+
48
+ host_capability("darwin", "sshfs_reverse_is_folder_mounted") do
49
+ require_relative "cap/host/darwin/sshfs_reverse_mount"
50
+ VagrantPlugins::HostDarwin::Cap::MountSSHFS
51
+ end
52
+
38
53
  guest_capability("linux", "sshfs_forward_mount_folder") do
39
54
  require_relative "cap/guest/linux/sshfs_forward_mount"
40
55
  VagrantPlugins::GuestLinux::Cap::MountSSHFS
@@ -50,6 +65,11 @@ module VagrantPlugins
50
65
  VagrantPlugins::GuestLinux::Cap::MountSSHFS
51
66
  end
52
67
 
68
+ guest_capability("linux", "sshfs_get_absolute_path") do
69
+ require_relative "cap/guest/linux/sshfs_get_absolute_path"
70
+ VagrantPlugins::GuestLinux::Cap::SSHFSGetAbsolutePath
71
+ end
72
+
53
73
  guest_capability("redhat", "sshfs_installed") do
54
74
  require_relative "cap/guest/redhat/sshfs_client"
55
75
  VagrantPlugins::GuestRedHat::Cap::SSHFSClient
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module SyncedFolderSSHFS
3
- VERSION = "1.2.1"
3
+ VERSION = "1.3.0"
4
4
  end
5
5
  end
@@ -35,6 +35,8 @@ en:
35
35
  try again.
36
36
  sshfs_not_in_guest: |-
37
37
  The necessary SSHFS software is not installed in the guest.
38
+ get_absolute_path_failed: |-
39
+ Could not get the absolute path of the folder within the guest '%{path}'
38
40
  install_failed_arch: |-
39
41
  The install of the sshfs client software failed. On Arch this is most likely
40
42
  because the package lists are not up to date [1] and partial upgrades are not
@@ -10,7 +10,7 @@ vagrant ssh
10
10
  and then:
11
11
 
12
12
  cd /sharedfolder/code/github.com/dustymabe/vagrant-sshfs/
13
- gem install bundler
13
+ gem install bundler # see [2]
14
14
  bundle install --with plugins # see [1]
15
15
  bundle exec rake featuretests
16
16
 
@@ -18,3 +18,6 @@ bundle exec rake featuretests
18
18
  the vagrant-sshfs line in Gemfile because it errored out
19
19
  complaining about it being defined twice. Running with
20
20
  1.12.5 works fine.
21
+ [2] because of [1] need to use this instead:
22
+ gem install bundler --version 1.12.5
23
+
data/test/misc/README.txt CHANGED
@@ -13,17 +13,24 @@ export THIRD_PARTY_HOST='192.168.121.73'
13
13
  export THIRD_PARTY_HOST_USER='vagrant'
14
14
  export THIRD_PARTY_HOST_PASS='vagrant'
15
15
 
16
- # Next vagrant up - will do 3 mounts (normal, slave, reverse).
16
+ # Next vagrant up - will do 4 mounts
17
+ # - slave
18
+ # - slave with sym link
19
+ # - normal
20
+ # - reverse
17
21
  vagrant up
18
22
 
19
23
  # Next run the script to test the mounts:
20
24
  $ bash dotests.sh
21
- Testing normal mount!
22
- a57e39fa692f294e860349a9451be67c
23
- Testing slave mount!
24
- e2c4ceac71dc414cb3ed864cff04a917
25
+ Testing slave forward mount!
26
+ d635332fe7aa4d4fb48e5cb9357bdedf
27
+ Testing slave forward mount with a symlink!
28
+ d635332fe7aa4d4fb48e5cb9357bdedf
29
+ Testing normal forward mount!
30
+ 6ccc3034df924bd289dd16205bf3d629
25
31
  Testing reverse mount!
26
- 508619e7e68e446c84d1fcdf7e0dc577
32
+ 508619e7e68e446c84d1fcdf7e0dc577
27
33
 
28
- # We are printing out the machine-id under each mount to prove each
29
- # mount is from a different machine.
34
+ # We are printing out the machine-id under each mount. The first two
35
+ should be the same, because they are from the same machine. The last
36
+ two should be different.
@@ -2,6 +2,14 @@ Vagrant.configure(2) do |config|
2
2
 
3
3
  config.ssh.insert_key = 'true'
4
4
 
5
+ # Test a forward slave mount:
6
+ # mounting /etc/ from the vagrant host into the guest
7
+ config.vm.synced_folder "/etc/", "/tmp/forward_slave_mount_etc/", type: "sshfs"
8
+
9
+ # Test a forward mount to a location that is a symbolic link
10
+ # https://github.com/dustymabe/vagrant-sshfs/issues/44
11
+ config.vm.synced_folder "/etc/", "/sbin/forward_slave_mount_sym_link_test/", type: "sshfs"
12
+
5
13
  # Test a forward normal mount:
6
14
  # mounting a folder from a 3rd party host into guest
7
15
  config.vm.synced_folder "/etc/", "/tmp/forward_normal_mount_etc/", type: "sshfs",
@@ -9,10 +17,6 @@ Vagrant.configure(2) do |config|
9
17
  ssh_username: ENV['THIRD_PARTY_HOST_USER'],
10
18
  ssh_password: ENV['THIRD_PARTY_HOST_PASS']
11
19
 
12
- # Test a forward slave mount:
13
- # mounting /etc/ from the vagrant host into the guest
14
- config.vm.synced_folder "/etc/", "/tmp/forward_slave_mount_etc/", type: "sshfs"
15
-
16
20
  # Test a reverse mount:
17
21
  # mounting /etc/ from vagrant guest into vagrant host
18
22
  config.vm.synced_folder "/tmp/reverse_mount_etc/", "/etc", type: "sshfs", reverse: true
data/test/misc/dotests.sh CHANGED
@@ -1,13 +1,17 @@
1
1
  #!/bin/bash
2
2
  set -eu
3
3
 
4
- # Test the three mounts we have done
4
+ # Test the four mounts we have done
5
5
 
6
- echo "Testing normal mount!"
7
- vagrant ssh -- cat /tmp/forward_normal_mount_etc/machine-id
8
-
9
- echo "Testing slave mount!"
6
+ echo -en "Testing slave forward mount!\n\t"
10
7
  vagrant ssh -- cat /tmp/forward_slave_mount_etc/machine-id
11
8
 
12
- echo "Testing reverse mount!"
9
+ # https://github.com/dustymabe/vagrant-sshfs/issues/44
10
+ echo -en "Testing slave forward mount with a symlink!\n\t"
11
+ vagrant ssh -- cat /usr/sbin/forward_slave_mount_sym_link_test/machine-id
12
+
13
+ echo -en "Testing normal forward mount!\n\t"
14
+ vagrant ssh -- cat /tmp/forward_normal_mount_etc/machine-id
15
+
16
+ echo -en "Testing reverse mount!\n\t"
13
17
  cat /tmp/reverse_mount_etc/machine-id
@@ -12,7 +12,7 @@ vagrant ssh
12
12
  and then:
13
13
 
14
14
  cd /sharedfolder/code/github.com/dustymabe/vagrant-sshfs/
15
- gem install bundler
15
+ gem install bundler # see [2]
16
16
  bundle install --with plugins # see [1]
17
17
  bundle exec rake featuretests
18
18
 
@@ -20,3 +20,6 @@ bundle exec rake featuretests
20
20
  the vagrant-sshfs line in Gemfile because it errored out
21
21
  complaining about it being defined twice. Running with
22
22
  1.12.5 works fine.
23
+ [2] because of [1] need to use this instead:
24
+ gem install bundler --version 1.12.5
25
+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-sshfs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dusty Mabe
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-11 00:00:00.000000000 Z
11
+ date: 2016-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: win32-process
@@ -118,8 +118,10 @@ files:
118
118
  - lib/vagrant-sshfs/cap/guest/fedora/sshfs_client.rb
119
119
  - lib/vagrant-sshfs/cap/guest/linux/sshfs_client.rb
120
120
  - lib/vagrant-sshfs/cap/guest/linux/sshfs_forward_mount.rb
121
+ - lib/vagrant-sshfs/cap/guest/linux/sshfs_get_absolute_path.rb
121
122
  - lib/vagrant-sshfs/cap/guest/redhat/sshfs_client.rb
122
123
  - lib/vagrant-sshfs/cap/guest/suse/sshfs_client.rb
124
+ - lib/vagrant-sshfs/cap/host/darwin/sshfs_reverse_mount.rb
123
125
  - lib/vagrant-sshfs/cap/host/linux/sshfs_reverse_mount.rb
124
126
  - lib/vagrant-sshfs/command.rb
125
127
  - lib/vagrant-sshfs/errors.rb