zabio3/godolint

View on GitHub
linter/rules/dl3015_test.go

Summary

Maintainability
A
0 mins
Test Coverage
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)
    }
}