hadolint-2.15.0: test/Hadolint/Rule/DL3062Spec.hs
module Hadolint.Rule.DL3062Spec (spec) where
import Data.Default
import Helpers
import Test.Hspec
spec :: SpecWith ()
spec = do
let ?config = def
describe "DL3062 - Pin versions in go install." $ do
describe "go install" $ do
it "go version not pinned" $ do
ruleCatches "DL3062" "RUN go install example.com/pkg"
onBuildRuleCatches "DL3062" "RUN go install example.com/pkg"
it "go version pinned as latest" $ do
ruleCatches "DL3062" "RUN go install example.com/pkg@latest"
onBuildRuleCatches "DL3062" "RUN go install example.com/pkg@latest"
it "go version pinned" $ do
ruleCatchesNot "DL3062" "RUN go install example.com/pkg@v1.2.3"
onBuildRuleCatchesNot "DL3062" "RUN go install example.com/pkg@v1.2.3"
it "go install with local absolute path" $ do
ruleCatchesNot "DL3062" "RUN go install /go/app/foobar"
onBuildRuleCatchesNot "DL3062" "RUN go install /go/app/foobar"
it "go install with local relative path" $ do
ruleCatchesNot "DL3062" "RUN go install ./app/foobar"
onBuildRuleCatchesNot "DL3062" "RUN go install ./app/foobar"
it "go install local dir" $ do
ruleCatchesNot "DL3062" "RUN go install ."
onBuildRuleCatchesNot "DL3062" "RUN go install ."
describe "go get" $ do
it "go version not pinned" $ do
ruleCatches "DL3062" "RUN go get example.com/pkg"
onBuildRuleCatches "DL3062" "RUN go get example.com/pkg"
it "go version pinned as latest" $ do
ruleCatches "DL3062" "RUN go get example.com/pkg@latest"
onBuildRuleCatches "DL3062" "RUN go get example.com/pkg@latest"
it "go version pinned" $ do
ruleCatchesNot "DL3062" "RUN go get example.com/pkg@v1.2.3"
onBuildRuleCatchesNot "DL3062" "RUN go get example.com/pkg@v1.2.3"
describe "go get tool" $ do
it "version not pinned" $ do
ruleCatches "DL3062" "RUN go get -tool foobar"
onBuildRuleCatches "DL3062" "RUN go get -tool foobar"
it "version pinned as latest" $ do
ruleCatches "DL3062" "RUN go get -tool foobar@latest"
onBuildRuleCatches "DL3062" "RUN go get -tool foobar@latest"
it "version pinned" $ do
ruleCatchesNot "DL3062" "RUN go get -tool foobar@v1.2.3"
onBuildRuleCatchesNot "DL3062" "RUN go get -tool foobar@v1.2.3"
describe "go run" $ do
it "go version not pinned" $ do
ruleCatches "DL3062" "RUN go run example.com/pkg"
onBuildRuleCatches "DL3062" "RUN go run example.com/pkg"
it "go version pinned as latest" $ do
ruleCatches "DL3062" "RUN go run example.com/pkg@latest"
onBuildRuleCatches "DL3062" "RUN go run example.com/pkg@latest"
it "go version pinned" $ do
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3"
it "go version pinned with flags" $ do
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 -f"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 -f"
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 -foobar"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 -foobar"
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 --foobar"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 --foobar"
it "go version pinned with arguments" $ do
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 foobar"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 foobar"
ruleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 --foo bar"
onBuildRuleCatchesNot "DL3062" "RUN go run example.com/pkg@v1.2.3 --foo bar"
it "go run with local absolute path" $ do
ruleCatchesNot "DL3062" "RUN go run /go/app/foobar"
onBuildRuleCatchesNot "DL3062" "RUN go run /go/app/foobar"
it "go run with local relative path" $ do
ruleCatchesNot "DL3062" "RUN go run ./app/foobar"
onBuildRuleCatchesNot "DL3062" "RUN go run ./app/foobar"
it "go run local dir" $ do
ruleCatchesNot "DL3062" "RUN go run ."
onBuildRuleCatchesNot "DL3062" "RUN go run ."