package dbr import ( "context" "io/fs" "runtime" "testing" "github.com/databricks/cli/libs/env" "github.com/databricks/cli/libs/fakefs" "github.com/stretchr/testify/assert" ) func requireLinux(t *testing.T) { if runtime.GOOS != "linux" { t.Skipf("skipping test on %s", runtime.GOOS) } } func configureStatFunc(t *testing.T, fi fs.FileInfo, err error) { originalFunc := statFunc statFunc = func(name string) (fs.FileInfo, error) { assert.Equal(t, "/databricks", name) return fi, err } t.Cleanup(func() { statFunc = originalFunc }) } func TestDetect_NotLinux(t *testing.T) { if runtime.GOOS == "linux" { t.Skip("skipping test on Linux OS") } ctx := context.Background() assert.False(t, detect(ctx)) } func TestDetect_Env(t *testing.T) { requireLinux(t) // Configure other checks to pass. configureStatFunc(t, fakefs.FileInfo{FakeDir: true}, nil) t.Run("empty", func(t *testing.T) { ctx := env.Set(context.Background(), "DATABRICKS_RUNTIME_VERSION", "") assert.False(t, detect(ctx)) }) t.Run("non-empty cluster", func(t *testing.T) { ctx := env.Set(context.Background(), "DATABRICKS_RUNTIME_VERSION", "15.4") assert.True(t, detect(ctx)) }) t.Run("non-empty serverless", func(t *testing.T) { ctx := env.Set(context.Background(), "DATABRICKS_RUNTIME_VERSION", "client.1.13") assert.True(t, detect(ctx)) }) } func TestDetect_Stat(t *testing.T) { requireLinux(t) // Configure other checks to pass. ctx := env.Set(context.Background(), "DATABRICKS_RUNTIME_VERSION", "non-empty") t.Run("error", func(t *testing.T) { configureStatFunc(t, nil, fs.ErrNotExist) assert.False(t, detect(ctx)) }) t.Run("not a directory", func(t *testing.T) { configureStatFunc(t, fakefs.FileInfo{}, nil) assert.False(t, detect(ctx)) }) t.Run("directory", func(t *testing.T) { configureStatFunc(t, fakefs.FileInfo{FakeDir: true}, nil) assert.True(t, detect(ctx)) }) }