From 65f4e6122a6893112bd740a52a55f02505cfb79e Mon Sep 17 00:00:00 2001 From: Zubair Haque Date: Wed, 11 Sep 2024 02:52:42 -0500 Subject: [PATCH] chore: add table driven tests for clarity (#1702) add table driven tests for clarity Signed-off-by: zhaque44 --- go.mod | 1 + go.sum | 2 + pkg/helmexec/exec_test.go | 82 +++++++++++++++++++-------------------- 3 files changed, 43 insertions(+), 42 deletions(-) diff --git a/go.mod b/go.mod index 817280a6..26d5d631 100644 --- a/go.mod +++ b/go.mod @@ -20,6 +20,7 @@ require ( github.com/spf13/pflag v1.0.5 github.com/stretchr/testify v1.9.0 github.com/tatsushid/go-prettytable v0.0.0-20141013043238-ed2d14c29939 + github.com/tj/assert v0.0.3 github.com/variantdev/dag v1.1.0 github.com/zclconf/go-cty v1.15.0 github.com/zclconf/go-cty-yaml v1.0.3 diff --git a/go.sum b/go.sum index f7681f33..99626850 100644 --- a/go.sum +++ b/go.sum @@ -928,6 +928,8 @@ github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.0 h1:RWIZEg2iJ8/g6fDDYzMpobmaoGh5OLl4AXtGUGPcqCs= github.com/tidwall/pretty v1.2.0/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tj/assert v0.0.3 h1:Df/BlaZ20mq6kuai7f5z2TvPFiwC3xaWJSDQNiIS3Rk= +github.com/tj/assert v0.0.3/go.mod h1:Ne6X72Q+TB1AteidzQncjw9PabbMp4PBMZ1k+vd1Pvk= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= diff --git a/pkg/helmexec/exec_test.go b/pkg/helmexec/exec_test.go index dbb6ea48..6115462a 100644 --- a/pkg/helmexec/exec_test.go +++ b/pkg/helmexec/exec_test.go @@ -13,6 +13,7 @@ import ( "github.com/Masterminds/semver/v3" "github.com/google/go-cmp/cmp" + "github.com/tj/assert" "go.uber.org/zap" ) @@ -104,52 +105,49 @@ func Test_SetDisableForceUpdate(t *testing.T) { } } -func Test_AddRepo_Helm_3_3_2(t *testing.T) { - var buffer bytes.Buffer - logger := NewLogger(&buffer, "debug") - helm := &execer{ - helmBinary: "helm", - version: semver.MustParse("3.3.2"), - logger: logger, - kubeconfig: "config", - kubeContext: "dev", - runner: &mockRunner{}, - } - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) - expected := `Adding repo myRepo https://repo.example.com/ +func Test_AddRepo_Helm_Version(t *testing.T) { + tests := []struct { + name string + version string + disableUpdate bool + expected string + }{ + { + name: "Helm 3.3.2 with force update", + version: "3.3.2", + disableUpdate: false, + expected: `Adding repo myRepo https://repo.example.com/ exec: helm --kubeconfig config --kube-context dev repo add myRepo https://repo.example.com/ --force-update --cert-file cert.pem --key-file key.pem -` - if err != nil { - t.Errorf("unexpected error: %v", err) - } - - if buffer.String() != expected { - t.Errorf("helmexec.AddRepo()\nactual = %v\nexpect = %v", buffer.String(), expected) - } -} - -func Test_AddRepo_Helm_3_3_2_NoForceUpdate(t *testing.T) { - var buffer bytes.Buffer - logger := NewLogger(&buffer, "debug") - helm := &execer{ - helmBinary: "helm", - options: HelmExecOptions{DisableForceUpdate: true}, - version: semver.MustParse("3.3.2"), - logger: logger, - kubeconfig: "config", - kubeContext: "dev", - runner: &mockRunner{}, - } - err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) - expected := `Adding repo myRepo https://repo.example.com/ +`, + }, + { + name: "Helm 3.3.2 without force update", + version: "3.3.2", + disableUpdate: true, + expected: `Adding repo myRepo https://repo.example.com/ exec: helm --kubeconfig config --kube-context dev repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem -` - if err != nil { - t.Errorf("unexpected error: %v", err) +`, + }, } - if buffer.String() != expected { - t.Errorf("helmexec.AddRepo()\nactual = %v\nexpect = %v", buffer.String(), expected) + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + var buffer bytes.Buffer + logger := NewLogger(&buffer, "debug") + helm := &execer{ + helmBinary: "helm", + version: semver.MustParse(tt.version), + logger: logger, + kubeconfig: "config", + kubeContext: "dev", + runner: &mockRunner{}, + options: HelmExecOptions{DisableForceUpdate: tt.disableUpdate}, + } + err := helm.AddRepo("myRepo", "https://repo.example.com/", "", "cert.pem", "key.pem", "", "", "", false, false) + + assert.NoError(t, err) + assert.Equal(t, tt.expected, buffer.String()) + }) } }