Allow Drive Letters on mounts for windows (#115)
This commit is contained in:
parent
762feadfc4
commit
4b29ce6dc1
2 changed files with 74 additions and 3 deletions
|
@ -30,8 +30,11 @@ func (s *Handler) Mount(fss map[string]fs.Filesystem) error {
|
|||
if runtime.GOOS == "windows" {
|
||||
folder = filepath.Dir(s.path)
|
||||
}
|
||||
if err := os.MkdirAll(folder, 0744); err != nil && !os.IsExist(err) {
|
||||
return err
|
||||
|
||||
if filepath.VolumeName(folder) == "" {
|
||||
if err := os.MkdirAll(folder, 0744); err != nil && !os.IsExist(err) {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
cfs, err := fs.NewContainerFs(fss)
|
||||
|
@ -57,7 +60,7 @@ func (s *Handler) Mount(fss map[string]fs.Filesystem) error {
|
|||
|
||||
s.host = host
|
||||
|
||||
log.Info().Str("path", folder).Msg("starting FUSE mount")
|
||||
log.Info().Str("path", s.path).Msg("starting FUSE mount")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
68
fuse/mount_test.go
Normal file
68
fuse/mount_test.go
Normal file
|
@ -0,0 +1,68 @@
|
|||
package fuse
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"runtime"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/distribyted/distribyted/fs"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestHandler(t *testing.T) {
|
||||
if runtime.GOOS != "windows" {
|
||||
t.Skip("test for windows only")
|
||||
}
|
||||
|
||||
require := require.New(t)
|
||||
|
||||
p := "./testmnt"
|
||||
|
||||
h := NewHandler(false, p)
|
||||
|
||||
mem := fs.NewMemory()
|
||||
|
||||
err := mem.Storage.Add(fs.NewMemoryFile([]byte("test")), "/test.txt")
|
||||
require.NoError(err)
|
||||
|
||||
err = h.Mount(map[string]fs.Filesystem{"/mem": mem})
|
||||
require.NoError(err)
|
||||
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
fi, err := os.Stat(filepath.Join(p, "mem", "test.txt"))
|
||||
require.NoError(err)
|
||||
|
||||
require.False(fi.IsDir())
|
||||
require.Equal(int64(4), fi.Size())
|
||||
}
|
||||
|
||||
func TestHandlerDriveLetter(t *testing.T) {
|
||||
if runtime.GOOS != "windows" {
|
||||
t.Skip("test for windows only")
|
||||
}
|
||||
|
||||
require := require.New(t)
|
||||
|
||||
p := "Z:"
|
||||
|
||||
h := NewHandler(false, p)
|
||||
|
||||
mem := fs.NewMemory()
|
||||
|
||||
err := mem.Storage.Add(fs.NewMemoryFile([]byte("test")), "/test.txt")
|
||||
require.NoError(err)
|
||||
|
||||
err = h.Mount(map[string]fs.Filesystem{"/mem": mem})
|
||||
require.NoError(err)
|
||||
|
||||
time.Sleep(5 * time.Second)
|
||||
|
||||
fi, err := os.Stat(filepath.Join(p, "mem", "test.txt"))
|
||||
require.NoError(err)
|
||||
|
||||
require.False(fi.IsDir())
|
||||
require.Equal(int64(4), fi.Size())
|
||||
}
|
Loading…
Reference in a new issue