github.com/databricks/cli@v0.203.0/internal/fs_cat_test.go (about)

     1  package internal
     2  
     3  import (
     4  	"context"
     5  	"io/fs"
     6  	"path"
     7  	"strings"
     8  	"testing"
     9  
    10  	"github.com/databricks/cli/libs/filer"
    11  	"github.com/databricks/databricks-sdk-go"
    12  	"github.com/stretchr/testify/assert"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  func TestAccFsCatForDbfs(t *testing.T) {
    17  	t.Log(GetEnvOrSkipTest(t, "CLOUD_ENV"))
    18  
    19  	ctx := context.Background()
    20  	w, err := databricks.NewWorkspaceClient()
    21  	require.NoError(t, err)
    22  
    23  	tmpDir := temporaryDbfsDir(t, w)
    24  
    25  	f, err := filer.NewDbfsClient(w, tmpDir)
    26  	require.NoError(t, err)
    27  
    28  	err = f.Write(ctx, "a/hello.txt", strings.NewReader("abc"), filer.CreateParentDirectories)
    29  	require.NoError(t, err)
    30  
    31  	stdout, stderr := RequireSuccessfulRun(t, "fs", "cat", "dbfs:"+path.Join(tmpDir, "a", "hello.txt"))
    32  	assert.Equal(t, "", stderr.String())
    33  	assert.Equal(t, "abc", stdout.String())
    34  }
    35  
    36  func TestAccFsCatForDbfsOnNonExistentFile(t *testing.T) {
    37  	t.Log(GetEnvOrSkipTest(t, "CLOUD_ENV"))
    38  
    39  	_, _, err := RequireErrorRun(t, "fs", "cat", "dbfs:/non-existent-file")
    40  	assert.ErrorIs(t, err, fs.ErrNotExist)
    41  }
    42  
    43  func TestAccFsCatForDbfsInvalidScheme(t *testing.T) {
    44  	t.Log(GetEnvOrSkipTest(t, "CLOUD_ENV"))
    45  
    46  	_, _, err := RequireErrorRun(t, "fs", "cat", "dab:/non-existent-file")
    47  	assert.ErrorContains(t, err, "invalid scheme: dab")
    48  }
    49  
    50  func TestAccFsCatDoesNotSupportOutputModeJson(t *testing.T) {
    51  	t.Log(GetEnvOrSkipTest(t, "CLOUD_ENV"))
    52  
    53  	ctx := context.Background()
    54  	w, err := databricks.NewWorkspaceClient()
    55  	require.NoError(t, err)
    56  
    57  	tmpDir := temporaryDbfsDir(t, w)
    58  
    59  	f, err := filer.NewDbfsClient(w, tmpDir)
    60  	require.NoError(t, err)
    61  
    62  	err = f.Write(ctx, "hello.txt", strings.NewReader("abc"))
    63  	require.NoError(t, err)
    64  
    65  	_, _, err = RequireErrorRun(t, "fs", "cat", "dbfs:"+path.Join(tmpDir, "hello.txt"), "--output=json")
    66  	assert.ErrorContains(t, err, "json output not supported")
    67  }
    68  
    69  // TODO: Add test asserting an error when cat is called on an directory. Need this to be
    70  // fixed in the SDK first (https://github.com/databricks/databricks-sdk-go/issues/414)