package cmd import ( "os" "path" "runtime" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestMigrate(t *testing.T) { configs := []struct { name string config string err string }{ { name: "sync_success_sourcev1_destv0", config: "sync-success-sourcev1-destv0.yml", }, { name: "multiple_sources", config: "multiple-sources.yml", }, { name: "multiple_destinations", config: "multiple-destinations.yml", }, { name: "multiple_sources_destinations", config: "multiple-sources-destinations.yml", }, { name: "should fail with missing path error when path is missing", config: "sync-missing-path-error.yml", err: "Error: failed to validate destination test: path is required", }, } _, filename, _, _ := runtime.Caller(0) currentDir := path.Dir(filename) for _, tc := range configs { t.Run(tc.name, func(t *testing.T) { testConfig := path.Join(currentDir, "testdata", tc.config) cmd := NewCmdRoot() baseArgs := testCommandArgs(t) cmd.SetArgs(append([]string{"migrate", testConfig}, baseArgs...)) err := cmd.Execute() if tc.err != "" { assert.Contains(t, err.Error(), tc.err) } else { assert.NoError(t, err) } // check that log was written and contains some lines from the plugin b, logFileError := os.ReadFile(baseArgs[3]) logContent := string(b) require.NoError(t, logFileError, "failed to read cloudquery.log") require.NotEmpty(t, logContent, "cloudquery.log empty; expected some logs") }) } }