Skip to content

Commit

Permalink
fix.test.ssh
Browse files Browse the repository at this point in the history
  • Loading branch information
parro-it committed Mar 11, 2021
1 parent 12481b5 commit ba5adbc
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 21 deletions.
23 changes: 21 additions & 2 deletions sshfs/fs.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,30 @@ func (fsys *SSHFS) OpenFile(name string, flag int, perm fs.FileMode) (writefs.Fi

if flag&os.O_CREATE == os.O_CREATE &&
perm.IsDir() {
return nil, fsys.client.MkdirAll(fPath)
err := fsys.client.Mkdir(fPath)
if err != nil {
info, _ := fsys.client.Stat(fPath)
if info != nil {
return nil, fs.ErrExist
}
return nil, err
}
return nil, nil
}

if flag == os.O_TRUNC {
return nil, fsys.client.RemoveDirectory(fPath)
info, err := fsys.client.Stat(fPath)
if err != nil {
return nil, err
}
if info.IsDir() {
err := fsys.client.RemoveDirectory(fPath)
if err != nil {
err = fs.ErrInvalid
}
return nil, err
}
return nil, fsys.client.Remove(fPath)
}

f, err := fsys.client.OpenFile(fPath, flag)
Expand Down
24 changes: 16 additions & 8 deletions sshfs/fs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import (
"testing"

"github.com/mikkeloscar/sshconfig"
"github.com/parro-it/vs/writefstest"
"github.com/stretchr/testify/assert"
"golang.org/x/crypto/ssh"
)
Expand All @@ -15,14 +16,21 @@ func TestSSHFS(t *testing.T) {
Port: 2222,
HostName: "localhost",
}
/*
t.Run("writefstest.TestFS", func(t *testing.T) {
fsys, err := ConnectFromConfig("/var/fixtures", "fakehost")
assert.NoError(t, err)
t.Run("Pass writefstest.TestFS", writefstest.TestFS(fsys))
fsys.Disconnect()
})
*/

t.Run("writefstest.TestFS", func(t *testing.T) {
fsys, err := ConnectFromConfig("/var/fixtures", "fakehost")
assert.NoError(t, err)

sess, err := fsys.ownedSSHCient.NewSession()
defer sess.Close()
assert.NoError(t, err)
err = sess.Run("rm -rf /var/fixtures/dir1 /var/fixtures/dirempty")
assert.NoError(t, err)

t.Run("Pass writefstest.TestFS", writefstest.TestFS(fsys))
fsys.Disconnect()
})

t.Run("Connection", func(t *testing.T) {
t.Run("can be created from an ssh config hostname", func(t *testing.T) {
fsys, err := ConnectFromConfig("/var/fixtures", "fakehost")
Expand Down
33 changes: 22 additions & 11 deletions writefstest/testfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package writefstest

import (
"errors"
"fmt"
"io/fs"
"os"
"strings"
Expand Down Expand Up @@ -31,7 +32,11 @@ func TestFS(fsys writefs.WriteFS) func(t *testing.T) {
t.Run("initialize testing FS", func(t *testing.T) {
for _, dir := range dirs {
err := writefs.MkDir(fsys, dir, fs.FileMode(0755))
if !(err == nil || errors.Is(err, fs.ErrExist)) {
fmt.Println(err, dir)
}
assert.True(t, err == nil || errors.Is(err, fs.ErrExist))

}

for _, file := range files {
Expand Down Expand Up @@ -76,8 +81,25 @@ func TestFS(fsys writefs.WriteFS) func(t *testing.T) {
assert.Nil(t, f)
dirExists(t, dir)
}
dirRemove := func(t *testing.T, dir string) {
f, _ := fsys.OpenFile(dir, os.O_TRUNC, 0)
assert.Nil(t, f)
fileNotExists(t, dir)
}
checkDirRemoved := func(t *testing.T, dir string) {
err := writefs.MkDir(fsys, dir, fs.FileMode(0755))
assert.True(t, err == nil || os.IsExist(err))
dirExists(t, dir)

f, err := fsys.OpenFile(dir, os.O_TRUNC, 0)
assert.NoError(t, err)
assert.Nil(t, f)
fileNotExists(t, dir)
}
t.Run("creates directories with OpenFile - nested and not recursively", func(t *testing.T) {
dirRemove(t, "adir/nested")
dirRemove(t, "adir")

// nested dir return error
f, err := fsys.OpenFile("adir/nested", os.O_CREATE, fs.FileMode(0755)|fs.ModeDir)
assert.Error(t, err)
Expand All @@ -95,17 +117,6 @@ func TestFS(fsys writefs.WriteFS) func(t *testing.T) {
})
})

checkDirRemoved := func(t *testing.T, dir string) {
err := writefs.MkDir(fsys, dir, fs.FileMode(0755))
assert.True(t, err == nil || os.IsExist(err))
dirExists(t, dir)

f, err := fsys.OpenFile(dir, os.O_TRUNC, 0)
assert.NoError(t, err)
assert.Nil(t, f)
fileNotExists(t, dir)
}

t.Run("remove files with OpenFile", func(t *testing.T) {
file := "dir1/somenewfile"
_, err := writefs.WriteFile(fsys, file, []byte(file))
Expand Down

0 comments on commit ba5adbc

Please sign in to comment.