linter/rules/dl3015_test.go
package rules
import (
"testing"
)
func TestValidateDL3015(t *testing.T) {
cases := []struct {
dockerfileStr string
expectedRst []ValidateResult
expectedErr error
}{
{
dockerfileStr: `FROM busybox
RUN apt-get install -y python=2.7
`,
expectedRst: []ValidateResult{
{line: 2},
},
expectedErr: nil,
},
{
dockerfileStr: `FROM busybox
RUN apt-get install -y python=2.7 && RUN apt-get install -y ruby
`,
expectedRst: []ValidateResult{
{line: 2},
},
expectedErr: nil,
},
}
for i, tc := range cases {
rst, err := parseDockerfile(tc.dockerfileStr)
if err != nil {
t.Errorf("#%d parse error %s", i, tc.dockerfileStr)
}
gotRst, gotErr := validateDL3015(rst.AST)
if !isValidateResultEq(gotRst, tc.expectedRst) {
t.Errorf("#%d results deep equal has returned: want %v, got %v", i, tc.expectedRst, gotRst)
}
if gotErr != tc.expectedErr {
t.Errorf("#%d error has returned: want %s, got %s", i, tc.expectedErr, gotErr)
}
cleanup(t)
}
}