mirror of https://github.com/databricks/cli.git
80 lines
1.9 KiB
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())
|
|
}
|