zabio3/godolint

View on GitHub
linter/rules/dl3023_test.go

Summary

Maintainability
A
0 mins
Test Coverage
package rules

import (
    "testing"
)

func TestValidateDL3023(t *testing.T) {
    cases := []struct {
        dockerfileStr string
        expectedRst   []ValidateResult
        expectedErr   error
    }{
        {
            dockerfileStr: `FROM debian:jesse as build

COPY --from=build some stuff ./
`,
            expectedRst: []ValidateResult{
                {line: 3},
            },
            expectedErr: nil,
        },
        {
            dockerfileStr: `FROM debian:jesse as build

RUN stuff

FROM debian:jesse

COPY --from=build some stuff ./
`,
            expectedRst: nil,
            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 := validateDL3023(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)
    }
}