package mutator import ( "context" "testing" "github.com/databricks/cli/bundle" "github.com/databricks/cli/bundle/config" "github.com/databricks/cli/bundle/config/resources" "github.com/databricks/databricks-sdk-go/service/pipelines" "github.com/stretchr/testify/require" ) func TestResolveVariableReferencesWithSourceLinkedDeployment(t *testing.T) { testCases := []struct { enabled bool assert func(t *testing.T, b *bundle.Bundle) }{ { true, func(t *testing.T, b *bundle.Bundle) { // Variables that use workspace file path should have SyncRootValue during resolution phase require.Equal(t, "sync/root/path", b.Config.Resources.Pipelines["pipeline1"].PipelineSpec.Configuration["source"]) // The file path itself should remain the same require.Equal(t, "file/path", b.Config.Workspace.FilePath) }, }, { false, func(t *testing.T, b *bundle.Bundle) { require.Equal(t, "file/path", b.Config.Resources.Pipelines["pipeline1"].PipelineSpec.Configuration["source"]) require.Equal(t, "file/path", b.Config.Workspace.FilePath) }, }, } for _, testCase := range testCases { b := &bundle.Bundle{ SyncRootPath: "sync/root/path", Config: config.Root{ Presets: config.Presets{ SourceLinkedDeployment: &testCase.enabled, }, Workspace: config.Workspace{ FilePath: "file/path", }, Resources: config.Resources{ Pipelines: map[string]*resources.Pipeline{ "pipeline1": { PipelineSpec: &pipelines.PipelineSpec{ Configuration: map[string]string{ "source": "${workspace.file_path}", }, }, }, }, }, }, } diags := bundle.Apply(context.Background(), b, ResolveVariableReferences("workspace")) require.NoError(t, diags.Error()) testCase.assert(t, b) } }