databricks-cli/bundle/deploy/state_test.go

80 lines
1.9 KiB
Go

package deploy
import (
"bytes"
"encoding/json"
"path/filepath"
"testing"
"github.com/databricks/cli/internal/testutil"
"github.com/databricks/cli/libs/fileset"
"github.com/stretchr/testify/require"
)
func TestFromSlice(t *testing.T) {
tmpDir := t.TempDir()
fileset := fileset.New(tmpDir)
testutil.Touch(t, tmpDir, "test1.py")
testutil.Touch(t, tmpDir, "test2.py")
testutil.Touch(t, tmpDir, "test3.py")
files, err := fileset.All()
require.NoError(t, err)
f, err := FromSlice(files)
require.NoError(t, err)
require.Len(t, f, 3)
for _, file := range f {
require.Contains(t, []string{"test1.py", "test2.py", "test3.py"}, file.LocalPath)
}
}
func TestToSlice(t *testing.T) {
tmpDir := t.TempDir()
fileset := fileset.New(tmpDir)
testutil.Touch(t, tmpDir, "test1.py")
testutil.Touch(t, tmpDir, "test2.py")
testutil.Touch(t, tmpDir, "test3.py")
files, err := fileset.All()
require.NoError(t, err)
f, err := FromSlice(files)
require.NoError(t, err)
require.Len(t, f, 3)
s := f.ToSlice(tmpDir)
require.Len(t, s, 3)
for _, file := range s {
require.Contains(t, []string{"test1.py", "test2.py", "test3.py"}, file.Name())
require.Contains(t, []string{
filepath.Join(tmpDir, "test1.py"),
filepath.Join(tmpDir, "test2.py"),
filepath.Join(tmpDir, "test3.py"),
}, file.Absolute)
require.False(t, file.IsDir())
require.NotZero(t, file.Type())
info, err := file.Info()
require.NoError(t, err)
require.NotNil(t, info)
require.Equal(t, file.Name(), info.Name())
}
}
func TestIsLocalStateStale(t *testing.T) {
oldState, err := json.Marshal(DeploymentState{
Seq: 1,
})
require.NoError(t, err)
newState, err := json.Marshal(DeploymentState{
Seq: 2,
})
require.NoError(t, err)
require.True(t, isLocalStateStale(bytes.NewReader(oldState), bytes.NewReader(newState)))
require.False(t, isLocalStateStale(bytes.NewReader(newState), bytes.NewReader(oldState)))
}