Create a Lint step [#3]

Still need global flags and checks for mandatory settings, but the basic
functionality is there.
This commit is contained in:
Erin Call 2019-12-17 16:21:45 -08:00
parent 09e4869b2c
commit 991bbf97b4
No known key found for this signature in database
GPG key ID: 4071FF6C15B8DAD1
2 changed files with 86 additions and 0 deletions

28
internal/run/lint.go Normal file
View file

@ -0,0 +1,28 @@
package run
import (
// "fmt"
)
// Lint is an execution step that calls `helm lint` when executed.
type Lint struct {
Chart string
cmd cmd
}
// Execute executes the `helm lint` command.
func (l *Lint) Execute(_ Config) error {
return l.cmd.Run()
}
// Prepare gets the Lint ready to execute.
func (l *Lint) Prepare(cfg Config) error {
args := []string{"lint", l.Chart}
l.cmd = command(helmBin, args...)
l.cmd.Stdout(cfg.Stdout)
l.cmd.Stderr(cfg.Stderr)
return nil
}

58
internal/run/lint_test.go Normal file
View file

@ -0,0 +1,58 @@
package run
import (
"github.com/golang/mock/gomock"
"github.com/stretchr/testify/suite"
"testing"
)
type LintTestSuite struct {
suite.Suite
ctrl *gomock.Controller
mockCmd *Mockcmd
originalCommand func(string, ...string) cmd
}
func (suite *LintTestSuite) BeforeTest(_, _ string) {
suite.ctrl = gomock.NewController(suite.T())
suite.mockCmd = NewMockcmd(suite.ctrl)
suite.originalCommand = command
command = func(path string, args ...string) cmd { return suite.mockCmd }
}
func (suite *LintTestSuite) AfterTest(_, _ string) {
command = suite.originalCommand
}
func TestLintTestSuite(t *testing.T) {
suite.Run(t, new(LintTestSuite))
}
func (suite *LintTestSuite) TestPrepareAndExecute() {
defer suite.ctrl.Finish()
l := Lint{
Chart: "./epic/mychart",
}
command = func(path string, args ...string) cmd {
suite.Equal(helmBin, path)
suite.Equal([]string{"lint", "./epic/mychart"}, args)
return suite.mockCmd
}
suite.mockCmd.EXPECT().
Stdout(gomock.Any())
suite.mockCmd.EXPECT().
Stderr(gomock.Any())
suite.mockCmd.EXPECT().
Run().
Times(1)
cfg := Config{}
err := l.Prepare(cfg)
suite.Require().Nil(err)
l.Execute(cfg)
}