databricks-cli/libs/vfs/filer_test.go

80 lines
1.9 KiB
Go

package vfs
import (
"context"
"errors"
"io/fs"
"os"
"path/filepath"
"strings"
"testing"
"github.com/databricks/cli/libs/filer"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestFilerPath(t *testing.T) {
ctx := context.Background()
wd, err := os.Getwd()
require.NoError(t, err)
// Create a new filer-backed path.
p, err := NewFilerPath(ctx, filepath.FromSlash(wd), filer.NewLocalClient)
require.NoError(t, err)
// Open self.
f, err := p.Open("filer_test.go")
require.NoError(t, err)
defer f.Close()
// Run stat on self.
s, err := f.Stat()
require.NoError(t, err)
assert.Equal(t, "filer_test.go", s.Name())
assert.GreaterOrEqual(t, int(s.Size()), 128)
// Read some bytes.
buf := make([]byte, 1024)
_, err = f.Read(buf)
require.NoError(t, err)
assert.True(t, strings.HasPrefix(string(buf), "package vfs"))
// Open non-existent file.
_, err = p.Open("doesntexist_test.go")
assert.True(t, errors.Is(err, fs.ErrNotExist))
// Stat self.
s, err = p.Stat("filer_test.go")
require.NoError(t, err)
assert.Equal(t, "filer_test.go", s.Name())
assert.GreaterOrEqual(t, int(s.Size()), 128)
// Stat non-existent file.
_, err = p.Stat("doesntexist_test.go")
assert.True(t, errors.Is(err, fs.ErrNotExist))
// ReadDir self.
entries, err := p.ReadDir(".")
require.NoError(t, err)
assert.GreaterOrEqual(t, len(entries), 1)
// ReadDir non-existent directory.
_, err = p.ReadDir("doesntexist")
assert.True(t, errors.Is(err, fs.ErrNotExist))
// ReadFile self.
buf, err = p.ReadFile("filer_test.go")
require.NoError(t, err)
assert.True(t, strings.HasPrefix(string(buf), "package vfs"))
// ReadFile non-existent file.
_, err = p.ReadFile("doesntexist_test.go")
assert.True(t, errors.Is(err, fs.ErrNotExist))
// Parent self.
pp := p.Parent()
require.NotNil(t, pp)
assert.Equal(t, filepath.Join(pp.Native(), "vfs"), p.Native())
}