diff --git a/vfs/vfstest/write.go b/vfs/vfstest/write.go index 03ad7bfa1..d01797f2f 100644 --- a/vfs/vfstest/write.go +++ b/vfs/vfstest/write.go @@ -5,6 +5,7 @@ import ( "runtime" "testing" + "github.com/rclone/rclone/vfs" "github.com/rclone/rclone/vfs/vfscommon" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -15,7 +16,7 @@ func TestWriteFileNoWrite(t *testing.T) { run.skipIfNoFUSE(t) fd, err := osCreate(run.path("testnowrite")) - assert.NoError(t, err) + require.NoError(t, err) err = fd.Close() assert.NoError(t, err) @@ -110,6 +111,9 @@ func TestWriteFileDup(t *testing.T) { var dupFd uintptr dupFd, err = writeTestDup(fh.Fd()) + if err == vfs.ENOSYS { + t.Skip("dup not supported on this platform") + } require.NoError(t, err) dupFile := os.NewFile(dupFd, fh.Name()) diff --git a/vfs/vfstest/write_other.go b/vfs/vfstest/write_other.go new file mode 100644 index 000000000..762774c1a --- /dev/null +++ b/vfs/vfstest/write_other.go @@ -0,0 +1,20 @@ +// +build !linux,!darwin,!freebsd,!openbsd,!windows + +package vfstest + +import ( + "runtime" + "testing" + + "github.com/rclone/rclone/vfs" +) + +// TestWriteFileDoubleClose tests double close on write +func TestWriteFileDoubleClose(t *testing.T) { + t.Skip("not supported on " + runtime.GOOS) +} + +// writeTestDup performs the platform-specific implementation of the dup() syscall +func writeTestDup(oldfd uintptr) (uintptr, error) { + return oldfd, vfs.ENOSYS +} diff --git a/vfs/vfstest/write_unix.go b/vfs/vfstest/write_unix.go index 1c51d142a..3cf397d67 100644 --- a/vfs/vfstest/write_unix.go +++ b/vfs/vfstest/write_unix.go @@ -1,4 +1,4 @@ -// +build linux darwin freebsd +// +build linux darwin freebsd openbsd package vfstest @@ -8,6 +8,7 @@ import ( "github.com/rclone/rclone/vfs/vfscommon" "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" "golang.org/x/sys/unix" ) @@ -20,7 +21,7 @@ func TestWriteFileDoubleClose(t *testing.T) { } out, err := osCreate(run.path("testdoubleclose")) - assert.NoError(t, err) + require.NoError(t, err) fd := out.Fd() fd1, err := unix.Dup(int(fd)) diff --git a/vfs/vfstest/write_non_unix.go b/vfs/vfstest/write_windows.go similarity index 94% rename from vfs/vfstest/write_non_unix.go rename to vfs/vfstest/write_windows.go index dc07983a4..ea04232ed 100644 --- a/vfs/vfstest/write_non_unix.go +++ b/vfs/vfstest/write_windows.go @@ -1,4 +1,4 @@ -// +build !linux,!darwin,!freebsd +// +build windows package vfstest