renamed New() returns execer instead of interface
This commit is contained in:
parent
7f90415689
commit
baba83b124
|
|
@ -17,11 +17,11 @@ type execer struct {
|
||||||
extra []string
|
extra []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewHelmExec(writer io.Writer, kubeContext string) Interface {
|
func New(writer io.Writer, kubeContext string) *execer {
|
||||||
return &execer{
|
return &execer{
|
||||||
writer: writer,
|
writer: writer,
|
||||||
kubeContext: kubeContext,
|
kubeContext: kubeContext,
|
||||||
runner: new(CliRunner),
|
runner: &ShellRunner{},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -95,17 +95,3 @@ func (helm *execer) exec(args ...string) ([]byte, error) {
|
||||||
}
|
}
|
||||||
return helm.runner.Execute(command, cmdargs)
|
return helm.runner.Execute(command, cmdargs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// for unit testing
|
|
||||||
func (helm *execer) setRunner(runner Runner) {
|
|
||||||
helm.runner = runner
|
|
||||||
}
|
|
||||||
func (helm *execer) getExtra() []string {
|
|
||||||
return helm.extra
|
|
||||||
}
|
|
||||||
func (helm *execer) getKubeContent() string {
|
|
||||||
return helm.kubeContext
|
|
||||||
}
|
|
||||||
func (helm *execer) getWriter() io.Writer {
|
|
||||||
return helm.writer
|
|
||||||
}
|
|
||||||
|
|
|
||||||
|
|
@ -9,57 +9,56 @@ import (
|
||||||
|
|
||||||
// Mocking the command-line runner
|
// Mocking the command-line runner
|
||||||
|
|
||||||
type MockRunner struct {
|
type mockRunner struct {
|
||||||
output []byte
|
output []byte
|
||||||
err error
|
err error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (mock *MockRunner) Execute(cmd string, args []string) ([]byte, error) {
|
func (mock *mockRunner) Execute(cmd string, args []string) ([]byte, error) {
|
||||||
return []byte{}, nil
|
return []byte{}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewMockExec(writer io.Writer, kubeContext string) Interface {
|
func MockExecer(writer io.Writer, kubeContext string) *execer {
|
||||||
nhe := NewHelmExec(writer, kubeContext)
|
execer := New(writer, kubeContext)
|
||||||
runner := &MockRunner{}
|
execer.runner = &mockRunner{}
|
||||||
nhe.setRunner(runner)
|
return execer
|
||||||
return nhe
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test methods
|
// Test methods
|
||||||
|
|
||||||
func TestNewHelmExec(t *testing.T) {
|
func TestNewHelmExec(t *testing.T) {
|
||||||
buffer := bytes.NewBufferString("something")
|
buffer := bytes.NewBufferString("something")
|
||||||
helm := NewHelmExec(buffer, "dev")
|
helm := New(buffer, "dev")
|
||||||
if helm.getKubeContent() != "dev" {
|
if helm.kubeContext != "dev" {
|
||||||
t.Error("helmexec.NewHelmExec() - kubeContext")
|
t.Error("helmexec.New() - kubeContext")
|
||||||
}
|
}
|
||||||
if buffer.String() != "something" {
|
if buffer.String() != "something" {
|
||||||
t.Error("helmexec.NewHelmExec() - changed buffer")
|
t.Error("helmexec.New() - changed buffer")
|
||||||
}
|
}
|
||||||
if len(helm.getExtra()) != 0 {
|
if len(helm.extra) != 0 {
|
||||||
t.Error("helmexec.NewHelmExec() - extra args not empty")
|
t.Error("helmexec.New() - extra args not empty")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_SetExtraArgs(t *testing.T) {
|
func Test_SetExtraArgs(t *testing.T) {
|
||||||
helm := NewHelmExec(new(bytes.Buffer), "dev")
|
helm := New(new(bytes.Buffer), "dev")
|
||||||
helm.SetExtraArgs()
|
helm.SetExtraArgs()
|
||||||
if len(helm.getExtra()) != 0 {
|
if len(helm.extra) != 0 {
|
||||||
t.Error("helmexec.SetExtraArgs() - passing no arguments should not change extra field")
|
t.Error("helmexec.SetExtraArgs() - passing no arguments should not change extra field")
|
||||||
}
|
}
|
||||||
helm.SetExtraArgs("foo")
|
helm.SetExtraArgs("foo")
|
||||||
if !reflect.DeepEqual(helm.getExtra(), []string{"foo"}) {
|
if !reflect.DeepEqual(helm.extra, []string{"foo"}) {
|
||||||
t.Error("helmexec.SetExtraArgs() - one extra argument missing")
|
t.Error("helmexec.SetExtraArgs() - one extra argument missing")
|
||||||
}
|
}
|
||||||
helm.SetExtraArgs("alpha", "beta")
|
helm.SetExtraArgs("alpha", "beta")
|
||||||
if !reflect.DeepEqual(helm.getExtra(), []string{"alpha", "beta"}) {
|
if !reflect.DeepEqual(helm.extra, []string{"alpha", "beta"}) {
|
||||||
t.Error("helmexec.SetExtraArgs() - two extra arguments missing (overwriting the previous value)")
|
t.Error("helmexec.SetExtraArgs() - two extra arguments missing (overwriting the previous value)")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func Test_AddRepo(t *testing.T) {
|
func Test_AddRepo(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.AddRepo("myRepo", "https://repo.example.com/", "cert.pem", "key.pem")
|
helm.AddRepo("myRepo", "https://repo.example.com/", "cert.pem", "key.pem")
|
||||||
expected := "exec: helm repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem --kube-context dev\n"
|
expected := "exec: helm repo add myRepo https://repo.example.com/ --cert-file cert.pem --key-file key.pem --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -76,7 +75,7 @@ func Test_AddRepo(t *testing.T) {
|
||||||
|
|
||||||
func Test_UpdateRepo(t *testing.T) {
|
func Test_UpdateRepo(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.UpdateRepo()
|
helm.UpdateRepo()
|
||||||
expected := "exec: helm repo update --kube-context dev\n"
|
expected := "exec: helm repo update --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -86,7 +85,7 @@ func Test_UpdateRepo(t *testing.T) {
|
||||||
|
|
||||||
func Test_SyncRelease(t *testing.T) {
|
func Test_SyncRelease(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.SyncRelease("release", "chart", "--timeout 10", "--wait")
|
helm.SyncRelease("release", "chart", "--timeout 10", "--wait")
|
||||||
expected := "exec: helm upgrade --install release chart --timeout 10 --wait --kube-context dev\n"
|
expected := "exec: helm upgrade --install release chart --timeout 10 --wait --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -103,7 +102,7 @@ func Test_SyncRelease(t *testing.T) {
|
||||||
|
|
||||||
func Test_DecryptSecret(t *testing.T) {
|
func Test_DecryptSecret(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.DecryptSecret("secretName")
|
helm.DecryptSecret("secretName")
|
||||||
expected := "exec: helm secrets dec secretName --kube-context dev\n"
|
expected := "exec: helm secrets dec secretName --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -113,7 +112,7 @@ func Test_DecryptSecret(t *testing.T) {
|
||||||
|
|
||||||
func Test_DiffRelease(t *testing.T) {
|
func Test_DiffRelease(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.DiffRelease("release", "chart", "--timeout 10", "--wait")
|
helm.DiffRelease("release", "chart", "--timeout 10", "--wait")
|
||||||
expected := "exec: helm diff release chart --timeout 10 --wait --kube-context dev\n"
|
expected := "exec: helm diff release chart --timeout 10 --wait --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -130,7 +129,7 @@ func Test_DiffRelease(t *testing.T) {
|
||||||
|
|
||||||
func Test_DeleteRelease(t *testing.T) {
|
func Test_DeleteRelease(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "dev")
|
helm := MockExecer(&buffer, "dev")
|
||||||
helm.DeleteRelease("release")
|
helm.DeleteRelease("release")
|
||||||
expected := "exec: helm delete --purge release --kube-context dev\n"
|
expected := "exec: helm delete --purge release --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
@ -140,21 +139,21 @@ func Test_DeleteRelease(t *testing.T) {
|
||||||
|
|
||||||
func Test_exec(t *testing.T) {
|
func Test_exec(t *testing.T) {
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
helm := NewMockExec(&buffer, "")
|
helm := MockExecer(&buffer, "")
|
||||||
helm.exec("version")
|
helm.exec("version")
|
||||||
expected := "exec: helm version\n"
|
expected := "exec: helm version\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
t.Errorf("helmexec.exec()\nactual = %v\nexpect = %v", buffer.String(), expected)
|
||||||
}
|
}
|
||||||
|
|
||||||
helm = NewMockExec(nil, "dev")
|
helm = MockExecer(nil, "dev")
|
||||||
ret, _ := helm.exec("diff")
|
ret, _ := helm.exec("diff")
|
||||||
if len(ret) != 0 {
|
if len(ret) != 0 {
|
||||||
t.Error("helmexec.exec() - expected empty return value")
|
t.Error("helmexec.exec() - expected empty return value")
|
||||||
}
|
}
|
||||||
|
|
||||||
buffer.Reset()
|
buffer.Reset()
|
||||||
helm = NewMockExec(&buffer, "dev")
|
helm = MockExecer(&buffer, "dev")
|
||||||
helm.exec("diff", "release", "chart", "--timeout 10", "--wait")
|
helm.exec("diff", "release", "chart", "--timeout 10", "--wait")
|
||||||
expected = "exec: helm diff release chart --timeout 10 --wait --kube-context dev\n"
|
expected = "exec: helm diff release chart --timeout 10 --wait --kube-context dev\n"
|
||||||
if buffer.String() != expected {
|
if buffer.String() != expected {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
package helmexec
|
package helmexec
|
||||||
|
|
||||||
import "io"
|
|
||||||
|
|
||||||
type Interface interface {
|
type Interface interface {
|
||||||
SetExtraArgs(args ...string)
|
SetExtraArgs(args ...string)
|
||||||
|
|
||||||
|
|
@ -13,11 +11,4 @@ type Interface interface {
|
||||||
DeleteRelease(name string) error
|
DeleteRelease(name string) error
|
||||||
|
|
||||||
DecryptSecret(name string) (string, error)
|
DecryptSecret(name string) (string, error)
|
||||||
|
|
||||||
// unit testing
|
|
||||||
exec(args ...string) ([]byte, error)
|
|
||||||
setRunner(runner Runner)
|
|
||||||
getExtra() []string
|
|
||||||
getKubeContent() string
|
|
||||||
getWriter() io.Writer
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,9 +15,9 @@ type Runner interface {
|
||||||
Execute(cmd string, args []string) ([]byte, error)
|
Execute(cmd string, args []string) ([]byte, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
type CliRunner struct{}
|
type ShellRunner struct{}
|
||||||
|
|
||||||
func (cli CliRunner) Execute(cmd string, args []string) ([]byte, error) {
|
func (shell ShellRunner) Execute(cmd string, args []string) ([]byte, error) {
|
||||||
dir, err := ioutil.TempDir("", tmpPrefix+cmd+tmpSuffix)
|
dir, err := ioutil.TempDir("", tmpPrefix+cmd+tmpSuffix)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
||||||
2
main.go
2
main.go
|
|
@ -278,7 +278,7 @@ func before(c *cli.Context) (*state.HelmState, helmexec.Interface, error) {
|
||||||
clean(st, errs)
|
clean(st, errs)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
return st, helmexec.NewHelmExec(writer, kubeContext), nil
|
return st, helmexec.New(writer, kubeContext), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func clean(state *state.HelmState, errs []error) error {
|
func clean(state *state.HelmState, errs []error) error {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue