mirror of https://github.com/databricks/cli.git
63 lines
1.5 KiB
Go
63 lines
1.5 KiB
Go
package fs
|
|
|
|
import (
|
|
"context"
|
|
"runtime"
|
|
"testing"
|
|
|
|
"github.com/databricks/cli/libs/filer"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestFilerForPathForLocalPaths(t *testing.T) {
|
|
tmpDir := t.TempDir()
|
|
ctx := context.Background()
|
|
|
|
f, path, err := filerForPath(ctx, tmpDir)
|
|
assert.NoError(t, err)
|
|
assert.Equal(t, tmpDir, path)
|
|
|
|
info, err := f.Stat(ctx, path)
|
|
require.NoError(t, err)
|
|
assert.True(t, info.IsDir())
|
|
}
|
|
|
|
func TestFilerForPathForInvalidScheme(t *testing.T) {
|
|
ctx := context.Background()
|
|
|
|
_, _, err := filerForPath(ctx, "dbf:/a")
|
|
assert.ErrorContains(t, err, "invalid scheme")
|
|
|
|
_, _, err = filerForPath(ctx, "foo:a")
|
|
assert.ErrorContains(t, err, "invalid scheme")
|
|
|
|
_, _, err = filerForPath(ctx, "file:/a")
|
|
assert.ErrorContains(t, err, "invalid scheme")
|
|
}
|
|
|
|
func testWindowsFilerForPath(t *testing.T, ctx context.Context, fullPath string) {
|
|
f, path, err := filerForPath(ctx, fullPath)
|
|
assert.NoError(t, err)
|
|
|
|
// Assert path remains unchanged
|
|
assert.Equal(t, path, fullPath)
|
|
|
|
// Assert local client is created
|
|
_, ok := f.(*filer.LocalClient)
|
|
assert.True(t, ok)
|
|
}
|
|
|
|
func TestFilerForWindowsLocalPaths(t *testing.T) {
|
|
if runtime.GOOS != "windows" {
|
|
t.SkipNow()
|
|
}
|
|
|
|
ctx := context.Background()
|
|
testWindowsFilerForPath(t, ctx, `c:\abc`)
|
|
testWindowsFilerForPath(t, ctx, `c:abc`)
|
|
testWindowsFilerForPath(t, ctx, `d:\abc`)
|
|
testWindowsFilerForPath(t, ctx, `d:\abc`)
|
|
testWindowsFilerForPath(t, ctx, `f:\abc\ef`)
|
|
}
|