package libraries import ( "context" "testing" "github.com/databricks/cli/bundle" "github.com/databricks/cli/bundle/config" "github.com/databricks/cli/bundle/config/resources" "github.com/databricks/cli/internal/testutil" "github.com/databricks/databricks-sdk-go/service/compute" "github.com/databricks/databricks-sdk-go/service/jobs" "github.com/stretchr/testify/require" ) func TestValidateEnvironments(t *testing.T) { tmpDir := t.TempDir() testutil.Touch(t, tmpDir, "wheel.whl") b := &bundle.Bundle{ SyncRootPath: tmpDir, Config: config.Root{ Resources: config.Resources{ Jobs: map[string]*resources.Job{ "job": { JobSettings: &jobs.JobSettings{ Environments: []jobs.JobEnvironment{ { Spec: &compute.Environment{ Dependencies: []string{ "./wheel.whl", "simplejson", "/Workspace/Users/foo@bar.com/artifacts/test.whl", }, }, }, }, }, }, }, }, }, } diags := bundle.Apply(context.Background(), b, ExpandGlobReferences()) require.Nil(t, diags) } func TestValidateEnvironmentsNoFile(t *testing.T) { tmpDir := t.TempDir() b := &bundle.Bundle{ SyncRootPath: tmpDir, Config: config.Root{ Resources: config.Resources{ Jobs: map[string]*resources.Job{ "job": { JobSettings: &jobs.JobSettings{ Environments: []jobs.JobEnvironment{ { Spec: &compute.Environment{ Dependencies: []string{ "./wheel.whl", "simplejson", "/Workspace/Users/foo@bar.com/artifacts/test.whl", }, }, }, }, }, }, }, }, }, } diags := bundle.Apply(context.Background(), b, ExpandGlobReferences()) require.Len(t, diags, 1) require.Equal(t, "file doesn't exist ./wheel.whl", diags[0].Summary) } func TestValidateTaskLibraries(t *testing.T) { tmpDir := t.TempDir() testutil.Touch(t, tmpDir, "wheel.whl") b := &bundle.Bundle{ SyncRootPath: tmpDir, Config: config.Root{ Resources: config.Resources{ Jobs: map[string]*resources.Job{ "job": { JobSettings: &jobs.JobSettings{ Tasks: []jobs.Task{ { Libraries: []compute.Library{ { Whl: "./wheel.whl", }, { Whl: "/Workspace/Users/foo@bar.com/artifacts/test.whl", }, }, }, }, }, }, }, }, }, } diags := bundle.Apply(context.Background(), b, ExpandGlobReferences()) require.Nil(t, diags) } func TestValidateTaskLibrariesNoFile(t *testing.T) { tmpDir := t.TempDir() b := &bundle.Bundle{ SyncRootPath: tmpDir, Config: config.Root{ Resources: config.Resources{ Jobs: map[string]*resources.Job{ "job": { JobSettings: &jobs.JobSettings{ Tasks: []jobs.Task{ { Libraries: []compute.Library{ { Whl: "./wheel.whl", }, { Whl: "/Workspace/Users/foo@bar.com/artifacts/test.whl", }, }, }, }, }, }, }, }, }, } diags := bundle.Apply(context.Background(), b, ExpandGlobReferences()) require.Len(t, diags, 1) require.Equal(t, "file doesn't exist ./wheel.whl", diags[0].Summary) }