From 8808c7e89d21c544d1786435ca4b289b76c96d2b Mon Sep 17 00:00:00 2001 From: Anshul Verma Date: Tue, 29 Jun 2021 23:52:44 +0530 Subject: [PATCH] resloves issue/1395 Resolved an issue where the client version as component was being printed as the output of client version without adding `--component` --- ...only_with_pipeline_installed-client.golden | 1 + ...y_with_pipeline_installed-dashboard.golden | 1 + ...ly_with_pipeline_installed-pipeline.golden | 1 + ...ly_with_pipeline_installed-triggers.golden | 1 + ...gers_and_dashboard_installed-client.golden | 1 + ...s_and_dashboard_installed-dashboard.golden | 1 + ...rs_and_dashboard_installed-pipeline.golden | 1 + ...rs_and_dashboard_installed-triggers.golden | 1 + ...line_and_dashboard_installed-client.golden | 1 + ...e_and_dashboard_installed-dashboard.golden | 1 + ...ne_and_dashboard_installed-pipeline.golden | 1 + ...ne_and_dashboard_installed-triggers.golden | 1 + ...eline_and_triggers_installed-client.golden | 1 + ...ne_and_triggers_installed-dashboard.golden | 1 + ...ine_and_triggers_installed-pipeline.golden | 1 + ...ine_and_triggers_installed-triggers.golden | 1 + pkg/cmd/version/version.go | 11 ++- pkg/cmd/version/version_test.go | 87 ++++++++++++++++--- 18 files changed, 101 insertions(+), 13 deletions(-) create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-client.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-dashboard.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-pipeline.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-triggers.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-client.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-dashboard.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-pipeline.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-triggers.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-client.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-dashboard.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-pipeline.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-triggers.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-client.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-dashboard.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-pipeline.golden create mode 100644 pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-triggers.golden diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-client.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-client.golden new file mode 100644 index 0000000000..38f8e886e1 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-client.golden @@ -0,0 +1 @@ +dev diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-dashboard.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-dashboard.golden new file mode 100644 index 0000000000..3546645658 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-dashboard.golden @@ -0,0 +1 @@ +unknown diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-pipeline.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-pipeline.golden new file mode 100644 index 0000000000..bf057dbfd9 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-pipeline.golden @@ -0,0 +1 @@ +v0.10.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-triggers.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-triggers.golden new file mode 100644 index 0000000000..3546645658 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_only_with_pipeline_installed-triggers.golden @@ -0,0 +1 @@ +unknown diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-client.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-client.golden new file mode 100644 index 0000000000..38f8e886e1 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-client.golden @@ -0,0 +1 @@ +dev diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-dashboard.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-dashboard.golden new file mode 100644 index 0000000000..8b20e48523 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-dashboard.golden @@ -0,0 +1 @@ +v0.7.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-pipeline.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-pipeline.golden new file mode 100644 index 0000000000..bf057dbfd9 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-pipeline.golden @@ -0,0 +1 @@ +v0.10.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-triggers.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-triggers.golden new file mode 100644 index 0000000000..b043aa648f --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline,_triggers_and_dashboard_installed-triggers.golden @@ -0,0 +1 @@ +v0.5.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-client.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-client.golden new file mode 100644 index 0000000000..38f8e886e1 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-client.golden @@ -0,0 +1 @@ +dev diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-dashboard.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-dashboard.golden new file mode 100644 index 0000000000..8b20e48523 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-dashboard.golden @@ -0,0 +1 @@ +v0.7.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-pipeline.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-pipeline.golden new file mode 100644 index 0000000000..bf057dbfd9 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-pipeline.golden @@ -0,0 +1 @@ +v0.10.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-triggers.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-triggers.golden new file mode 100644 index 0000000000..3546645658 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_dashboard_installed-triggers.golden @@ -0,0 +1 @@ +unknown diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-client.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-client.golden new file mode 100644 index 0000000000..38f8e886e1 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-client.golden @@ -0,0 +1 @@ +dev diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-dashboard.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-dashboard.golden new file mode 100644 index 0000000000..3546645658 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-dashboard.golden @@ -0,0 +1 @@ +unknown diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-pipeline.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-pipeline.golden new file mode 100644 index 0000000000..bf057dbfd9 --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-pipeline.golden @@ -0,0 +1 @@ +v0.10.0 diff --git a/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-triggers.golden b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-triggers.golden new file mode 100644 index 0000000000..b043aa648f --- /dev/null +++ b/pkg/cmd/version/testdata/TestGetComponentVersions/deployment_with_pipeline_and_triggers_installed-triggers.golden @@ -0,0 +1 @@ +v0.5.0 diff --git a/pkg/cmd/version/version.go b/pkg/cmd/version/version.go index a7a8687338..040d679abd 100644 --- a/pkg/cmd/version/version.go +++ b/pkg/cmd/version/version.go @@ -114,7 +114,16 @@ func Command(p cli.Params) *cobra.Command { fmt.Fprintf(cmd.OutOrStdout(), "Invalid component value\n") } } else { - fmt.Fprintf(cmd.OutOrStdout(), "Client version: %s\n", clientVersion) + switch component { + case "": + fmt.Fprintf(cmd.OutOrStdout(), "Client version: %s\n", clientVersion) + case "client": + fmt.Fprintf(cmd.OutOrStdout(), "%s\n", clientVersion) + case "pipeline", "triggers", "dashboard": + fmt.Fprintf(cmd.OutOrStdout(), "unknown\n") + default: + fmt.Fprintf(cmd.OutOrStdout(), "Invalid component value\n") + } } if !check || clientVersion == devVersion { diff --git a/pkg/cmd/version/version_test.go b/pkg/cmd/version/version_test.go index e8a8050e61..bebee0784c 100644 --- a/pkg/cmd/version/version_test.go +++ b/pkg/cmd/version/version_test.go @@ -91,21 +91,84 @@ func TestVersionGood(t *testing.T) { golden.Assert(t, got, fmt.Sprintf("%s.golden", t.Name())) } -func TestComponentVersion(t *testing.T) { - v := clientVersion - defer func() { clientVersion = v }() +func TestGetComponentVersions(t *testing.T) { + pipelineDeploymentLabels := map[string]string{ + "app.kubernetes.io/part-of": "tekton-pipelines", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/name": "controller", + } + triggersDeploymentLabels := map[string]string{ + "app.kubernetes.io/part-of": "tekton-triggers", + "app.kubernetes.io/component": "controller", + "app.kubernetes.io/name": "controller", + } + dashboardDeploymentLabels := map[string]string{ + "app.kubernetes.io/part-of": "tekton-dashboard", + "app.kubernetes.io/component": "dashboard", + "app.kubernetes.io/name": "dashboard", + } + pipelineDeployment := getDeploymentData("pipeline-dep", "", pipelineDeploymentLabels, map[string]string{"app.kubernetes.io/version": "v0.10.0"}, nil) + triggersDeployment := getDeploymentData("triggers-dep", "", triggersDeploymentLabels, map[string]string{"app.kubernetes.io/version": "v0.5.0"}, nil) + dashboardDeployment := getDeploymentData("dashboard-dep", "", dashboardDeploymentLabels, map[string]string{"app.kubernetes.io/version": "v0.7.0"}, nil) - t.Run("test_client", func(t *testing.T) {}) - clientVersion = "v1.2.3" + testParams := []struct { + name string + namespace string + userProvidedNamespace string + deployment []*v1.Deployment + goldenFile bool + }{{ + name: "deployment only with pipeline installed", + namespace: "test", + userProvidedNamespace: "test", + deployment: []*v1.Deployment{pipelineDeployment}, + goldenFile: true, + }, { + name: "deployment with pipeline and triggers installed", + namespace: "test", + userProvidedNamespace: "test", + deployment: []*v1.Deployment{pipelineDeployment, triggersDeployment}, + goldenFile: true, + }, { + name: "deployment with pipeline and dashboard installed", + namespace: "test", + userProvidedNamespace: "test", + deployment: []*v1.Deployment{pipelineDeployment, dashboardDeployment}, + goldenFile: true, + }, { + name: "deployment with pipeline, triggers and dashboard installed", + namespace: "test", + userProvidedNamespace: "test", + deployment: []*v1.Deployment{pipelineDeployment, triggersDeployment, dashboardDeployment}, + goldenFile: true, + }, + } + components := []string{"client", "pipeline", "dashboard", "triggers"} - seedData, _ := test.SeedTestData(t, pipelinetest.Data{}) + for _, tp := range testParams { + t.Run(tp.name, func(t *testing.T) { + for _, c := range components { + seedData, _ := test.SeedTestData(t, pipelinetest.Data{}) + cs := pipelinetest.Clients{Kube: seedData.Kube} + p := &test.Params{Kube: cs.Kube} + version := Command(p) + cls, err := p.Clients() + if err != nil { + t.Errorf("failed to get client: %v", err) + } + // To add multiple deployments in a particular namespace + for _, v := range tp.deployment { + if _, err := cls.Kube.AppsV1().Deployments(tp.namespace).Create(context.Background(), v, metav1.CreateOptions{}); err != nil { + t.Errorf("failed to create deployment: %v", err) + } + } + got, _ := test.ExecuteCommand(version, "version", "-n", "test", "--component", c) + fmt.Println(t.Name()) + golden.Assert(t, got, fmt.Sprintf("%s-%s.golden", t.Name(), c)) + } + }) + } - cs := pipelinetest.Clients{Kube: seedData.Kube} - p := &test.Params{Kube: cs.Kube} - version := Command(p) - got, _ := test.ExecuteCommand(version, "version", "--component", "client") - expected := "v1.2.3\n" - test.AssertOutput(t, expected, got) } func TestVersionBad(t *testing.T) {